有关热修复的概念和原理不多BB,本文介绍的是阿里hotfix接入,直接上步骤:
1.阿里热修复控制台地址
https://www.aliyun.com/product/hotfix
这是我已经添加的项目,大家只需点击"添加产品",进入下一步即可
这里随便填就好,确定
点击添加应用,填入APP名称和你的包名
下载下来这个.json
下载下来之后打开查看,红框内的字段在项目中会用到!
2、项目前期配置:
(1)、build.gradle中:
1、
repositories {
maven {
url "http://maven.aliyun.com/nexus/content/repositories/releases"
}
}
2、
implementation 'com.aliyun.ams:alicloud-android-hotfix:3.2.3'
(2)、清单文件:Androidmanifest.xml中:
权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
meta:
<meta-data
android:name="com.taobao.android.hotfix.IDSECRET"
android:value="刚下载的.json文件里的:hotfix.idSecret这个字段" />
<meta-data
android:name="com.taobao.android.hotfix.APPSECRET"
android:value="刚下载的.json文件里的:emas.appSecret这个字段" />
<meta-data
android:name="com.taobao.android.hotfix.RSASECRET"
android:value="刚下载的.json文件里的:hotfix.rsaSecret这个字段(这个字段超级长)"/>
3、配置application:项目里没有的话新建一个然后继承Application就好
在application中的attachBaseContext方法里初始化热修复:
String version = "";
try {
version = 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.d(TAG, "补丁加载成功");
} else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
Log.d(TAG, "补丁更新成功");
} else {
Log.d(TAG, "code--->" + code);
Log.d(TAG, "mode---> " + mode);
Log.d(TAG, "info---> " + info);
Log.d(TAG, "handlePatchVersion---> " + handlePatchVersion);
}
}
}).initialize();
将更新修复放在所需的位置,例放在了启动页的onCreate()方法里:
SophixManager.getInstance().queryAndLoadNewPatch();
4、打包APK
一个旧版本APK和一个改过的APK(名字叫啥都行),举例:
5、下载打包工具:
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