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)大小.