阿里熱更新(Sophix)最新2020

記錄文章方便以后使用~~~~

1.嗯痰娱。弃榨。? 第一步肯定是要先有阿里云的賬號澀:https://www.aliyun.com?自行注冊

2.官方文檔: SDK穩(wěn)健接入_快速入門_移動熱修復(fù)-阿里云

? ? 菩收,,快速接入鲸睛,在Android 9.0以上系統(tǒng)會有發(fā)生崩潰的風(fēng)險(xiǎn)坛梁。選擇穩(wěn)健接入方式接入,這點(diǎn)快速接入說明上說的很清楚了

3.集成準(zhǔn)備腊凶,在project的build.gradle文件中添加:url"http://maven.aliyun.com/nexus/content/repositories/releases"


project的build.gradle文件

4.添加依賴:implementation'com.aliyun.ams:alicloud-android-hotfix:3.2.13'


app的build.gradle文件

5.sophix需要使用到的權(quán)限:READ_EXTERNAL_STORAGE做好動態(tài)獲取權(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"/>

6.到阿里云控制臺創(chuàng)建產(chǎn)品


添加產(chǎn)品

7.然后選擇添加應(yīng)用


添加應(yīng)用

8.填寫相應(yīng)的信息,提交之后會給你一個json格式的文件拴念。需要下載下來


填寫信息


提交之后

9.當(dāng)然钧萍,提交的時候沒有下載也可以在應(yīng)用管理里面去下載的,下載后放入對應(yīng)位子


下載Android配置


json

11.在androidmanifest里的application節(jié)點(diǎn)下添加:替換相應(yīng)的value

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密鑰" />

12.混淆配置政鼠,直接復(fù)制扔進(jìn)去

#基線包使用风瘦,生成mapping.txt

-printmapping mapping.txt

#生成的mapping.txt在app/build/outputs/mapping/release路徑下,移動到/app路徑下

#修復(fù)后的項(xiàng)目使用公般,保證混淆結(jié)果一致

#-applymapping mapping.txt

#hotfix

-keep class com.taobao.sophix.**{*;}

-keep class com.ta.utdid2.device.**{*;}

-dontwarn com.alibaba.sdk.android.utils.**

#防止inline

-dontoptimize

-keepclassmembers class com.my.pkg.MyRealApplication {

public ();

}

# 如果不使用android.support.annotation.Keep則需加上此行

# -keep class com.my.pkg.SophixStubApplication$RealApplicationStub

13.創(chuàng)建一個Sophix入口類万搔,專門用于初始化Sophix,不應(yīng)包含任何業(yè)務(wù)邏輯官帘。

* 此類必須繼承自SophixApplication瞬雹,onCreate方法不需要實(shí)現(xiàn)。

* 此類不應(yīng)與項(xiàng)目中的其他類有任何互相調(diào)用的邏輯刽虹,必須完全做到隔離酗捌。

* AndroidManifest中設(shè)置application為此類,而SophixEntry中設(shè)為原先Application類涌哲。

* 注意原先Application里不需要再重復(fù)初始化Sophix胖缤,并且需要避免混淆原先Application類。

* 如有其它自定義改造阀圾,請咨詢官方后妥善處理哪廓。這是官方原話~~~

所以我們這里需要兩個application

第一個初始化阿里熱更新的,并且androidmanifest里面的name也改成此application

需要注意

@Keep

@SophixEntry(MVPApplication.class)? ?初烘、涡真、、账月、综膀、?MVPApplication?是第二個application

static class RealApplicationStub? {}


此application的提示不用管,下面是代碼:

public class SophixStubApplicationextends SophixApplication {

public static final StringTAG ="ALiApplication";

? ? // 此處SophixEntry應(yīng)指定真正的Application局齿,并且保證RealApplicationStub類名不被混淆剧劝。

? ? @Keep

? ? @SophixEntry(MVPApplication.class)

static class RealApplicationStub? {}

@Override

? ? protected void attachBaseContext(Context base) {

super.attachBaseContext(base);

? ? ? ? initSophix();

? ? }

private void initSophix() {

Log.i(TAG, "initSophix: ");

String appVersion ="0.0.0";

? ? ? ? try {

appVersion =this.getPackageManager()

.getPackageInfo(this.getPackageName(), 0)

.versionName;

? ? ? ? }catch (Exception e) {

Log.i(TAG, "initSophix: "+e.getMessage());

? ? ? ? }

final SophixManager instance = SophixManager.getInstance();

? ? ? ? instance.setContext(this).setAppVersion(appVersion).setSecretMetaData(null, null, null).setEnableDebug(true).setEnableFullLog()

.setPatchLoadStatusStub((mode, code, info, handlePatchVersion) -> {

if (code == PatchStatus.CODE_LOAD_SUCCESS) {

Log.i(TAG, "sophix load patch success!");

? ? ? ? ? ? ? ? ? ? }else if (code == PatchStatus.CODE_LOAD_RELAUNCH) {

// 如果需要在后臺重啟,建議此處用SharePreference保存狀態(tài)抓歼。

? ? ? ? ? ? ? ? ? ? ? ? Log.i(TAG, "sophix preload patch success. restart app to make effect.");

? ? ? ? ? ? ? ? ? ? }

}).initialize();

? ? }

}

//? 分割線 ------------------------------------------

public class MVPApplicationextends Application {

@Override

? ? public void onCreate() {

super.onCreate();

? ? ? ? //如果不需要阿里熱修復(fù)? 注釋這行? 并且在AndroidManifest切換Application讥此!

? ? ? ? SophixManager.getInstance().queryAndLoadNewPatch();

? ? ? ? //工具類

? ? ? ? Utils.init(this);

? ? }

}

到此---------------我們就可以開始測試了拢锹,

我的測試方式是請求一個接口,第一個包請求成功不會有任何提示和操作萄喳,第二個包會有一個Toast


請求之后可以看到:


此時前往配置岔包,因?yàn)槲覀€人之前已經(jīng)測試過了卒稳,所以版本是1.2,兩個包的版本必須一致


