- 修改app/build.gradle,添加
implementation 'com.aliyun.ams:alicloud-android-hotfix:3.2.14'
- 添加SophixStubApplication类,作为App的Application
public class SophixStubApplication extends SophixApplication {
private final String TAG = "SophixStubApplication";
/**
* 此处SophixEntry应指定真正的Application,并且保证RealApplicationStub类名不被混淆。
*/
@Keep
@SophixEntry(MyRealApp.class)
static class RealApplicationStub {
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
// 如果需要使用MultiDex,需要在此处调用。
MultiDex.install(this);
initSophix();
}
private void initSophix() {
String appVersion = "0.0.0";
try {
appVersion = this.getPackageManager()
.getPackageInfo(this.getPackageName(), 0)
.versionName;
} catch (Exception ignored) {
}
final SophixManager instance = SophixManager.getInstance();
instance.setContext(this)
.setAppVersion(appVersion)
.setSecretMetaData(idSecret, appSecret, rsaSecret)
.setEnableDebug(true)
.setEnableFullLog()
.setPatchLoadStatusStub(new PatchLoadStatusListener() {
@Override
public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
String msg = "" + "Mode:" + mode +
" Code:" + code +
" Info:" + info +
" HandlePatchVersion:" + handlePatchVersion;
Log.d(TAG, msg);
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();
}
}
- 修改原有的Application类,
去掉MultiDex.install(this);防止重复加载
在onCreate方法中直接去请求patch
SophixManager sophixManager = SophixManager.getInstance();
sophixManager.queryAndLoadNewPatch();
- 修改AndroidManifest.xml文件,修改Application的入口
<application
android:name=".base.SophixStubApplication"
...
...
- App配置完成
- 下载补丁生成工具和安卓调试工具
-
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
-
调试工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/hotfix_debug_tool-release.apk
-
生成patch
比如新发布的版本是2.0.2,发布后发现有bug,则修改bug重新打包,版本号还是保持2.0.2
然后用补丁生成工具,选择旧包和新包的路径,生成一个patch文件 sophix-patch.jar
注意:如果使用了加固,一定要使用加固之前的包来生成patch。
截屏2020-08-10 下午4.36.35.png
-
发布patch
在阿里移动热修复后台,补丁管理,添加版本,命名为2.0.2,然后上传补丁
image.png
image.png
选择发布-新建发布-发布类型
可以选择灰度发布或者全量发布,至此就全部处理完成。
网友评论