andfix使用说明

andfix的主要功能是完成热更新,可以在不用下载新的apk的情况下完成对应用程序的更新。
Andfix的基本流程图如下所示


andfix使用说明_第1张图片
andfix原理

使用原理说明

在使用中,可以将整个使用过程分成两部分

  • 原始apk和修复之后的apk的编写
  • patch文件的生成
原始apk和修复之后的apk的编写
  1. apk的编写
    如果计划在后续的apk更新中使用andfix完成,那么在编写原始apk时,需要添加andfix相关的内容。
    首先需要导入PatchManager
    PatchManager

    在使用时,主要可以分成三个步骤
    1.1 初始化
    1.2 loadPatch
    1.3 addPatch
    具体代码如下图
    andfix使用说明_第2张图片
    andfix代码

初始化时init的参数是版本号,这里直接赋值为1.0,也可以通过PackageManager对象中的方法获取版本号,方法如下
mPatchManager.init(getPackageManager().getPackageInfo().versionName)
在通过这种方法获取版本号时,如果版本号有变化,则会导致所有的补丁被删除;如果版本号没有变化,那么会加载所有的补丁。

patch文件的生成

阿里本身提供了用来生成patch文件的工具apkpatch,apkpatch是一个压缩包,解压之后可以得到如下所示内容

andfix使用说明_第3张图片
apkpatch

windows下运行 apkpatch.bat文件,linux下运行 apkpatch.sh文件生成patch文件。

  • 参数说明


    andfix使用说明_第4张图片
    apkpatch命令行参数说明
  • 注意事项
    在编写完原始apk和修复之后的apk之后,在生成patch文件时,需要提供apk生成时使用的签名证书,这一点在阿里的官方文档上没有说明,这里说明记录一下。
    如果开发者是使用的自己的keystore对apk进行签名,那么这里直接对应参数信息即可
    如果开发者是使用了AOSP提供的密钥对apk进行签名,那么可能用户不知道自己所使用的keystore的位置,所以这里记录下位置。
    linux上keystore文件的位置是~/.android路径下,.android文件夹是一个隐藏文件加,在终端使用la命令可以看到该文件,进入该文件之后就能找到AOSP提供的默认的keystore文件。如下图
    keystore

    在使用apkpatch时,还需要输入keystore的密码以及所使用证书的别名,AOSP提供的debug.keystore的默认密码是android,然后可以使用keytool命令来查看keystore文件,从中得到别名信息。如下图
    andfix使用说明_第5张图片

打开apkpatch.bat文件,可以看到其实apkpatch.bat文件是通过java -jar来调用apkpatch-1.0.3.jar包完成patch文件的生成

使用流程

  1. 从github上获取阿里提供的一个demo程序,demo程序的文件目录如下所示


    andfix使用说明_第6张图片
    文件目录
  2. 在build.gradle中添加依赖


    andfix使用说明_第7张图片
    添加依赖
  3. 编译运行demo程序,生成第一个apk
  4. 修改demo程序代码,替换函数调用,这里我是修改了函数中的一个变量的值。如下图所示


    andfix使用说明_第8张图片
    第一个apk

    andfix使用说明_第9张图片
    修改之后的apk
  5. 运行修改之后的代码,生成新的apk
  6. 使用apkpatch工具生成patch文件,将文件移动到手机sd卡上。(apkpatch的使用上边有描述)
  7. 重新运行第一个apk,查看日志可以发现完成修改


    andfix使用说明_第10张图片
    第一个apk运行日志

    修改之后apk运行日志

patch文件不一定非要放在sd卡的根目录上,只要存放路径与代码中查找路径一致即可

你可能感兴趣的:(andfix使用说明)