使用Sophix熱修複說明
1. 軟體必須以管理者身份運作;
2. 電腦必須安裝配置JDK 1.8及以上,不能有低于1.8的jdk版本存在;
3. Android6.0以上必須要動态申請讀寫權限【該權限僅用于測試】
private staticfinal int REQUEST_EXTERNAL_STORAGE= 1;
private static String[] PERMISSIONS_STORAGE = {
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE" };
public static void verifyStoragePermissions(Activity activity) {
//版本大于6.0的情況
if (Build.VERSION.SDK_INT >= 23) {
try {
//檢測是否有寫的權限
int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE");
if (permission != PackageManager.PERMISSION_GRANTED) {
// 沒有寫的權限,去申請寫的權限,會彈出對話框
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
}
} catch (Exceptione) {
e.printStackTrace();
}
}
}
4. 配置APP Moudle的Gradle:
(1)庫檔案配置:特别要加上flatDir{dirs‘libs’}
repositories {
maven {
url "http://maven.aliyun.com/nexus/content/repositories/releases"
}
flatDir{
dirs 'libs'
}
}
(2) 依賴檔案配置
compile 'com.aliyun.ams:alicloud-android-hotfix:3.1.9'
(3)混淆檔案配置
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro’
}
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
(4)穩健接入 proguard-rules.pro檔案配置
-keepclassmembers class com.example.tangdekun.sophixdemo.SophixApplication {
public <init>();
}
#基線包使用,生成mapping.txt
-printmapping mapping.txt
#生成的mapping.txt在app/buidl/outputs/mapping/release路徑下,移動到/app路徑下
#修複後的項目使用,保證混淆結果一緻
#-applymapping mapping.txt
#hotfix
-keep class com.taobao.sophix.**{*;}
-keep class com.ta.utdid2.device.**{*;}
#防止inline
-dontoptimize
5. 對比APK要在簽名加強之前
6. 我們APK自帶加密機制,不需要代碼混淆,也可以不混淆
7. 版本号隻可以是數字和”.”,不可以包含字母,否則更新更新檔不成功;
8. 熱更新的更新檔最高為5M,超過5M之後需要重新釋出版本;