四、android studio使用自己库编译工程
这一篇要把我们之前做的库和接口通过jni在android studio中给java调用。接口主要实现了字符串“123456”的MD5输出。
源码文件在https://download.csdn.net/download/andylauren/12295062
github放在https://github.com/RTplay/android-ndk-sample
1.创建工程
将openssl和mylib-sample的库都放到生成的文件夹中
arm64-v8a armeabi-v7a x86 x86_64
每个文件夹都应该有如下文件libahPlayer.so、libcrypto.so、libssl.so
注意这里的libcrypto.so、libssl.so不是软连接,而是真实的库文件。
然后打开androidstudio创建native c++工程
将上面四个文件夹放到/MyApplicationC/app/src/main/cpp/libs下
2.设置ndk路径
如果你的androidstudio已经设置了ndk可以跳过这步
如果没有设置过,工程创建时会提示
A problem occurred configuring project ':app'.> NDK not configured. Download it with SDK manager. Preferred NDK version is '20.0.5594570'. Log: /home/neusoft/AndroidStudioProjects/MyApplicationC2/app/.cxx/ndk_locator_record.json
在Project Structure
中SDK Location的Android NDK location选择下载或者配置为自己下载的ndk路径。
/home/neusoft/Android/Sdk/Sdk/ndk/21.0.6113669
设置成功后工程会CONFIGURE SUCCESSFUL
3.修改build.gradle(Module:app)
在externalNativeBuild下添加
sourceSets { main { jniLibs.srcDirs = ['src/main/cpp/libs'] }}
4.修改cpp代码
首先将头文件拷贝到/app/src/main/cpp目录下
common.h openssl
修改native-lib.cpp引入头文件并实现jni接口
#include #include #include "common.h"extern "C" JNIEXPORT jstring JNICALLJava_com_example_myapplicationc2_MainActivity_stringFromJNI( JNIEnv* env, jobject /* this */) { char aaa[33]; return env->NewStringUTF(MD5_Digest((unsigned char *) "123456", aaa));}
修改cmakelist.txt
添加头文件路径include_directories(.)
添加动态库路径link_directories(${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI})
在依赖中添加动态库依赖
crypto libmylib-sample ssl
在MainActivity.java代码中添加动态库加载
static { System.loadLibrary("crypto"); System.loadLibrary("ssl"); System.loadLibrary("mylib-sample"); System.loadLibrary("native-lib"); }
至此就可以运行了。
更多相关文章
- 安卓android模拟器使用命令行
- 【Android开发】完善搜索功能-添加最近查询字段
- Android(安卓)系统开发生成签名供 Android(安卓)Studio 使用
- Android之如何解决右上角不显示3个点的菜单
- 安卓按钮有按下去的效果的实现方法
- Android多渠道打包修改资源文件
- Android(安卓)Studio JNI
- linux下nessus的安装和使用【原创】
- attrs.xml文件中属性类型format值的格式