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

来源:互联网 发布:淘宝震动棒买家秀图片 编辑:程序博客网 时间:2024/05/16 07:23

该篇文章从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)

0 0
原创粉丝点击