Sophix阿里熱更新

Sophix在Android studio中集成

首先在app的build.gradle文件中添加maven倉庫地址

Repositories{

? ? ? ?Maven{

? ? ? ? ? ? url “http://maven.aliyun.com/nexus/content/repositories/releases”

? ? ? }

}

然后在dependencies中添加gradle版本依賴

compile‘com.aliyun.ams:alicloud-android-hotfix:3.1.1’

打開AndroidManifest.xml清單文件中加入網(wǎng)絡(luò)權(quán)限和外部存儲(chǔ)權(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"/>

然后重寫Application的onCreate方法,在里面對Sophix進(jìn)行初始化設(shè)置

下面代碼是判斷當(dāng)前引用是否在后臺和獲取引用的版本號

定義常量,設(shè)置ali提供的appid,secret, rsa,用于代碼混淆,提高安全性

然后在MainActivity的onStop方法中判斷引用在后臺的時(shí)候并且需要?dú)⑺肋M(jìn)程進(jìn)行更新補(bǔ)丁

Sophix熱更新休要將老版的apk與新版apk文件通過阿里提供的軟件產(chǎn)生插件包的形式進(jìn)行更新。支持方法的替換、增加減少和反射調(diào)用,在方法的替換可以即時(shí)生效,可以更新資源文件,So庫等,支持已有的全部機(jī)型,通過加密傳輸和簽名校驗(yàn)提高安全。

Sophix由classLoader加載補(bǔ)丁類,在native層直接memcpy(smeth, dmth,sizeof(ArtMethod))替換整個(gè)ArtMethod的結(jié)構(gòu),AllocArtMethodArray會(huì)跟著new出來放入art中的方法數(shù)組中,通過計(jì)算機(jī)輔助類的前后兩個(gè)方法的起始地址計(jì)算出artMethod結(jié)構(gòu)大小.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容