对于开发人员来说,自己写SDK和用SDK是天壤之别。机缘巧合公司开发了一个款app,但是用的人比较少,老板就开始外面谈业务,推销自己app里的功能,别的公司有意向合作,就需要将我们的功能开放给对方,所以对于只做过app应用层开发,对于底层
Framework
开发就一头雾水了。
其实在我理解做SDK在业务方面就是一点:安全。别人拿不到我们敏感数据,类似url 一些密钥等。接下来就是解决技术问题了。
第一步: NDK这个就是我主要攻克的难题。开发前最搞的就是配置环境,网上有很多我就不多啰嗦了,下载ndk,配置环境变量。我是在MAC上操作的,其实在这期间配置花了一段时间。主要是ndk-build 这个命令老是报错,贴一下我的环境变量 (参考)
其实我最后ndk-build这个命令是在AndroidStudio 项目里的Terminal里使用的。但是前提你要在环境变量里设置你的项目位置。
第二步:JNI使用,最关键的部分。
1.在build-gradle里添加ndk
ndk { moduleName"myNativeLib" ldLibs "log", "z", "m" abiFilters "armeabi", "armeabi-v7a", "x86" }
2.在库里src/main下新建一个jni文件夹
3.新建一个class 文件用户加载jni里的方法
4.Terminal生成.h头文件 ,生成的头文件拷贝到jni文件夹里。
扫描二维码关注公众号,回复:
1092376 查看本文章
5.生成.c文件,native方法红色可以自动生成。c文件要incloud .h文件头 里面就是写C码了 这个就是要自行学习了。
6.编写android.mk和application.mk 注意$前加空格
android.mk
application.mk:
7.生成.so文件,2种方法。
第一种 :直接项目运行,把native方法直接使用在Activity里。so文件存放地点build/intermediates/ndk/debug/lib下
第二种:命令生成在Terminal cd到jni目录下 ndk-build 如果不行就需要在环境变量里配置项目地址 见上面图片。
完工!
使用就很简单了 把生成的so文件放在新项目里 新建jniLibs
还要配置build-gradle 在android{}里
就可以直接调用了。