小弟第一次寫文章,如果寫的不好,你說吧,反正我不一定會改。
熱修復(fù)是一個(gè)很好的東西,不僅方便了用戶使用,也方便了我們程序猿,不用經(jīng)常發(fā)包....
HotFix是阿里的推出來的一套熱修復(fù),接入簡單,方便快捷(我只使用過這種,其他的我就不評價(jià)),同時(shí)你生成的補(bǔ)丁發(fā)布以后大約10分鐘左右,就能手機(jī)APP就能修復(fù)好。
不說了,直接說怎么使用吧
首先到阿里百川或者阿里云,使用自己的賬號,去查看HotFix的文檔,android studio 的用戶可以直接添加Maven庫去使用,eclipse的玩家就需要下載相應(yīng)的jar包去使用了。附上兩個(gè)平臺的連接(阿里云的比較難找)
阿里百川:http://baichuan.taobao.com/product/hotfix.htm?spm=a3c0d.7662652.1998907869.2.7dQceC
阿里云:https://www.aliyun.com/product/hotfix
在里面可以查看到詳細(xì)的文檔(如果看我的不明白,可以去看看文檔,文檔比較詳細(xì))
先說點(diǎn)別的:個(gè)人建議去阿里百川,因?yàn)榘⒗锇俅ú恍枰暾埵褂?,阿里云需要,如有有時(shí)間,還是去阿里云,這個(gè)好像是阿里云的。申請審批時(shí)間,我當(dāng)時(shí)是兩到三個(gè)小時(shí)就通過了。
開干:
android studio 用戶:
第一:添加Maven庫(有兩個(gè),我待會講解,為什么推薦使用這個(gè))
```repositories {
jcenter()
? ? maven {? url"http://maven.aliyun.com/nexus/content/repositories/releases"}
}```
第二:到app目錄下的gradle添加(過會一起講解為什么要這樣)
```compile ('com.aliyun.ams:alicloud-android-hotfix:3.0.8') {
? ? ?exclude(module:'alicloud-android-utdid')
}```
第三:添加混淆:
#生成老安裝包時(shí)打開,生成mapping.txt, 并將mapping.txt,移到/app下
```-printmappingmapping.txt
#生成的mapping.txt在app/buidl/outputs/mapping/release路徑下,移動到/app路徑下
#修復(fù)后生成新安裝包時(shí)打開,保證混淆結(jié)果一致
#-applymapping mapping.txt
#hotfix
-keepclass com.taobao.sophix.**{*;}
-keepclass com.ta.utdid2.device.**{*;}```
第四:到AndroidManifest配置
```android:name="com.taobao.android.hotfix.IDSECRET"
android:value="App ID"/>
android:name="com.taobao.android.hotfix.APPSECRET"
android:value="App Secret"/>
android:name="com.taobao.android.hotfix.RSASECRET"
android:value="RSA密鑰"/>```
添加權(quán)限:INTERNET 、ACCESS_NETWORK_STATE、 ACCESS_WIFI_STATE、READ_EXTERNAL_STORAGE(6.0需要添加權(quán)限判斷)
第五:到MyApplication里面添加:
```?
@Override
public voidonCreate() {
super.onCreate();
SophixManager.getInstance().setContext(this)
.setAppVersion(BuildConfig.VERSION_NAME)
.setAesKey(null)
.setEnableDebug(true)
.setPatchLoadStatusStub(newPatchLoadStatusListener() {
@Override
public voidonLoad(intmode, intcode,String info, inthendlePathVersion) {
if(code == PatchStatus.CODE_LOAD_SUCCESS){
//補(bǔ)丁加載成功
}else if(code == PatchStatus.CODE_LOAD_RELAUNCH){
//補(bǔ)丁生效,需要重啟
}else if(code == PatchStatus.CODE_LOAD_FAIL){
//內(nèi)部引擎一次,清空補(bǔ)丁,防止失敗補(bǔ)丁重復(fù)加載
SophixManager.getInstance().cleanPatches();
}else{
//其他錯(cuò)誤
}
}
}).initialize();
SophixManager.getInstance().queryAndLoadNewPatch();
}
```
eclipse的用戶就到平臺去下載jar包就好了,其他的操作基本一樣
好了,現(xiàn)在說我遇到的坑:
第一次遇到的坑是:在平臺下載的SophixPatchTool生成的補(bǔ)丁用不了,下載的是3.0.3的版本,具體原因我也不知道,跑去問客服,結(jié)果客服直接甩了一個(gè)SophixPatchTool-2.0.7給我,然后就能用了(文章下面有下載鏈接)注:Windows用戶,MAC用戶的可以直接用
第二次遇到的坑是:在原來的項(xiàng)目添加HotFIx的時(shí)候,添加成功了,運(yùn)行成功了,但是打包的時(shí)候就有問題,居然有utdid的沖突,這就尷尬了,然后我就百度(無法越獄公司網(wǎng)絡(luò)),然后就看到友盟和支付寶(阿里系)都有這個(gè)沖突,我就回去從新看了一遍官方文檔,問題就解決了,解決方法就是我開始說的,在Maven和gradle添加的時(shí)候解決的,所以這里我覺得集成任何第三方,還是要詳細(xì)的看看文檔
關(guān)于HotFix我個(gè)人感覺挺好用的,集成方便,使用方便,不需要其他的任何操作。(今天在客服群里面,看到客服人員說:熱修復(fù)產(chǎn)品從公測轉(zhuǎn)為商業(yè)化時(shí)間不變,還是2017年7月31日。但是,所有用戶從31日開始,【兩周內(nèi)使用服務(wù)產(chǎn)生的費(fèi)用,均不計(jì)費(fèi)】,預(yù)期從2017年8月14日開始收費(fèi)。)所以如果需要用到的,還是需要各位去請各位的BOSS申請資金(土豪請忽略我說的)
SophixPatchTool-2.0.7下載鏈接
鏈接: http://pan.baidu.com/s/1i5yz6QD 密碼: gki6
小弟第一次寫文章,文筆不好,湊合著看看,小弟慢慢會學(xué)會寫文檔