AutoFix

Project Url: Cuieney/AutoFix
Introduction: 上手简单,学习简单的热修复框架 手把手教学
More: Author   ReportBugs   
Tags:
android hotfix-

目前项目支持静态修复功能需要重启,集成简单,使用方便。

原理

这两篇文章就够了

DexClassLoader 热修复的入门到放弃

手把手教你写热修复(HOTFIX)

集成

Get Gradle Plugin

  1. 根据以下操作把代码填到你项目根目录的 gradle 中

    classpath 'com.cuieney:autofix:1.1.1'

    build.gradle maybe look like this:

     buildscript {
         repositories {
             jcenter()
         }
         dependencies {
             classpath 'com.android.tools.build:gradle:2.3.0'
             classpath 'com.cuieney.autofix:gradle:1.1.7'
         }
     }
    
  2. 在你的 build.gradle:中添加这样的代码块

    apply plugin: "com.cuieney.autofix"

Get AutoFix SDK

  • gradle dependency:

      dependencies {
          compile 'com.cuieney.library:fix:1.1.2'
      }
    

使用步骤

  1. 在你的 application 中添加一下代码初始化:

     @Override
     protected void attachBaseContext(Context base) {
         super.attachBaseContext(base);
         AutoFix.init(this);
     }
    
  2. 如果你需要加载补丁的话可以这样,每次需需要重启:

          AutoFix.applyPatch(this,patch.jar);
    

ProGuard

  • 添加到你的 proguardFile 文件中:

    -keep class cn.cuieney.fix.* { ; }

补丁制作

根据下面三步即可以完成补丁的制作

1.首选你的添加auto_fixextension 到你的 build.gradle 中,只在你需要制作补丁的时候才用得到(不制作补丁注释即可)

auto_fix {
    lastVersion = '1'//顾名思义,上次一的版本号(就是说你当前 Version 是 1,出现 bug 了,你把 versioncode 变成了 2)然后这个 lastVersion 就填 1
}

2.现在你已经改好 bug 了,需要获取相应的 patch.jar 把这个补丁打到 app 中,只需要编译一下项目即可,buildApk 这个操作也是可以的

3.获取补丁 push 到手机中(如果项目已上线即 push 到服务器)

Screen Shot 2017-07-05 at 8.20.17 PM.png

这个就是你的补丁对应的目录,patch.jar 就是补丁包(version 2)代表你生成补丁当前的版本号

TODO

  • 增强兼容性
  • 支持 runtime
  • 增加插件化跳转 Act

补充

你会看到 AutoFix SDK 里面有这样一个类 DynamicApk,这是一个 beta 版。用于插件化的工具。目前 focus 获取 apk 的资源文件,目前接口如下:

  • getStringFromApk
  • getBitmapFromApk
  • getDrawableFromApk
  • getMipmapFromApk
  • getLayoutFromApk
  • getColorFromApk
  • getDimenFromApk

参数都一样(Context context, String apkPath, String name),只介绍最后一个参数 such as(R.drawable.thumb)这个 name 就是 thumb

问题

发现 bug 或好的建议欢迎 issues or Email cuieney@163.com

License

F**K License

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools