“熱部署” – 方法內(nèi)的簡單修改,無需重啟app和Activity。 “暖部署” – app無需重啟,但是activity需要重啟,比如資源的修改。 “冷部署” – app需要重啟,比如繼承關(guān)系的改變或方法的簽名變化等。
阿里云Sophix熱修復(fù)之簡單使用
Sophix集成示例:
第一步:找到Project的build.gradle文件,在allProjects節(jié)點下加上如下代碼:
repositories {
maven { url"http://maven.aliyun.com/nexus/content/repositories/releases"}
}
第二步:找到Module的build.gradle文件,添加依賴:
compile'com.aliyun.ams:alicloud-android-hotfix:3.0.7'
然后同步project
第三步:添加權(quán)限,SDK使用到以下權(quán)限
<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" />
<!--<! -- 外部存儲讀權(quán)限,調(diào)試工具加載本地補丁需要 –>-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
READ_EXTERNAL_STORAGE/ACCESS_WIFI_STATE 權(quán)限屬于Dangerous Permissions,自行做好android6.0以上的運行時權(quán)限獲取
第四步:密鑰等配置,在application節(jié)點下加入以下配置:
<meta-data
android:name="com.taobao.android.hotfix.IDSECRET"
android:value="App ID" />
<meta-data
android:name="com.taobao.android.hotfix.APPSECRET"
android:value="App Secret" />
<meta-data
android:name="com.taobao.android.hotfix.RSASECRET"
android:value="RSA密鑰" />
第五步:登錄阿里云熱修復(fù)管理控制臺,填入對應(yīng)3個value
第六步:代碼集成
在Application的attachBaseContext方法里加入Sophix初始化
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
SophixManager.getInstance().setContext(this)
.setAppVersion(getAppVersion())
.setAesKey(null)
.setEnableDebug(true)
.setPatchLoadStatusStub(new PatchLoadStatusListener() {
@Override
public void onLoad(final int mode, final int code, final String info, final int handlePatchVersion) {
// 補丁加載回調(diào)通知
if (code == PatchStatus.CODE_LOAD_SUCCESS) {
// 表明補丁加載成功
} else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {
// 表明新補丁生效需要重啟. 開發(fā)者可提示用戶或者強制重啟;
// 建議: 用戶可以監(jiān)聽進入后臺事件, 然后應(yīng)用自殺
} else if (code == PatchStatus.CODE_LOAD_FAIL) {
// 內(nèi)部引擎異常, 推薦此時清空本地補丁, 防止失敗補丁重復(fù)加載
SophixManager.getInstance().cleanPatches();
} else {
// 其它錯誤信息, 查看PatchStatus類說明
}
}
}).initialize();
}
@Override
public void onCreate() {
super.onCreate();
......
// queryAndLoadNewPatch不可放在attachBaseContext 中,否則無網(wǎng)絡(luò)權(quán)限,建議放在后面任意時刻,如onCreate中
SophixManager.getInstance().queryAndLoadNewPatch();
}
自此SDK的集成已經(jīng)差不多完成,官方給出了很詳細的集成方法,官方集成文檔
第七步:生成熱修復(fù)補丁
我們直接看官方文檔這里面寫的很詳細,細到每個設(shè)置每個參數(shù)都有說明
第八步:調(diào)試并發(fā)布補丁
首先我們需要上傳補丁到阿里云管理后臺,點此查看詳細操作
接下來是對補丁的調(diào)試,點此查看詳細操作
調(diào)試沒毛病后,發(fā)布補丁,參考管理后臺使用說明的step5