搭建ndk环境之前,请保证你能新建android项目并能在手机上正常运行
通过AS自动生成ndk环境
更新AS到较新的版本,通过File-setting-Androd SDK下载sdktools(这里不需要启动manager界面)
主要是这三项:cmake, lldb,ndk
待下载完成后,启动android studio,start a new project.
选中Include C++ Support,
如图
后续均可以默认,直到finish,等待自动生成。
然而,实际运行总那么不尽人意。下面讲讲本人在配置环境是遇到的坑。
坑1:cmake 3.6.3155560 报错,GLIBCXX_2.4.18 required by cmake
可能ndk和cmake的版本不匹配吧,然后,我用AS自己的manager去下载两个新工具,还是报错,同样的错误!
查看GLIBCXX发现
好吧,却是没有!在没网没root权限的linux上,尝试去安装3.4.18这个库,遗憾的发现只有rpm包,ok下载安装包安装(本人推测是可行的)。
但在ubuntu下不能直接安装rpm包,需要使用alien工具(下载命令:sudo apt-get install alien)将rpm转换成deb包安装(本人推测也是可行的)。
$ alien ***.rpm
$ dpkg -i ****.deb
但在没root权限的linux中,就算将alien安装成功,执行alien 转换 rpm安装包也会失败,非root用户不能转换文件格式。
所以,放弃这个方法了。方案转换为:使用ndk 手动build工程,手动操作也有一个好处,你知道各个步骤怎么协调的(不要太依赖自动话工具,除非你已经懂了自动化构建的流程,那个时候,你需要节约时间,是完全没有问题的)。
直接使用ndk build
坑2:将java文件生成h头文件失败
命令:javah jni ***.***.***.ClassName
这个命令执行的路径需要注意:
- AS 在**/src/main/java 下执行javah 命令
首先需要class文件,因此你需要先通过javac 编译这个java文件以便生成class文件。 - 者在project/build/intermediates/classes/debug/目录下执行
且class的名字一定要是全限定名称,即你的package+name(.class 注:参数是class文件,不是java文件,你可以通过AS工具栏上的build-MakeProject生成class文件,这个文件就在上述的classes/debug/目录下,且不需要后缀)
.h文件生成后,就开始写C(/C++)代码了