android - Proguard [ java.lang.IllegalArgumentException : Overflow of unsigned short value ]

标签 android proguard

Gradle 版本:3.4.1
JDK 版本:1.8
混淆器版本: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
    }

以下是异常(exception)情况

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.+ 进行构建,我认为它使用的是较低版本的混淆器。

最佳答案

此问题 ( PGD-681 ) 已在 Proguard v6.0 中修复.

但是,Android Plugin for 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

所以你必须手动包含最新版本的混淆器:

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

关于android - Proguard [ java.lang.IllegalArgumentException : Overflow of unsigned short value ],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46200033/

相关文章:

android - Crashlytics:使用构建服务器发布和上传 Android 应用程序的分发

android - 如何完全关闭proguard?

android - 在操作栏上显示返回按钮

android - 我怎样才能让我的按钮在 radiogroup 上居中?

android - 如何在自定义适配器中更改可绘制形状的背景颜色

android - 缩小 Android 应用程序但不要混淆它

reference - 可以使用 proguard 跨多个 gradle 模块进行混淆吗?

android - proguard-android.txt 和 proguard-rules.pro 有什么区别? - 安卓

java - 如何操作位图中的像素?

android - 当 BottomAppBar 从隐藏状态返回时,BottomAppBar FabCradleMargin 变得越来越小,几乎是平的