编译环境
android-ndk-r9b (这里使用老版本库为例 ,将该库目录下的ndk-build.cmd添加至系统环境变量中,方便后续操作,不同版本的ndk库ndk-build位置可能不太一样,这里你也可以使用最新库)
Windows10
编译步骤
- 第一步 创建工程文件夹, 这里以E盘下App目录为例
- 第二步 在App文件夹下创建子文件夹jni, 并将编写好的源代码以及Android.mk文件放入
- 打开命令窗口,执行编译命令
1 | ndk-build.cmd NDK_PROJECT_PATH=E:\App |
- 等待编译 完成后会在jni同级目录下生成libs和obj两个文件夹,libs目录下存放的是编译好的so库,obj目录下存放的是.o链接库, 如果有需要,使用以下命令可以清除obj目录下文件:
1 | ndk-build.cmd clean |
编译扩展配置
- 默认情况下编译只生成armeabi架构的so库,如果要生成x86以及其他cpu架构的so,需要在Android.mk文件所在目录下新建Application.mk文件,并加入以下配置:
1 | APP_ABI := armeabi armeabi-v7a x86 |
- 默认情况下使用Andorid.mk作为编译脚本,如果想指定编译脚本文件可以添加
APP_BUILD_SCRIPT
参数进行指定:
1 | ndk-build.cmd NDK_PROJECT_PATH=E:\App APP_BUILD_SCRIPT=new_android.mk |
- 默认情况下使用Andorid.mk同级目录下找Application.mk 如果想指定Application.mk文件路径,可以添加
NDK_APPLICATION_MK
进行指定:
1 | ndk-build.cmd NDK_PROJECT_PATH=E:\App NDK_APPLICATION_MK=new_application.mk |
注意事项
编译时默认找jni目录下源码进行编译,所以需要在工程目录下新建jni子目录,原因在此
android工程在引用so库时,必须放在对应架构目录下,否则打包apk时会忽略该文件的打包, 比如指定jni目录为libs ,引用的so是x86架构的,那么必须在libs目录下再新建一个名为x86的文件夹,然后将so放进去, 否则so库不打包
附加
ndk编译脚本文件Android.mk配置:
1 | LOCAL_PATH := $(call my-dir) |
乱码三千 – 点滴积累 ,欢迎来到乱码三千技术博客站