Android Proguard 失败 "Value 'i' is not a reference value"

Android Proguard failing with "Value 'i' is not a reference value"

我最近向我的应用程序添加了一个库('GNSDK' by Gracenote),现在我正在尝试使用 Proguard 构建应用程序以进行发布。我成功构建并安装了应用程序的发布版本一次,但所有后续尝试都会产生此错误:

Unexpected error while evaluating instruction:
 Class       = [com/gracenote/gnsdk/GnManager]   
 Method      = [<init>(Landroid/content/Context;Ljava/lang/String;I)V]
 Instruction = [87] getfield #120
 Exception   = [java.lang.IllegalArgumentException] (Value "i" is not a 
  reference value [proguard.evaluation.value.UnknownIntegerValue])
  Unexpected error while performing partial evaluation:
    Class       = [com/gracenote/gnsdk/GnManager]
    Method      = [<init>(Landroid/content/Context;Ljava/lang/String;I)V]
    Exception   = [java.lang.IllegalArgumentException] (Value "i" is not a reference value [proguard.evaluation.value.UnknownIntegerValue])
  :app:proguardBetaRelease FAILED
  Error:Execution failed for task ':app:proguardBetaRelease'.

Value "i" is not a reference value [proguard.evaluation.value.UnknownIntegerValue]`

我试图强制 proguard 单独离开库(因为这是调试版本和发布版本之间的唯一区别):

-keep class com.gracenote.** {
    *;
}

不过好像没什么区别。

关于如何调试或追踪此错误的任何提示?我不确定为什么 com.gracenote.gnsdk.GnManager 的构造函数会失败。该错误听起来像是获得了无效的 输入

我正在使用 Android Studio 1.4,构建工具 23.0.0。

我发现这是 Proguard 中的错误:https://sourceforge.net/p/proguard/bugs/573/

看起来很快就会发布。同时,您可以通过添加以下内容来变通:

-optimizations !class/unboxing/enum

到你的混淆文件。

就其价值而言,我发现这是一个 java 项目。当它应该是 1.9 时,我是 运行 proguard 目标 1.8。一旦我改变它就起作用了。