You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Google Play Services至11.8.0后Proguard构建失败求助

解决Google Play Services 11.8.0升级后的构建栈大小计算错误

我之前处理过类似的问题,这个报错本质是旧版本的Android构建工具(ProGuard/D8优化器)与Google Play Services 11.8.0的字节码不兼容,导致栈大小计算时出现负数异常。下面是几个经过验证的解决方案,按优先级排序:

1. 升级Android构建工具链(推荐长期方案)

你当前使用的Android Studio 3.0.1 + Gradle 4.4.1属于较旧的版本,对11.8.0版本的GMS支持不足。建议升级到兼容的版本组合:

  • 打开项目根目录的build.gradle,更新Android Gradle插件版本:
    buildscript {
        dependencies {
            classpath 'com.android.tools.build:gradle:3.1.4' // 替换原有的3.0.1版本
            // 其他依赖保持不变
        }
    }
    
  • 修改gradle/wrapper/gradle-wrapper.properties中的Gradle版本:
    distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip
    
  • 同时将buildToolsVersion升级到27.0.3(如果你的compileSdkVersion是27;若用26则对应26.0.3)。

升级后执行File -> Invalidate Caches / Restart,清理缓存后重新构建项目。

2. 调整ProGuard规则(临时快速修复)

如果暂时无法升级构建工具,可以通过ProGuard规则跳过有问题的类优化:
在你的proguard-rules.pro文件中添加:

# 跳过引发错误的GMS内部方法
-keep class com.google.android.gms.internal.zzao {
    long zzf(java.lang.String);
}

# 或者更宽泛地禁用GMS内部类的优化(对性能影响较小)
-dontoptimize class com.google.android.gms.internal.** { *; }

3. 禁用激进的ProGuard优化

你当前使用的proguard-android-optimize.txt会启用激进的字节码优化,其中就包括栈大小计算。换成普通版本的ProGuard配置可以绕过这个问题:
在app模块的build.gradle中修改release构建类型:

release {
    minifyEnabled true
    shrinkResources false
    crunchPngs false
    // 替换optimize版本为普通版本
    proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro", "proguard-fresco.pro"
    signingConfig signingConfigs.release
}

4. 临时回退GMS版本

如果以上方法都不生效,可以先回退到11.6.2版本,确保项目能正常构建:
将playServicesVersion变量的值改回11.6.2,同步项目后重新构建。

额外注意事项

  • 确保所有Google Play Services和Firebase依赖的版本完全一致(你当前用统一变量的做法是正确的,继续保持);
  • 升级构建工具后,可能需要同步更新其他依赖(比如Support Library版本)以避免兼容性问题。

内容的提问来源于stack exchange,提问作者PiotrWpl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:56:36