我们要使用某服务的SDK,但是对方只有纯c++风格的第三方的arm架构的动态库(.so),因此无法直接在java app中直接使用,需要将原始so库封装成符合JNI命名规范的so库(以下简称JNI so库),然后才能通过JNI在java app中使用。我的需求并非直接在Android app中使用JNI so库,而是再把JNI so库封装一层,封装成Android app能直接使用的jar包或aar包,其实就是做成Android SDK发布。所以实质是将c++的SDK封装为Android SDK。
环境搭建
安装jdk
安装Android studio
下载SDK、NDK
(添加环境变量)
新建AS项目和AAR Moudle
a. File -> New -> New Project, 选择add no activity,命名为 JNITest
b. local.properties中添加ndk路径,如ndk.dir=D:\android-ndk-r16-beta1
c. gradle.properties中添加 android.useDeprecatedNdk=true
d. File -> New -> New Moudle -> Android Library 命名为ALibrary
在AAR Moudel中生成JNI so库和aar包
a. 在ALibrary的build.gradle的android.defaultConfig中添加 ndk {
moduleName "clib"
stl "stlport_static"
ldLibs "log", "