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

Unity构建AAB时Proguard无法保留Google Play插件类的问题求助

解决Unity构建AAB时Google Play Asset Delivery类被ProGuard/R8剥离的问题

一、修正ProGuard/R8规则

你的现有规则仅保留了public类和public成员,但Google Play Core、Asset Delivery库中大量关键的内部类、接口、非public方法会被Unity的Java桥接调用,很容易被误剥离。替换为以下规则:

# 保留Google Play相关所有类、接口及成员(包括非public、内部类)
-keep class com.google.play.core.** { *; }
-keep interface com.google.play.core.** { *; }
-keep class com.google.play.common.** { *; }
-keep interface com.google.play.common.** { *; }
-keep class com.google.play.appbundle.** { *; }
-keep interface com.google.play.appbundle.** { *; }
-keep class com.google.play.assetdelivery.** { *; }
-keep interface com.google.play.assetdelivery.** { *; }

# 保留必要元数据属性,防止R8/ProGuard剥离交互所需信息
-keepattributes *Annotation*, Signature, InnerClasses, EnclosingMethod
-keepattributes SourceFile, LineNumberTable

# 禁用代码混淆(若不需要混淆),但保留类保留规则
-dontobfuscate
# 若仍存在剥离问题,可临时禁用收缩/优化排查根源
# -dontshrink
# -dontoptimize

说明:去掉public修饰符确保全访问级别类都被保留;新增接口的保留规则;补充Signature、InnerClasses等属性,这些是IL2CPP与Java交互必须的元数据。

二、验证Gradle配置

确保mainTemplate.gradle中正确引入自定义ProGuard文件,且顺序正确(自定义文件放在最后,覆盖默认规则):

android {
    buildTypes {
        release {
            minifyEnabled true
            useProguard true // 明确使用ProGuard,若用R8则改为false并适配对应规则
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
                          'proguard-unity.txt',
                          'Assets/Plugins/Android/你的自定义规则文件名.pro'
        }
    }
}

若尝试使用R8,可添加-keep class com.google.play.core.** { <methods>; }强制保留所有方法,适配R8的优化逻辑。

三、调整Unity构建配置

  1. Managed Stripping Level:在Player Settings > Other Settings > Optimization中,将该项设为Low或Disable。如果设为High,Unity可能会剥离托管层与Java交互的桥接代码,间接导致Java类被误删。
  2. Strip Engine Code:临时关闭该选项测试,若崩溃消失,说明引擎代码剥离影响了插件依赖,可通过添加link.xml排除相关托管代码(此步用于排查,你的问题核心在Java端)。
  3. Minify设置:如果之前用R8正常、更新后异常,可尝试切换回ProGuard(上述Gradle中设置useProguard true),或者更新Google插件到最新稳定版,大概率修复了R8兼容问题。

四、排查辅助步骤

  • 生成混淆映射文件:在ProGuard规则中添加-printmapping build/outputs/mapping/release/mapping.txt,构建后查看哪些类/方法被剥离,针对性补充-keep规则。
  • 检查插件完整性:删除Assets/Plugins/Android下的Google相关库,重新导入插件,确保所有依赖的aar/jar文件完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:01:09