proguard [java.lang.IllegalGumentException:未签名的短价值的溢出]



gradle ver:3.4.1
JDK VER:1.8
proguard ver:5.3.3
Android Gradle插件2.3。
由于前进,我在构建方面有例外。我也尝试过proguard 5.3.2,但没有成功。

这是我的版本配置

release {
        debuggable false
        android.buildTypes.release.proguardFiles = []
        proguardFile 'proguard-android.txt'
        //minifyEnabled
        shrinkResources true
        signingConfig = signingConfigs.release
    }

以下是exeption

Caused by: java.lang.IllegalArgumentException: Overflow of unsigned short value [95001]
at proguard.classfile.io.RuntimeDataOutput.writeUnsignedShort(RuntimeDataOutput.java:213)
at proguard.classfile.io.ProgramClassWriter$AttributeBodyWriter.visitLineNumberInfo(ProgramClassWriter.java:565)
at proguard.classfile.attribute.LineNumberTableAttribute.lineNumbersAccept(LineNumberTableAttribute.java:171)

ps:我可以使用Android Gradle插件2.2。 我认为使用较低版本的Proguard。

此问题(PGD-681)固定在proguard v6.0中。

但是,Gradle v3.1.0的Android插件仍在使用Proguard v5.3.3。您可以检查运行./gradlew buildEnvironment

classpath
+--- com.android.tools.build:gradle:3.1.0
|    --- com.android.tools.build:gradle-core:3.1.0
...
|         +--- net.sf.proguard:proguard-gradle:5.3.3
|         |    --- net.sf.proguard:proguard-base:5.3.3

因此,您必须手动包含最新版本的proguard:

classpath('com.android.tools.build:gradle:3.1.2') {
    exclude module: 'proguard-gradle'
}
classpath('net.sf.proguard:proguard-gradle:6.0.3') {
    force = true
}

手动将Proguard版本设置为5.2.1

classpath('com.android.tools.build:gradle:2.3.0') {
    exclude module: 'proguard-gradle'
}
classpath('net.sf.proguard:proguard-gradle:5.2.1') {
    force = true
}

参考

最新更新