请问应用研发平台EMAS安卓热修复SDK接入时,当AGP>7时,关闭R8是必须的吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在应用研发平台EMAS安卓热修复SDK接入时,当Android Gradle Plugin(AGP)版本大于7.0时,关闭R8是必须的。这是因为R8可能会导致生成补丁异常,影响热修复功能的正常运行。
以下是具体操作步骤和原因说明:
R8是AGP 7.0及以上版本默认启用的代码压缩和混淆工具。然而,在使用EMAS热修复SDK时,如果启用了R8,可能会导致以下问题: - 补丁生成过程中出现异常。 - 混淆规则不一致,导致补丁加载失败或运行时崩溃。
因此,为确保热修复功能的稳定性,建议关闭R8并改用ProGuard进行代码混淆。
根据知识库中的指导,关闭R8需要进行以下配置:
build.gradle
中添加ProGuard插件依赖buildscript {
repositories {
google() // For the Android Gradle plugin.
mavenCentral() // For the ProGuard Gradle Plugin.
}
dependencies {
classpath("com.android.tools.build:gradle:x.y.z") // The Android Gradle plugin.
classpath("com.guardsquare:proguard-gradle:7.1.+") // The ProGuard Gradle plugin.
}
}
app
目录的build.gradle
中应用ProGuard插件apply plugin: 'com.guardsquare.proguard'
在app/build.gradle
中,将minifyEnabled
设置为false
以关闭R8:
android {
buildTypes {
release {
minifyEnabled false // 关闭 R8.
}
}
}
在app/build.gradle
中添加ProGuard混淆配置:
proguard {
configurations {
release {
defaultConfiguration 'proguard-android.txt'
configuration 'proguard-rules.pro'
}
debug {
defaultConfiguration 'proguard-android-debug.txt'
configuration 'proguard-rules.pro'
}
}
}
mapping.txt
文件,以保证混淆结果一致,避免因类名或方法名不一致导致补丁加载失败。综上所述,当AGP版本大于7.0时,关闭R8是必须的操作,并且需要按照上述步骤正确配置ProGuard以确保热修复功能的正常运行。