使用Google Analytics及代码混淆时出现Android构建错误
解决Android构建错误:ProGuard配置解析失败(play-services-base 11.8.0)
我之前也碰到过这个一模一样的问题!罪魁祸首是Google Play Services 11.8.0版本里的play-services-base模块自带的ProGuard配置文件存在语法错误,导致开启minifyEnabled true和shrinkResources true时触发构建失败。给你几个靠谱的解决办法:
1. 优先升级Google Play Services版本到最新稳定版
这是最彻底的解决方式,Google在后续版本中修复了这个ProGuard配置的语法问题。你只需要修改app模块的build.gradle文件,把所有Google Play Services相关依赖的版本号从11.8.0升级到最新的稳定版(比如现在可以用17.6.0及以上)。
示例修改:
dependencies { // 替换旧版本 // implementation 'com.google.android.gms:play-services-base:11.8.0' // 使用最新稳定版 implementation 'com.google.android.gms:play-services-base:17.6.0' // 其他相关的play-services依赖也同步升级版本号 }
2. 临时排除有问题的ProGuard配置文件
如果暂时无法升级依赖版本,可以通过Gradle配置排除play-services-base里那个出错的proguard.txt文件:
在app模块的build.gradle中添加如下配置:
android { buildTypes { debug { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // 排除有语法错误的ProGuard配置文件 packagingOptions { exclude 'META-INF/proguard.txt' } } release { // 如果release构建也有同样问题,同样添加这个配置 minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' packagingOptions { exclude 'META-INF/proguard.txt' } } } }
⚠️ 注意:使用这个方案后,你需要在自己的proguard-rules.pro中手动添加Google Play Services相关的保留规则,避免相关功能在混淆后崩溃。
3. 清理Gradle缓存
有时候缓存的旧依赖文件会导致问题残留,执行以下命令清理Gradle缓存:
./gradlew cleanBuildCache
清理完成后重新执行构建命令,确保新的配置生效。
内容的提问来源于stack exchange,提问作者claudio sm
相关产品推荐
相关产品推荐

