使用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之后需要重新发布版本;