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

Play Services Location 11.6.0 ProGuard构建APK失败求助

解决Play Services Location 11.6.0 + AS 3.1.2 构建失败问题

咱们一步步来拆解和解决你遇到的问题,核心矛盾是旧版ProGuard规则与11.6.0版本的Play Services库不兼容,再加上AS 3.1.2的构建工具特性,导致混淆阶段出了问题。

第一步:先找到具体的报错日志(关键!)

你说不清楚日志位置,这是排查的首要障碍,先搞定这个:

  • 在Android Studio底部栏点击Build标签,切换到Build Output面板,点击面板右上角的「Toggle View」(列表样式的图标),找到ProGuard/R8混淆阶段的报错信息,里面会明确显示哪个类/方法被误混淆了;
  • 或者直接去项目目录的app/build/outputs/mapping/release/(如果是Release构建)或debug/文件夹,找到proguard-console.log文件,里面是混淆过程的完整日志。

第二步:清理无效规则,添加适配11.6.0的精准混淆规则

你之前用的是6.5版本的旧规则,还加了一堆过于宽泛的keep规则(比如-keep class com.google.** { *; }),这些反而会导致类依赖冲突或混淆逻辑混乱。请按以下步骤调整:

  1. 先删除所有你手动添加的旧规则和那些过宽的keep规则;
  2. 在你的ProGuard规则文件中添加以下适配11.6.0版本的规则:
# Play Services Location 11.6.0 核心类保留
-keep class com.google.android.gms.location.LocationRequest { *; }
-keep class com.google.android.gms.location.LocationResult { *; }
-keep class com.google.android.gms.location.FusedLocationProviderClient { *; }
-keep class com.google.android.gms.location.LocationCallback { *; }

# Play Services 通用11.x版本规则
-keep class com.google.android.gms.common.api.Result { *; }
-keep class com.google.android.gms.common.GoogleApiAvailability { *; }
-keep class com.google.android.gms.common.api.ApiException { *; }

# 保留Parcelable序列化相关类(避免跨进程/存储时出错)
-keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
}

# 保留Google官方注解标记的类/方法
-keep @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
    @com.google.android.gms.common.annotation.KeepName *;
}

# 忽略Play Services内部未使用类的警告,减少构建干扰
-dontwarn com.google.android.gms.**

第三步:检查Gradle配置兼容性

AS 3.1.2对应的Gradle插件版本是3.1.2,要确保和11.6.0版本的Play Services库兼容:

  1. 项目根目录的build.gradle必须配置Google Maven仓库:
allprojects {
    repositories {
        google()
        jcenter() // AS3.1.2仍依赖jcenter,不要删除
    }
}
  1. App模块的build.gradle确认插件版本:
buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
    }
}

第四步:强制使用ProGuard(可选,针对R8兼容问题)

AS 3.0+默认会用R8代替ProGuard,而11.6.0版本的Play Services库对R8的兼容性较差,你可以强制切换回ProGuard:
在App模块的build.gradle中添加:

android {
    buildTypes {
        release {
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            // 如果Debug构建也报错,同样开启ProGuard
            useProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

最后验证

做完以上调整后,先执行Clean Project,再Rebuild Project,如果还是报错,就拿着第一步找到的具体日志,针对性地补充keep规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:07:04