Android构建错误:属性签名需要InnerClasses属性。检查-keepattributes指令

Dan*_*ele 6 android android-gradle-plugin android-proguard

尝试在发布模式下构建应用程序时遇到此错误。

错误:属性签名需要InnerClasses属性。检查-keepattributes指令

我的proguard-rules.pro行看起来像这样:

-keepattributes Signature
Run Code Online (Sandbox Code Playgroud)

编译器指的是什么InnerClasses?我要省略什么?

kj0*_*007 12

签名(Java 8或更高版本)仅适用于Java 8或更高版本以及InnerClasses(Java 5或更高版本),因此请检查您的Android Studio是否使用Java SDK版本。请使用以下设置更新您的Proguard配置

将此行添加到您的proguard-rules.pro文件:

-keepattributes InnerClasses
Run Code Online (Sandbox Code Playgroud)

内部类(Java 5或更高版本)

指定一个类及其内部类和外部类之间的关系。除此以外,在内部类和外部类的名称之间使用“ $”分隔符的命名约定之外,内部类与普通类一样。编译器可能需要此信息才能找到已编译库中引用的类。代码可以通过反射来访问此信息,例如以得出类的简单名称。

签名(Java 8或更高版本)

指定类,字段或方法的通用签名。编译器可能需要此信息来正确地编译使用已编译库中泛型类型的类。代码可以通过反射访问此签名。

有关更多详细信息-keepattributes和您可以应用的更多设置,请参见下面的链接。

Proguard选项