申请账号
登录移动热修复控制台:https://hotfix.console.aliyun.com/,点击右上角创建App
。
配置
第1步:集成hotfix
gradle远程仓库依赖, 打开项目找到app的build.gradle文件,添加如下配置:
添加maven仓库地址:
repositories {
maven {
url "http://maven.aliyun.com/nexus/content/repositories/releases"
}
}
添加
dependencies {
compile 'com.aliyun.ams:alicloud-android-hotfix:3.1.7'
}
第2步:添加权限和配置meta-data值
在AndroidManifest.xml
添加一下权限
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 外部存储读权限,调试工具加载本地补丁需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
在application节点下添加meta-data
属性
<meta-data
android:name="com.taobao.android.hotfix.IDSECRET"
android:value="AppId" />
<meta-data
android:name="com.taobao.android.hotfix.APPSECRET"
android:value="AppSecret" />
<meta-data
android:name="com.taobao.android.hotfix.RSASECRET"
android:value="RSA密钥"/>
AppId 、AppSecret和RSA密钥在你申请的应用下有这个三个值
第3步:实例化hotfix
在你的Application下添加一下内容,记住这个要放在所有内容的首位
/**
* 实例化hotfix
*/
private void initSophix() {
String appVersion = "1.0.0";
try {
appVersion = this.getPackageManager()
.getPackageInfo(this.getPackageName(), 0)
.versionName;
} catch (Exception e) {
}
final SophixManager instance = SophixManager.getInstance();
instance.setContext(this)
.setAppVersion(appVersion)
.setSecretMetaData(null, null, null)
.setEnableDebug(true)
.setEnableFullLog()
.setPatchLoadStatusStub(new PatchLoadStatusListener() {
@Override
public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
if (code == PatchStatus.CODE_LOAD_SUCCESS) {
Log.i(TAG, "sophix load patch success!");
} else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
// 如果需要在后台重启,建议此处用SharePreference保存状态。
Log.i(TAG, "sophix preload patch success. restart app to make effect.");
}
}
}).initialize();
}
到此已完成hotfix的大部分工作,接下来是测试
测试
第1步: 生成补丁包
- 下载补丁工具
patch补丁包生成需要使用到打补丁工具SophixPatchTool, 如还未下载打包工具,请前往下载Android打包工具。
Mac版本打包工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_macos.zip
Windows版本打包工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_windows.zip
Linux版本打包工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_linux.zip
我已windows 为例,解压下载的工具,会得到下图。双击运行SophixPatchTool.exe
,运行前请确保你的jdk 版本大于或等于7。
- 旧包:<必填> 选择基线包路径(有问题的APK)。
- 新包:<必填> 选择新包路径(修复过该问题APK)。
- 日志:打开日志输出窗口。
- 高级:展开高级选项。
- 设置:配置其他信息。
GO!:开始生成补丁。
补丁输出路径:<必填> 指定生成补丁之后补丁的存放位置,必须是已存在的目录。
- Key Store Path:<选填>本地的签名文件的路径,不输入则不做签名。
- Key Store Password:<选填>证书文件的密码。
- Key Alias:<选填>Key的别名。
- Key Passwrod:<选填>Key的密码。
- AES Key:<选填>自定义aes秘钥, 必须是16位数字或字母的组合。必须与setAesKey中设置的秘钥一致。
- Filter Class File:<选填>本地的白名单类列表文件的路径,放进去的类不会再计算patch,文件格式: 一行一个类名。
第2步:测试补丁包是否正确
方法一:网络
手机需要下载Sophix调试工具,打开工具填写你的包名,点击连接应用,然后扫描电脑二维码,下面会出log。
方法二:本地调试
手机本地调试,填写手机本地补丁包的绝对路径,就刚用工具打出补丁包的jar,然后应用补丁包就可以了。
第3步:发布补丁包
补丁包正确的话就可以发布了,下面有灰度发布和全部发布