如何更新android studio中的ndk

 我来答
题名考试网
2017-06-26 · 知道合伙人教育行家
题名考试网
知道合伙人教育行家
采纳数:1150 获赞数:26685
二级建造师

向TA提问 私信TA
展开全部

1、NDK开发就是JNI开发

2、先新建一个增量升级的工具类PatchUtil,定义一个本地方法patch。

AS菜单栏,依次选择Build->Make
Project。执行完之后,把Project栏切换成project视角,依次打开app->build->intermediates->classes->debug->com->winter->updetedemo->utils,可以看到该文件夹下有一个PatchUtil.class文件。com->winter->updetedemo->utils这一路径其实就是PatchUtil所在的包名,这个实际开发的时候请根据自己的包名找相应的路径。

三、然后我们用上面找到的.class文件,生成一个C/C++的头文件。首先打开AS的terminal界面

以下两个命令 cd app\build\intermediates\classes\debug javah -jni com.winter.updatedemo.utils.PatchUtil,如下图:

然后我们再看debug文件夹下,会 发现多出来一个com_winter_updatedemo_utils_PatchUtil.h文件,

(这就是我们需要的头文件)

文件的内容打开看:

里面声明了一个函数JNIEXPORT jint JNICALL
Java_com_winter_updatedemo_utils_PatchUtil_patch(JNIEnv *, jobject,
jstring, jstring,
jstring);这个函数就是PatchUtil类里面本地方法的C实现。当然头文件里只是一个函数声明,接下来就要实现这个函数。

四、建立jni文件夹,把生成的头文件拷贝进去。在app\src\main文件夹下右键,依次选择New->Folder->JNI
Folder,然后main文件夹下会生成一个新的文件夹jni,先把头文件拷进去。

接下来就需要用到bsdiff这个工具,bsdiff是一个开源的二进制差分工具,用来生成增量升级所需的差分包;与其相对应的bspatch则用来通过差分包合成新的APK包。对于客户端而言,只需要完成bspatch的功能就可以了,bsdiff的功能一般由服务端实现。另外,bsdiff依赖bzip2,所以分别把两个工具下载下来。bsdiff下载地址:bsdiff下载地址bzip2下载地址:bzip2下载地址bzip2解压后又很多文件,但是用到的并不多,所以在jni文件夹下新建一个文件夹,把一下文件拷贝进去:

然后把bspatch.c文件考到jni文件夹下。然后做以下修改:1.找到第31行#include ,改成#include "bzip2/bzlib.h"2.在37行下面添加一行,新行内添加之前生成的头文件
#include
"com_winter_updatedemo_utils_PatchUtil.h"3.把main()函数的名称修改掉,改成applypatch()或其他名称4.在bspatch.c文件末尾添加以下函数:

函数的名称和参数与com_winter_updatedemo_utils_PatchUtil.h一致,其实就是PatchUtil里patch()方法的C实现。
以上步骤完成后,再在jni文件夹下新建一个Android.mk文件,文件中的内容为:

OK,jni文件夹下的工作做完了。

六、最后修改下app文件夹下的build.gradle文件,在defaultConfig代码块中添加以下内容

这里有一点需要注意,moduleName是最后编译生成库的名称,当然,最终的.so文件会加一个前缀“lib”,例如上面的代码,编译后生成的.so文件的全名会是libpatch.so。另外,回头看一下PatchUtil类中的static代码块,调用了加载库文件的系统方法,其中的库文件的名称,与moduleName是一致的,不要加任何前后缀。

七、所有的工作都结束了,patch方法已经可以被调用了,在Activity里起一个线程,调用PatchUtil.patch(),就可以进行APK包的合成了。

八、bsdiff下载地址中,除了可以下载bsdiff的源码,还可以下载windows环境下的.exe可执行文件,下载下来,就可以在本地手动生成差分包,而不需要依赖服务器了

花小木兰辞r0
2016-10-16 · TA获得超过1.2万个赞
知道小有建树答主
回答量:1.7万
采纳率:2%
帮助的人:2198万
展开全部
1.3以后就支持NDK了建议你升级吧,目前是1.3.1版本了你自己看吧,设置这里多了个NDK的配置new File 的时候,也有c/c++选项了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式