読者です 読者をやめる 読者になる 読者になる

`Error:Build-in class shrinker and multidex are not supported yet.`

色々と開発を進めていたところ、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を利用していると認識される」ことが原因だった。