※ Built-in Shrinkerは、Android Gradle Plugin 3.3からR8に置き換わりました。
問題
Built-in Shrinkerを有効にしてビルドしたときになぜか
> ProGuard configuration parser error: ~\app\proguard-rules.pro line 35:21 no viable alternative at input ','
こんなビルドエラーが表示されました。
useProguard true
は問題ないので、proguard-rules
の記述は間違っていないはず…
ちなみに発生環境はAndroid Studio 3.1.4
です。
(この問題自体をShrinkerを諦めることで長らく放置してたので、3.1.0でも起きると思います。)
なおった
結論だけ言うと、proguard定義の
-keepmembernames,allowobfuscation
はダメで
-keepmembers,allowshrinking,allowobfuscation
なら通ります。
「,
is 何?」みたいなパースエラーが吐かれますが、嘘です。
allowshrinking
オプションを省略記述にした上でallowobfuscation
オプションを使うとエラーになります。1
僕の場合、ライブラリが公開しているproguard定義をそのまま書いたら、この記述を使っていてShrinkerがエラーになっていました。
-
-keep*names
は-keep*s,allowshrinking
の省略です。-keepmembernames
は-keepmembers,allowshrinking
の省略にあたります。 ↩