您的位置:首页 > 移动开发 > Android开发

【第二节】android增量升级之使用so文件进行增量升级

2016-01-05 15:50 513 查看
该篇文章从eoeAndroid搬迁过来的,原文地址:【第二节】android增量升级之使用so文件进行增量升级

前言

在第一节中,我讲了如何生成增量升级的so文件,没看的童鞋点【第一节】android增量升级之生成so文件 ,在这一节中,我讲一下如何去使用so文件进行增量升级。

第一步

建立一个新项目,如SmartAppUpdate,包名命名为com.smartapp.update,为什么要这么命名包名,是因为在第一节中,我们的BatchUtils文件是建立在com.smartapp.update包下的,而里面native方法生成的com_smartapp_update_BatchUtils.h文件也是以此包名命名的,所以为了调用so文件中的该native方法,所以我们需要在新项目中增加com.smartapp.update包,并将第一个项目中的BatchUtils.java文件拷贝到该包下

第二步

因为BatchUtils.java中的native方法是私有方法,所以我们需要在该类中增加下面的方法去调用该方法

public static int applyPatchToOwn(Context context, String newApkPath,
String patchPath) throws IOException {
String old = context.getApplicationInfo().sourceDir;
return patchApk(old, newApkPath, patchPath);
}


第三步

在新项目中的libs文件夹下新建文件夹armeabi,并将libSmartAppUpdate.so文件拷贝到该文件夹下,并在MainActivity.java类中增加以下代码,去加载该so文件

static {
System.loadLibrary("SmartAppUpdate");
}


第四步

添加逻辑代码,在项目中,我做了两个布局,分别是升级前的和升级后的展示界面,升级前的界面为activity_main.xml,升级后的界面为activity_main_new.xml,在onCreate方法中注释不同的代码实现不同的界面效果。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
beforeUpdate();
afterUpdate();
}


新增Utils类添加相应的一些方法。

新增UpdateApkTask类进行旧apk和差异包合成操作。(备注:该差异包需要手动拷贝到手机指定路径下)

不要忘记添加权限

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


第五步

用工具去生成差异包,并拷贝到手机指定路径下,在此提供一个window电脑使用的差分差异包工具bsdiff4.3-win32,请在附件中下载。该工具何以进行差分差异包,也可以进行合并就apk和差异包生成新apk。具体使用方法如下:

先获取两个不同的apk,如该项目中先在oncreate方法中注释掉afterUpdate()方法,生成一个apk,然后再注释掉beforeUpdate()方法,生成另一个apk,将两个apk拷贝到电脑指定路径下。

然后打开cmd,进入到bsdiff4.3-win32工具所在位置

拆分差异包命令如下:

bsdiff  旧apk地址  新apk地址 生成差异包地址
如:bsdiff C:\Users\krubo\Desktop\aaa\SmartAppUpdate.apk C:\Users\krubo\Desktop\aaa\SmartAppUpdate_new.apk C:\Users\krubo\Desktop\aaa\SmartAppUpdate.patch


我们就能看见在指定位置下生成了差异包SmartAppUpdate.patch

合成新APK命令如下:

bspatch 旧apk地址 新apk地址 差异包地址
如:bspatch C:\Users\krubo\Desktop\aaa\SmartAppUpdate.apk C:\Users\krubo\Desktop\aaa\SmartAppUpdate_new_patch.apk C:\Users\krubo\Desktop\aaa\SmartAppUpdate.patch


我们就能看见在指定位置下生成了新apk SmartAppUpdate_new_patch.apk

比较SmartAppUpdate_new.apk和SmartAppUpdate_new_patch.apk,就会发现,这两个apk是一模一样的。

第六步

将第五步中生成的差异包SmartAppUpdate.patch拷贝到手机的指定路径下,然后安装旧的apk,也就是注释掉afterUpdate()方法生成的apk,然后点击升级按钮,等待片刻,我们就能看见新apk安装界面,安装完成后,点击进入,发现里面的界面已改变,至此,使用so文件进行增量升级教程已结束。

下一节内容:【第三节】android增量升级之提供服务端代码,整理项目

下载地址:项目文件及工具(bsdiff-4.3-win32,apk,SmartAppUpdate)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android