关于热修复

来源:互联网 发布:战争雷霆手机数据库 编辑:程序博客网 时间:2024/06/06 17:10

首先我们做热修复,应该在release状态下执行
它的设置在Build Variants中设置

在gradle中配置签名
signingConfigs{
signConfig {
storeFile file (‘/keystore.jks’)//签名文件路径,
//keystore的路径通常使用项目根目录的相对路径,但也可以是使用绝对路径,尽管这不推荐
storePassword ‘123456’ //密码
keyAlias ‘qa’
keyPassword ‘123456’ //密码
}
}

buildTypes {    release {        minifyEnabled false        signingConfig signingConfigs.signConfig        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'    }}
  1. compile ‘com.alipay.euler:andfix:0.3.1@aar’
  2. 创建Application
    public class MyApplication extends Application {

    private static final String TAG = “MyApplication”;

    /**

    • apatch文件
      */
      private static final String APATCH_PATH = “/Dennis.apatch”;

    private PatchManager mPatchManager;

    @Override
    public void onCreate() {
    super.onCreate();
    // 初始化
    mPatchManager = new PatchManager(this);
    mPatchManager.init(“1.0”); // 版本号

    // 加载 apatchmPatchManager.loadPatch();//apatch文件的目录String patchFileString = Environment.getExternalStorageDirectory().getAbsolutePath() + APATCH_PATH;File apatchPath = new File(patchFileString);if (apatchPath.exists()) {    Log.i(TAG, "补丁文件存在");    try {        //添加apatch文件        mPatchManager.addPatch(patchFileString);    } catch (IOException e) {        Log.i(TAG, "打补丁出错了");        e.printStackTrace();    }} else {    Log.i(TAG, "补丁文件不存在");}

    }
    }

  3. 测试时,在MainActivity中建立Button按钮,弄两种不同的形式,生成两个不同的apk

  4. 弄一个生成补丁的工具apkpatch
  5. 弄一个签名keystore
  6. 把签名文件和两个apk放在生成补丁的文件中
  7. 在cmd命令中找见工具的路径,输入命令
    apkpatch.bat -f NoBug.apk -t Bug.apk -o Dennis -k keystore -p 111111 -a 111111 -e 111111

    每个参数含义如下

    -f 新版本的apk
    -t 旧版本的apk
    -o 输出apatch文件的文件夹,可以随意命名
    -k 打包的keystore文件名
    -p keystore的密码
    -a keystore 用户别名
    -e keystore 用户别名的密码

  8. 生成的Dennis文件夹中有.apatch文件

  9. 把生成的这个.apatch文件放入手机根目录下即可

0 0