Andfix运用实例

Andfix运用实例
    关于Android热修复的文章有很多,原理也不少,这里就不在累赘描述了。可以参考一下博主的原理解析:
http://blog.csdn.net/qxs965266509/article/details/49816007
http://blog.csdn.net/u011176685/article/details/50984638
http://www.jianshu.com/p/0f7665944be3
    等相关文章。
    这里直接讲述怎么运用:
事先你得配置NDK环境;直接下载最新的NDK解压到盘符,注意盘符最好不要带中文或空格
1.如果你的IDE是Studio,那么直接导入
如果是Eclipse 那么导入 上面的 AndFix (这是一个library,作为你项目的依赖使用)
2.在你的工程的Application中初始化:
import android.app.Application;
import android.os.Environment;
import android.util.Log;

import com.alipay.euler.andfix.patch.PatchManager;

import java.io.File;
import java.io.IOException;

/**
 * sample application
 *
 */
public class MainApplication extends Application {
    private final String TAG = "TAG_Andfix";

    private final String APATCH_PATH = "/out.apatch";

    private final String DIR = "apatch";//补丁文件夹
    /**
     * patch manager
     */
    private PatchManager mPatchManager;

    @Override
    public void onCreate() {
        super.onCreate();
        // 初始化patch管理类
        mPatchManager = new PatchManager(this);
        // 初始化patch版本
        mPatchManager.init("1.0");
        // 加载已经添加到PatchManger中的patch
        mPatchManager.loadPatch();
        
        // .apatch 文件路径
        String patchFileString = Environment.getExternalStorageDirectory().getAbsolutePath() + APATCH_PATH;
        File apatchFile = new File(patchFileString);
        if(apatchFile.exists()){
            try {
                //加载补丁
                mPatchManager.addPatch(patchFileString);
                //复制且加载补丁成功后,删除下载的补丁,补丁复制到 /data/data/appName/files/apatch/out.apatch
                File f = new File(this.getFilesDir(), DIR + APATCH_PATH);
                if (f.exists()) {
                    boolean result = apatchFile.delete();
                    if (result)
                        Log.e(TAG, patchFileString + ";复制补丁成功,删除SD卡补丁成功");
                    else
                        Log.e(TAG, patchFileString + ";复制补丁成功,删除SD卡补丁失败");
                }
            } catch (IOException e) {
                Log.e(TAG, "打补丁出错了");
                e.printStackTrace();
            }
        }else{
            Log.e(TAG, "补丁文件不存在");
        }    
    }
}
3.按照正常流程,打包第一版apk(old.apk)
4.修改有bug的部分,正常打包出第二版apk(new.apk)
5.将两个APK和签名文件一起复制到上图中 apkpatch-1.0.3 文件目录下
6.CMD执行命令 apkpatch -f new.apk -t old.apk -o in -k xxx.keystore -p 123456 -a 123456 -e 123456 -n out
命令的解释:-f 新版APK路径;-t 旧版APK路径 -o 输出目录 -k 签名文件路径 -p 签名文件密码 -a 别名 -e 别名密码 -n 输出的apatch文件名称
7.如果是分工协作,各自修复自己的模块,可能会有多个.apatch,执行如下命令将多个文件合并:
apatch -m in -o out - k xxx.keystore -p 123456 -a 123456 -e 123456
8.将in(或者out)目录下的生成的.apatch文件重命名为 out.apatch
9.将 out.apatch 文件push或者客户端下载到手机SD卡根目录下
10.下载完成后,重启APP即可

Demo 下载地址:Demo
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值