其實本來不打算寫這篇文章的,因為其實官方文檔已經(jīng)非常詳細了隶症。沒錯政模,以下內(nèi)容基本與官方文檔雷同。
1.首先蚂会,需要去阿里云官網(wǎng)注冊帳號淋样,已有阿里云帳號的無需再次注冊(此步驟略)。
2.登錄移動熱修復控制臺(https://hotfix.console.aliyun.com/)胁住,創(chuàng)建相關(guān)產(chǎn)品趁猴,如下圖所示:
3.點擊創(chuàng)建后刊咳,可以直接看到當前的產(chǎn)品列表,如下圖所示:
4.點擊產(chǎn)品名稱或者產(chǎn)品對應的管理鏈接進入產(chǎn)品的應用列表創(chuàng)建相應的應用儡司,如下圖所示:
5.點擊創(chuàng)建應用按鈕娱挨,填寫App名稱,應用類型捕犬,packageName及相關(guān)描述信息
(注:此處的應用類型選擇Android跷坝,packageName為實際應用對應的包名)
6.創(chuàng)建完成后點擊左側(cè)服務列表選擇移動熱修復,進入移動熱修復控制臺碉碉,如下圖所示:
7.在App列表點擊“管理”后柴钻,跳轉(zhuǎn)到單個App管理頁面,可以查看,如下圖所示:
8.打開androidstudio中對應的項目贴届,在根節(jié)點的build.gradle文件中添加maven倉庫地址,如下:
maven {
???????url "http://maven.aliyun.com/nexus/content/repositories/releases"
????????}
在項目的build.gradle文件中添加gradle坐標版本依賴:
compile 'com.aliyun.ams:alicloud-android-hotfix:3.1.7'
9.相關(guān)權(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" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
10.在AndroidManifest.xml中間的application節(jié)點下添加如下配置:
<meta-data????android:name="com.taobao.android.hotfix.IDSECRET"????android:value="AppId" />
<meta-data????android:name="com.taobao.android.hotfix.APPSECRET"????android:value="AppSerect" />
<meta-data????android:name="com.taobao.android.hotfix.RSASECRET"????android:value="RSA密鑰"/>
(注:此處填寫的相關(guān)參數(shù)為步驟7所獲取)
11.代碼混淆(此步驟略蜡吧,可根據(jù)項目需求去官網(wǎng)獲取最新的代碼混淆文件)
12.Application初始化(簡單范例)
@Overrideprotected void attachBaseContext(Context base) {???
?super.attachBaseContext(base);????
String appVersion;??
?try {????????appVersion = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;???
?} catch (Exception e) {??????
??appVersion = "1.0.1";????}
// initialize最好放在attachBaseContext最前面毫蚓,初始化直接在Application類里面,切勿封裝到其他類????
SophixManager.getInstance().setContext(this)???????
?????.setAppVersion(appVersion)?????????
???.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) {???????????????????????
?// 表明補丁加載成功????????????????????????
Log.d(TAG, "補丁加載成功");???????????????????
?} else if (code == PatchStatus.CODE_LOAD_RELAUNCH)
?{????????????????????????Log.d(TAG, "發(fā)現(xiàn)新補丁昔善,建議重啟應用");???????????????????????
?// 表明新補丁生效需要重啟. 開發(fā)者可提示用戶或者強制重啟;???????????????????????
?// 建議: 用戶可以監(jiān)聽進入后臺事件, 然后調(diào)用killProcessSafely自殺绍些,以此加快應用補丁,詳見1.3.2.3???????????????????
?}???????????????
?}????????
????}).initialize();}
???@Override????
public void onCreate(){??????
??super.onCreate();???????
?SophixManager.getInstance().queryAndLoadNewPatch();??
??}
(注:到此步驟已完成最基本的集成耀鸦,注意此處傳入的appVersion對應于平臺上你添加的相應版本,上傳補丁是針對對應版本上傳的)
13.生成插件
下載官方插件工具一鍵生成(注:本地環(huán)境jdk版本必須大于1.7,否則生成不會成功啸澡;另需注意的是每次生成插件都是根據(jù)兩個包對比生成的袖订,假定現(xiàn)在有一個基準包,第一次新包里面添加一個功能生成一個插件嗅虏,第二次新包沒有該功能而是單純的修復bug洛姑,那么先發(fā)布第一個插件再發(fā)布第二個生成的插件,添加的功能會消失《說到這里皮服,可以想象目前插件化比較實用的幾個場景楞艾,場景1:修復在線新包的bug,較為常見龄广;場景2:一些bug在新版本上已經(jīng)修復硫眯,但由于新版本上添加了一些功能,老用戶不想要择同,即切換到當時開發(fā)的節(jié)點两入,獲取當時的版本,生成一個老包敲才,然后在對應節(jié)點上修復ok后裹纳,生成新包后再進行插件的生成場景3:添加一些布局文件及方法择葡,即一些UI的簡單修改)
14.在相應版本上上傳插件然后發(fā)布版本(次步驟較為簡單略)
以上就為集成的簡要步驟,自己按這個步驟傻瓜式的走了一遍并且測試成功剃氧。