最近在开发的Android Wear App中,不少关键模块都调用到了算法,比如记步算法、睡眠算法。
而这些算法都是用c++实现的,上层通过jni调用。这里用到了Android的NDK,以前的项目也有用过,例如vitamio的播放器,但没怎么自己编译.so的库。现在涉及到底层算法的修改,于是就涉及到了ndk相关的知识。
ndk里有自己的make文件,Android.mk,不同于Makefile,在AndroidManifest同级目录下敲ndk-build就能出结果了,可以直接拿到share library,也就是.so的库文件。
这个教程可以看看:http://www.kandroid.org/ndk/docs/DEVELOPMENT.html
今天编译碰到的一个问题是:
ndk No rule to make target
网上看了一些办法,很多人是在调用这个方法$(call my-dir)的时候,后面的括号后加了空格,我碰到的不是。都是路径导致的。由于一些src文件常常会用../../../../之类的表示,当文件夹移动位置后,就会出现找不到的情况。于是就出现了上述问题。
如果想知道具体哪儿报的错,可以使用ndk-build -d,这样就可以看到详细的log日志了。