【问题标题】:How to Solve Proguard Issue - ArrayIndexOutOfBoundsException?如何解决 Proguard 问题 - ArrayIndexOutOfBoundsException?
【发布时间】:2019-04-20 20:51:22
【问题描述】:

我正在尝试为我的应用生成 APK。但是在构建编译器之后会抛出一个 java.lang.ArrayIndexOutOfBoundsException

我知道这个错误以编程方式意味着什么。但是如果我将minifyEnabled 禁用为False。然后生成 APK 并且应用程序运行良好。

I saw a similar question here & tried desugaring to false.

但它仍然抛出Process 'command 'C:\Program Files\Android\Android Studio\jre\bin\java.exe'' finished with non-zero exit value 1

我该如何解决这个问题?

【问题讨论】:

标签: java android proguard android-proguard android-r8


【解决方案1】:

我的解决方法是将以下内容添加到我的 proguard-rules.pro 文件中:

-keepnames class com.google.android.gms.** {*;}

Google Play 服务插件中的某些东西导致我出现此错误。

如果这不能为您解决问题,您还可以通过将以下内容添加到您的 proguard-rules.pro 文件中来为您的应用程序包之外的任何内容保留名称:

-keepnames class !com.yourpackage.app.** { *; }

您也许还可以使用它来解决更多问题,以找出导致问题的类。

【讨论】:

  • 是的,如果我设置 -keepnames class com.google.android.gms.** {*;} 就可以构建,但我不喜欢,因为它只保留了该库的所有内容,替代解决方案?
  • @user155 我发现当我更新到 Android Studio 3.4.1 时,问题消失了,我可以删除 -keepnames class com.google.android.gms.** {*;} 我相信在 Android Studio 3.4 中,R8 将 Proguard 替换为默认代码压缩器和混淆器,我认为它解决了这个问题。
  • @Hayden Campbell 我遇到了与 OP 相同的问题,并通过简单地在 gradle.properties (android.enableR8=true) 中启用 R8 来修复它。
猜你喜欢
  • 2012-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 2016-02-15
  • 1970-01-01
  • 2013-06-07
相关资源
最近更新 更多