Android之 AndFix总结

  • 热修复框架有很多   其中AndFix使用很简单   但局限性很高,只能修复方法  不过可以及时修复不需要退出程序
  • 使用前的准备
  • 依赖:compile 'com.alipay.euler:andfix:0.5.0@aar'
  • //初始化的时候用到了版本号   写一个提供版本号的工具类
  • public class VersionUtils {
  •     public static String getVersionName(Context context) {
  •         String versionName = "";
  •         PackageManager packageManager = context.getPackageManager();
  •         String packageName = context.getPackageName();
  •         try {
  •             PackageInfo packageInfo = packageManager.getPackageInfo(packageName,0);
  •             versionName = packageInfo.versionName;
  •         } catch (PackageManager.NameNotFoundException e) {
  •             e.printStackTrace();
  •         }
  •         return versionName;
  •     }
  • }
  • //AndFix工具类  用来做初始化与添加补丁文件
  • public class AndFixManger {
  •     private static volatile AndFixManger instance;
  •     private PatchManager patchManager;
  •     private AndFixManger() {
  •     }
  •     public static AndFixManger getInstance() {
  •         if (instance == null) {
  •             synchronized (AndFixManger.class) {
  •                 if (instance == null) {
  •                     instance = new AndFixManger();
  •                 }
  •             }
  •         }
  •         return instance;
  •     }
  •     //初始化,越早调用越好  推荐Application的oncreat方法中调用
  •     public void initPatch(Context context) {
  •         //创建对象
  •         patchManager = new PatchManager(context);
  •         //传入了版本号
  •         patchManager.init(VersionUtils.getVersionName(context));
  •         patchManager.loadPatch();
  •     }
  •     //添加补丁文件  修复时调用
  •     public void addPatch(String path){
  •         if(patchManager!=null){
  •             try {
  •                 patchManager.addPatch(path);
  •             } catch (IOException e) {
  •                 e.printStackTrace();
  •             }
  •         }
  •     }
  • }
  • //添加补丁文件时需要传入一个path路径   这个路径就是 .apatch补丁文件
  • public class MainActivity extends AppCompatActivity {
  •     private Button fix;
  •     private String path;
  •     @Override
  •     protected void onCreate(Bundle savedInstanceState) {
  •         super.onCreate(savedInstanceState);
  •         setContentView(R.layout.activity_main);
  •     //获取id
  •         fix = (Button)findViewById(R.id.fix);
  •     //判断sd卡的挂载状态
  •         if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
  •              path = Environment.getExternalStorageDirectory().getAbsolutePath().concat("/out.apatch");
  •         }
  •     //打印path路径
  •         Log.i("TAG",path);
  •     //点击添加补丁
  •         fix.setOnClickListener(new View.OnClickListener() {
  •             @Override
  •             public void onClick(View view) {
  •         //判断文件是否存在,不存在创建
  •                 File file = new File(path);
  •                 if(!file.exists()){
  •                     try {
  •                         file.createNewFile();
  •                     } catch (IOException e) {
  •                         e.printStackTrace();
  •                     }
  •                 }
  •         //调用AndFix工具类中的添加补丁方法
  •                 AndFixManger.getInstance().addPatch(path);
  •             }
  •         });
  •     }
  • }
  • 问题来了,补丁文件是怎么来的?
  • 一:新建一个文件夹  随便建在哪里都可以
  • 二:文件夹中放入工具解压文件  1:apkpatch.bat  2:apkpatch.sh  3:apkpatch-1.0.3.jar 不用管是干什么的,放进去就可以
  • 三:签名打包  放入一个有bug的包与没有bug的包 , 还需要放入一个签名文件.jks    项目中可以找到   签名之后才可以找到
  • 四:开始生成  
  •    
  •    打开黑窗口  windows+r  输入cmd    
  •    
  •    进入自己创建的文件夹中  输入命令
  •    
  •    例如:
  •     Microsoft Windows [版本 10.0.10586]
  •     (c) 2015 Microsoft Corporation。保留所有权利。
  •     C:\Users\Administrator>D:
  •     D:\>cd D:\AndFix\
  •     D:\AndFix>
  •   输入命令                       
  •        apkpatch -f <new> -t <old> -o <output> -k <keystore> -p <***> -a <alias> -e <***>
  •        new  =  没有bug的文件名
  •        
  •        old   =  有bug的文件名
  •        output  =  生成的补丁文件名
  •        keystore  =  .jks文件名   
  •        第一个***   签名密码
  •        alias  =  key0  这里我是key0   签名的时候写的啥就写啥
  •        第二个***   key0密码
  •        回车  回车  两次
  •        补丁包就生成了,把补丁包放入手机或者模拟器中   放入的路径和上面的路径需要一样   
  •        
  •        运行有问题的app,点击修复添加补丁文件,bug就修复了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值