色々と開発を進めていたところ、64K問題に引っかかってしまったので Multidexを有効にしたら以下のエラーに遭遇してしまった。
Error:Build-in class shrinker and multidex are not supported yet.
文字通り build-in class shrinker と multidex は同時使用できないよという話なんだけど、build-in class shrinkerを使うようにした覚えはない。
結果から言えば 「useProguard false
を明示的に呼ばない」だけで解決した。
proguard設定を作っていけば build-in class shrinker でもいいんだけれど、そうもいかない場合のために原因を一応探しておいたのでメモ。
まず、build-in class shrinkerを使うためには以下のAND条件を満たす必要があると思っていた。
- useProguard == false
- minifyEnabled == true
ところがそれは build-in class shrinkerによるcode minifyingを行わない状態になる、というだけであり、build-in class shrinker自体はavailableになるようだ。 このエラーはminifyする/しないを判定する以前に吐かれるらしいので、build-in class shrinkerがavailableなだけで駄目だったというわけ。
つまり「明示的にuseProguardをfalseに設定した時点で、minifyEnabledの値に関わらずbuild-in class shrinkerを利用していると認識される」ことが原因だった。