【问题标题】:Proguard rules for Jetpack GameActivityJetpack GameActivity 的 Proguard 规则
【发布时间】:2022-11-14 10:23:10
【问题描述】:

我试图在我的项目中使用Jetpack GameActivity,但我遇到了一个奇怪的 Proguard 问题。我的项目有 2 个模块,appmy-lib

  • my-lib 模块有 MyActivity 扩展 GameActivity

    api'androidx.games:games-activity:1.2.1'

  • app 模块具有 MainActivity 扩展自 my-lib 模块的 MyActivity

    实施项目(“:my-lib”)

当我在 Release 构建中构建项目并启用 Proguard 时,我遇到了本机崩溃:

  • Abort message: 'Unable to find method setWindowFlags'

=> 我尝试从我的 APK 中检查 GameActivity 类,setWindowFlags 方法根本不存在,这意味着 Proguard 已将其删除,这就是为什么 GameActivity 库的本机部分找不到该方法并抛出一个错误。

然后,我尝试通过添加这样的 Proguard 规则来修复它:

  • -keep, includedescriptorclasses class com.google.androidgamesdk.GameActivity { *; }

但不幸的是,我遇到了另一个原生崩溃:

  • Abort message: 'Unable to find field left'

=> 为什么会这样?我尝试再次检查 APK,但不知道为什么

无论如何,我该如何处理这种情况? Jetpack GameActivty 是否需要添加 Proguard 规则以保留将由原生部分使用的方法?

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    我遇到了和你一样的问题,我通过在我的 proguard-rules.pro 文件中添加以下行来解决这个问题:

    -keep class com.google.androidgamesdk.** { *; }

    当然,我还有其他与 proguard 相关的错误,所以我不得不添加这些 附加行:

    -keep class androidx.core.graphics.Insets { *; }

    -keep class androidx.core.view.** { *; }

    -keep class org.fmod.** { *; }

    当然,您在构建中会遇到不同的错误,但希望这会对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      • 2019-08-28
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多