项目上需要把功能下沉到C++去实现来降低性能上的损耗,N年不碰C++的重操旧业,首先就是要配置NDK编译环境,以下记录Android NDK版本配置和编译遇到的坑。
一、NDK版本下载
NDK最新版本下载地址:
https://developer.android.google.cn/ndk/downloads/
NDK历史版本下载地址:
https://developer.android.google.cn/ndk/downloads/older_releases.html
在Mac上测试android-ndk-r10d和最新的android-ndk-r20b版本都存在问题,编译中会出现找不到编译模块,或者参数引用找不到的问题。
异常日志如下:
Android NDK: WARNING: There are no modules to build in this project!
或者:
error: use of undeclared identifier 'STDERR_FILENO'
同事使用正常的是window平台 r10e 的版本,之后下载了Mac对应的版本包配置之后测试可以正常编译,对比了下测试的三个版本压缩包的大小:
- android-ndk-r10d: 442.6MB
- android-ndk-r20b: 843.2MB
- android-ndk-r10e: 1.08GB
r10d和r20b的压缩包相对r10e模块或者功能方面有缺失或裁剪,Mac平台r10e版本下载地址如下:
https://dl.google.com/android/repository/android-ndk-r10e-darwin-x86_64.zip
二、NDK配置(Mac)
在ZIP包下载完毕之后,解压到本地,之后在.bash_profile配置文件里面配置解压之后的NDK路径,先执行以下命令打开配置文件
vim .bash_profile
添加解压之后的NDK路径,实际路径根据自己的存放路径来配置:
export PATH=$PATH:/Users/chenwenguan/Documents/AmapAuto/AndroidSDK/android-ndk-r10e
之后保存退出,执行以下命令让配置参数生效:
source .bash_profile
最后执行下命令查看配置是否成功:
ndk-build --version
示例输出:
GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. This program built for x86_64-apple-darwin
三、NDK编译
编译的时候直接cd到放置Android.mk和Cpp文件所在的jni目录,直接执行ndk-build开始编译。
相应的资料可以直接参考官网:
扩展阅读:
Android 8(Oreo)后台启动Service限制解析
转载请注明出处:陈文管的博客 – Android NDK版本配置和编译
扫码或搜索:文呓
微信公众号 扫一扫关注
调查网 says
学习了,多谢分享!