这里用ndk10er,,编译中遇到的坑
NDK环境配置-----本地native方法-----根据native方法,terminal javah 命令生成JIN文件夹下同时生成h头文件------实现头文件的方法.c/c++文件—写Android.mk,application.mk文件------gradle中引用android.mk文件,配置module名(依赖库名称),so平台-----静态引用so库----cmd到项目JIN目录执行ndk-build生成so文件
1,是否允许ndk编译:gradlew.properties添加
android.deprecatedNdkCompileLease=1515317190556(android.useDeprecatedNdk=true studio3.1中不在用了)
2,找不到MK文件配置Android.mk路径
externalNativeBuild {
ndkBuild {
path file('src/main/jni/Android.mk')
}
}
可通过此方法添加
选择NDK去项目路径下找到Android.mk文件路径
.c文件和.cpp文件语法不通,,会提示具体语法报错
项目编译通过跑起来,就可以调用C的方法了,,通过NDK-build可以打包成相应的SO
CMD命令
D:\MyProgect\NDKDemo>
D:\MyProgect\NDKDemo>cd app/src/main/jni/
D:\MyProgect\NDKDemo\app\src\main\jni>ndk-build
Android NDK: APP_PLATFORM not set. Defaulting to minimum supported version android-16.
Android NDK: WARNING: APP_PLATFORM android-16 is higher than android:minSdkVersion 1 in D:/MyProgect/NDKDemo/app/src/main/AndroidManifest.xml. NDK binaries will *not* be compatible with devices older than android-16. See https:/
/android.googlesource.com/platform/ndk/+/master/docs/user/common_problems.md for more information.
[arm64-v8a] Compile : hello-jni <= cjx_liyueyun_ndkdemo_Hello.c
[arm64-v8a] SharedLibrary : libhello-jni.so
[arm64-v8a] Install : libhello-jni.so => libs/arm64-v8a/libhello-jni.so
[x86_64] Compile : hello-jni <= cjx_liyueyun_ndkdemo_Hello.c
[x86_64] SharedLibrary : libhello-jni.so
[x86_64] Install : libhello-jni.so => libs/x86_64/libhello-jni.so
[armeabi-v7a] Compile thumb : hello-jni <= cjx_liyueyun_ndkdemo_Hello.c
[armeabi-v7a] SharedLibrary : libhello-jni.so
[armeabi-v7a] Install : libhello-jni.so => libs/armeabi-v7a/libhello-jni.so
[x86] Compile : hello-jni <= cjx_liyueyun_ndkdemo_Hello.c
[x86] SharedLibrary : libhello-jni.so
[x86] Install : libhello-jni.so => libs/x86/libhello-jni.so