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

Jetpack GameActivity集成ProGuard引发Native崩溃的问题求助

解决Jetpack GameActivity的ProGuard Native崩溃问题

问题根源

ProGuard混淆时会移除未被Java代码直接引用的方法和字段,但GameActivity的Native层是通过JNI/反射调用这些成员的,ProGuard无法识别这类调用关系,导致必要的方法和字段被误删,引发Native崩溃。

解决方案

不要仅针对单个类写局部规则,直接添加完整的ProGuard配置来保留GameActivity及其关联类的所有成员:

  1. 在app模块的proguard-rules.pro中添加以下规则:
# 保留Jetpack GameActivity相关类的所有成员,确保Native层调用正常
-keep class androidx.games.** { *; }
-keep class com.google.androidgamesdk.** { *; }

# 兜底规则:保留所有包含native方法的类及其方法,覆盖其他JNI相关混淆问题
-keepclasseswithmembernames class * {
    native <methods>;
}
  1. 确认模块依赖传递:
    my-lib中使用api 'androidx.games:games-activity:1.2.1'的配置是正确的,能让app模块继承该依赖的默认配置(包括官方ProGuard规则);如果默认规则未生效,手动添加上述规则即可覆盖。

为什么之前的规则无效?

你之前仅保留了com.google.androidgamesdk.GameActivity类的成员,但Native层还会调用该类继承的父类方法、内部类字段(比如报错中的left字段可能属于GameActivity内部依赖的辅助类),或是androidx.games包下的关联类,局部规则无法覆盖这些场景。

额外验证步骤

构建Release版本后,可通过Android Studio的APK Analyzer查看com.google.androidgamesdk.GameActivity及相关类的成员,确认方法和字段未被移除;若仍有崩溃,根据报错信息定位字段/方法所属类,针对性补充-keep规则。

内容的提问来源于stack exchange,提问作者L.Nam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:01:06