image
1、概述
Android很多应用没有使用到NDK开发,但想要开发更高级的应用,NDK的学习是必然之路。NDK的好处不多说,这里也应该说是JNI的好处,其中之一就是可以方便使用到C/C++世界里面的优秀开源库,这里要实战的是增量更新,其中用到的是bsdiff开源代码,而bsdiff又依赖bzip2开源代码。
一开始自己做过一些硬件开发,也使用过一些so库,使用的话按照文档指示一般没什么问题,但实际上对NDK开发流程总有一些疑问。比如说
如何创建so库,so库是怎么生成的?
假如我生成了so库,如何给其他应用调用这个so库?
jni目录、cpp目录又是什么?为什么有些项目使用的不一样
Android.mk、Application.mk是什么?
NDK开发一定要使用到javah、ndk-build命令吗?
CMake、CMakeLists.txt又是什么?
产生这些问题的原因在于平时只看书、博客是会忽略掉很多细节,从而产生这样的疑问,所以NDK的学习之路,必然需要动手操作。
增量更新不同于热更新,增量更新可以应用于app市场,避免用户用过多的流量去升级app,只需要下载差分部分的patch补丁就可以,更快速、节省流量的实现了app的更新。
2、在mac上实现增量更新
我用的是mac系统,win应该也差不多,先下载文件
2.1、使用make命令生成bsdiff、bspatch可执行文件
lexdeMacBook-Pro:bsdiff-4.3 lex$ make
遇到问题
Mac下xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
解决方法
xcode-select --install
重新安装xcode-select就可以
执行make命令后还是出现以下问题
Makefile:13: *** missing separator. Stop.
参考网上说对Makefile文件中 if/endif 做了缩进,没效果。这里是一个坑,我用AndroidStudio去编辑无效,后来使用vim来编辑就可以了。
image