Proguard [ java.lang.IllegalArgumentException: 无符号短值溢出 ]
Proguard [ java.lang.IllegalArgumentException: Overflow of unsigned short value ]
Gradle 版本:3.4.1
JDK版本:1.8
Proguard 版本:5.3.3
Android gradle 插件 2.3.+
由于 proguard,我在构建中遇到了异常。我也试过 proguard 5.3.2 但没有成功。
这是我的发布配置
release {
debuggable false
android.buildTypes.release.proguardFiles = []
proguardFile 'proguard-android.txt'
//minifyEnabled
shrinkResources true
signingConfig = signingConfigs.release
}
以下是例外情况
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 版本设置为 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
}
这个问题 (PGD-681) was fixed in Proguard v6.0.
但是,Android Gradle v3.1.0 的插件仍在使用 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
}
Gradle 版本:3.4.1
JDK版本:1.8
Proguard 版本:5.3.3
Android gradle 插件 2.3.+
由于 proguard,我在构建中遇到了异常。我也试过 proguard 5.3.2 但没有成功。
这是我的发布配置
release {
debuggable false
android.buildTypes.release.proguardFiles = []
proguardFile 'proguard-android.txt'
//minifyEnabled
shrinkResources true
signingConfig = signingConfigs.release
}
以下是例外情况
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 版本设置为 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
}
这个问题 (PGD-681) was fixed in Proguard v6.0.
但是,Android Gradle v3.1.0 的插件仍在使用 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
}