Skip to content

Latest commit

 

History

History
62 lines (42 loc) · 2.71 KB

备注.md

File metadata and controls

62 lines (42 loc) · 2.71 KB

阿里Hotfix框架Sophix的接入简要

官方Demo已经是2.x版本的示例,相对较老,新版目前是3.2.3,而且提倡使用稳健接入方式

  • 在阿里百川平台,申请账号和热修复的key

  • 参照文档使用AS接入

    • project.gradle中引入maven地址(配置all project)

    • app.gradle中添加依赖

    • proguard-rules.pro配置混淆规则

      #基线包使用,生成mapping.txt
      #-printmapping mapping.txt
      #生成的mapping.txt在app/build/outputs/mapping/release路径下,移动到/app路径下
      #修复后的项目使用,保证混淆结果一致
      -applymapping mapping.txt
      #hotfix
      -keep class com.taobao.sophix.**{*;}
      -keep class com.ta.utdid2.device.**{*;}
      #防止inline
      -dontoptimize
      -keep class in.zhiwei.aqi.AQIApplication{*;}
      -keepclassmembers class in.zhiwei.aqi.AQIApplication {
          public <init>();
      }
      # 如果不使用android.support.annotation.Keep则需加上此行
      -keep class in.zhiwei.aqi.SophixStubApplication$RealApplicationStub

    **注意:**mapping文件,在生成base包的时候使用-printmapping mapping.txt这一行生效,

    仅在生成更新包的时候,要将-appluymapping mapping.txt这行生效。

    • 若有第三方的so库引用,可能需要在gradle中配置ndk{

      ​ abifliter 'armeabi','armeabi-v7a'等等

      }类似的指定平台。

  • 自定义Application继承SophixApplication,参照文档,仅仅需要配置key,rsa,id等,以及将MyRealApplication这个class指定为,项目真正的业务application

  • 业务Application的onCreate配置需要的初始化。

  • AndroidManifest中的application指定的是 继承自SophixApplication的子类,而非业务application。注意这些类的混淆配置。

注意:使用sophix补丁工具的时候,注意在传入old、new的apk的时候,重新命名apk,每次最好关闭,重新打开工具,并选择apk路径,这样可以避免打补丁的失败。

或许是因为工具占用内存的缘故吧。

  • 在base包中的某个合适的逻辑处,请求服务器的补丁查询。注意权限的问题(网络权限必备,读取sd权限,是调试工具需要,从服务器下载,若无必要可以不用这个权限)。

  • 生成基类包发布出去后,修改需要紧急修复的代码,将base包生成的时候的mapping.txt复制放在app目录下,生成新包。

  • 用阿里百川sophix的补丁工具,生成补丁

  • 将补丁上传至后台,发布补丁,进入下一页,发布灰度,全量,然后在base包中触发请求补丁的逻辑时候,就会下载补丁包,并在下次冷启动后,生效。