下一步修改第二個包的代碼他巨。需要更新的地方~


好了充坑。。染突。什么都準(zhǔn)備好了捻爷,如何實(shí)現(xiàn)熱更新呢?? 現(xiàn)在需要一個工具來生成補(bǔ)斗萜蟆:

https://help.aliyun.com/document_detail/93826.html?spm=a2c4g.11186623.2.10.7ad55b841EkGk3前往下載對應(yīng)的系統(tǒng)版本



我已經(jīng)生成了也榄,路徑自行配置,放在這是方便截圖司志,現(xiàn)在拿到補(bǔ)丁了甜紫。回去上傳


上傳之后還需要手動點(diǎn)擊發(fā)布骂远,狀態(tài)是就緒囚霸,還需要自行測試一遍才能真正的發(fā)布



可直接點(diǎn)擊掃描驗(yàn)證補(bǔ)丁下載工具測試,可以看見我這里啟動app會初始化sophix吧史,如果沒有初始化邮辽,那么肯定是有問題的澀




打開app?確認(rèn)初始化了,然后打開補(bǔ)丁測試工具贸营,連接 --?掃描補(bǔ)丁二維碼 --? 應(yīng)用吨述,再次退出自己的app,重新打開钞脂,測試修改過的地方


舊包


新包

本地測試通過4г啤!冰啃!如果沒有通過邓夕,請自行查看接入步驟是否有誤?然后現(xiàn)在可以發(fā)布了~



發(fā)布成功后阎毅,卸載重新安裝舊包焚刚,日志會提示sophix preload patch success. restart app to make effect.

更新完成重新啟動生效

中途我也遺漏了幾個地方? ?都補(bǔ)起了步驟? 若還有遺漏的地方? ?望指出


溜了溜了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市扇调,隨后出現(xiàn)的幾起案子矿咕,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碳柱,死亡現(xiàn)場離奇詭異捡絮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)莲镣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門福稳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瑞侮,你說我怎么就攤上這事的圆。” “怎么了半火?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵略板,是天一觀的道長。 經(jīng)常有香客問我慈缔,道長,這世上最難降的妖魔是什么种玛? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任藐鹤,我火速辦了婚禮,結(jié)果婚禮上赂韵,老公的妹妹穿的比我還像新娘娱节。我一直安慰自己,他們只是感情好祭示,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布肄满。 她就那樣靜靜地躺著,像睡著了一般质涛。 火紅的嫁衣襯著肌膚如雪稠歉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天汇陆,我揣著相機(jī)與錄音怒炸,去河邊找鬼。 笑死毡代,一個胖子當(dāng)著我的面吹牛阅羹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播教寂,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼捏鱼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了酪耕?” 一聲冷哼從身側(cè)響起导梆,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后问潭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猿诸,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年狡忙,在試婚紗的時候發(fā)現(xiàn)自己被綠了梳虽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡灾茁,死狀恐怖窜觉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情北专,我是刑警寧澤禀挫,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站拓颓,受9級特大地震影響语婴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜驶睦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一砰左、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧场航,春花似錦缠导、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至孩饼,卻和暖如春髓削,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背镀娶。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工蔬螟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汽畴。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓旧巾,卻偏偏與公主長得像,于是被迫代替她去往敵國和親忍些。 傳聞我的和親對象是個殘疾皇子鲁猩,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355