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

Android Release构建Proguard报错:无法找到指定类与String的共同父类

解决Release构建时Proguard与Google Play Services、Facebook Audience Network的冲突问题

我来帮你排查这个Release构建报错的问题——你遇到的本质是Proguard在混淆过程中无法解析Google Play Services内部类和String的共同父类,而Facebook Audience Network的引入触发了这个冲突,下面是具体的分析和解决办法:

你遇到的报错信息

Unexpected error while performing partial evaluation: 
Class = [com/google/android/gms/d/lc] 
Method = [a(Lcom/google/android/gms/d/kk;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/android/gms/d/lh;Lcom/google/android/gms/d/en;Lcom/google/android/gms/d/lb;)Lcom/google/android/gms/d/kn;] 
Exception = [java.lang.IllegalArgumentException] (Can't find common super class of [com/google/android/gms/d/kn] (with 1 known super classes) and [java/lang/String] (with 2 known super classes)) 
Unexpected error while preverifying: 
Class = [com/google/android/gms/d/lc] 
Method = [a(Lcom/google/android/gms/d/kk;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/google/android/gms/d/lh;Lcom/google/android/gms/d/en;Lcom/google/android/gms/d/lb;)Lcom/google/android/gms/d/kn;] 
Exception = [java.lang.IllegalArgumentException] (Can't find common super class of [com/google/android/gms/d/kn] (with 1 known super classes) and [java/lang/String] (with 2 known super classes)) 
Warning: Exception while processing task java.io.IOException: java.lang.IllegalArgumentException: Can't find common super class of [com/google/android/gms/d/kn] (with 1 known super classes) and [java/lang/String] (with 2 known super classes)

你的现有配置和依赖

Proguard配置

-keep public class com.google.android.gms.* { public *; } 
-dontwarn com.google.android.gms.** 
-keep class com.facebook.ads.** { *; }

项目Gradle依赖

dependencies { 
    implementation fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { 
        exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    implementation 'com.android.support.constraint:constraint-layout:1.1.0' 
    implementation 'com.android.support:design:27.1.1' 
    implementation 'com.android.support:appcompat-v7:27.1.1' 
    implementation 'com.android.support:cardview-v7:27.1.1' 
    implementation 'com.google.firebase:firebase-perf:16.0.0' 
    implementation 'com.google.firebase:firebase-config:16.0.0' 
    implementation 'com.google.firebase:firebase-core:16.0.0' 
    implementation 'com.google.firebase:firebase-messaging:17.0.0' 
    implementation 'com.google.android.gms:play-services-analytics:16.0.0' 
    implementation 'com.google.android.gms:play-services-drive:15.0.1' 
    implementation 'com.google.android.gms:play-services-auth:15.0.1' 
    implementation 'com.startapp:inapp-sdk:3.8.4' 
    implementation 'com.facebook.android:audience-network-sdk:4.28.2' 
    testImplementation 'junit:junit:4.12' 
    testImplementation 'org.mockito:mockito-core:2.7.1' 
    testImplementation 'org.powermock:powermock-mockito-release-full:1.4.9' 
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.1@aar') { 
        transitive = true 
    } 
}

问题原因分析

这个错误的核心是:

  1. 你项目中Google Play Services的版本不统一(play-services-analytics是16.0.0,而drive和auth是15.0.1),版本不一致容易导致类解析冲突;
  2. 现有Proguard规则只保留了Google Play Services的public类和成员,但其内部类(比如com.google.android.gms.d.*这类)被混淆了,导致Proguard无法解析类型关系;
  3. 旧版本的Facebook Audience Network SDK(4.28.2)和你当前的Google Play Services/Firebase版本存在兼容性问题,触发了这个混淆错误。

具体解决方案

1. 统一Google Play Services的版本

把所有Google Play Services依赖升级到同一版本,比如和play-services-analytics一致的16.0.0:

implementation 'com.google.android.gms:play-services-analytics:16.0.0'
implementation 'com.google.android.gms:play-services-drive:16.0.0'
implementation 'com.google.android.gms:play-services-auth:16.0.0'

Firebase的版本16.x和这个版本是兼容的,无需调整。

2. 优化Proguard规则,覆盖Google Play Services内部类

修改你的Proguard配置,确保保留Google Play Services的所有类(包括内部类),避免混淆时解析出错:

# 保留Google Play Services所有类和成员,包括内部类
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**

# 保留Facebook Audience Network的类
-keep class com.facebook.ads.** { *; }
-dontwarn com.facebook.ads.**

# 额外保留Firebase相关类,避免和Google Play Services冲突
-keep class com.google.firebase.** { *; }
-dontwarn com.google.firebase.**

原来的规则只保留public类,改为**可以覆盖所有层级的类和内部类。

3. 排除Facebook SDK中冲突的Google Play Services依赖

如果版本统一后还是报错,说明Facebook SDK依赖了旧版本的Google Play Services,强制排除它:

implementation('com.facebook.android:audience-network-sdk:4.28.2') {
    exclude group: 'com.google.android.gms'
}

这样项目会强制使用你指定的Google Play Services版本,避免冲突。

4. 尝试升级Facebook Audience Network SDK版本

你当前用的4.28.2版本比较旧,建议升级到和你的Android Support版本兼容的较新版本(比如5.10.0,注意27.1.1的Support库可以兼容这个版本):

implementation 'com.facebook.android:audience-network-sdk:5.10.0'

升级后如果有新的Proguard要求,可以参考Facebook官方文档调整规则,但通常新版本会更好地兼容新的Google Play Services版本。

完成以上调整后,重新构建Release版本,应该就能解决这个报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:56:18