🔑
リリース用AAR作成時のProGuard設定によるランタイムエラー解消について
Android開発において、リリースビルド用のAARを作成した際に、ランタイムエラーが発生することがあります。今回は、ProGuardの設定が原因でクラッシュしたケースとその解決方法を紹介します。
問題のコード
object FooUI {
@Composable
fun showSomeBlock(
foo: String,
onTapBar: (Int) -> Unit,
onTapFizz: (String) -> Unit,
) {
BuzzView(foo, onTapBar, onTapBar)
}
}
問題の発生
リリース用のAARをビルドし、アプリケーションに組み込んだところ、デバッグモードでは正常動作するが、リリースモードではランタイムエラーが発生しました。原因を調査したところ、ProGuardの設定が影響していることが判明しました。
解決策
proguard-rules.proに以下の設定を追加することで問題が解消しました。
-keep class com.foo.bar.buzz.** { *; }
// これがないと、@Composableなどのアノテーションが消えてしまう
-keepattributes *Annotation*
@Composable
アノテーションがProGuardによって消えてしまったみたい
まとめ
ProGuardは繊細
Discussion