Edited at

リリースビルドがtransformClassesAndResourcesWithProguardForReleaseの時点で失敗する問題

More than 1 year has passed since last update.

Warning: Exception while processing task java.io.IOException: java.lang.IllegalArgumentException: Overflow of unsigned short value [66077]

:app:transformClassesAndResourcesWithProguardForRelease FAILED

こういうのが出てきちゃう方向け。


2017.6.1追記

Gradle Plugin for Android v3.0.0-alpha2ではProguard v5.3.3が採用されていることを確認しました。


tldr;


  • Proguard v5.3.3で直ってるよ

  • Gradle Plugin for Android v2.3.1やv2.4.0-alpha6にはProguard v5.3.2が入ってるから、問題にぶち当たった人は自分で設定してv5.3.3に上げてね


原因

16bitっぽい話なのでmultidexの問題なのかなと思ってしばらく調べていたのですが、どうやら素直にタスク名のとおりにProguardの問題として見ればよかったようです。

同様の問題がProguardのIssueに報告されていました。

本筋の議論が行われていたのは#623のほうだったようです。

既にパッチのやりとりも終わり、修正版のProguard v5.3.3ではこの問題は起こらなくなっています。

ここで問題が。


buildEnvironment

$ ./gradlew buildEnvironment

...
:buildEnvironment

------------------------------------------------------------
Root project
------------------------------------------------------------

classpath
+--- com.android.tools.build:gradle:2.3.1
| \--- com.android.tools.build:gradle-core:2.3.1
| +--- com.android.tools.build:builder:2.3.1
...
| +--- net.sf.proguard:proguard-gradle:5.3.2
| | \--- net.sf.proguard:proguard-base:5.3.2


僕らの手元にはProguard 5.3.3が無い・・・!

Gradle Plugin for Android v2.4.0-alpha6でもProguardのバージョンは同じだったので、たぶんしばらくこのままでしょう。


Proguard 5.3.3を導入する

ないなら入れましょう。


$PROJECT_ROOT/build.gradle

buildscript {

...
configurations.all {
resolutionStrategy {
force 'net.sf.proguard:proguard-gradle:5.3.3'
}
}
}

参考: How to upgrade ProGuard for Android? - Stack Overflow