私は3つのモジュールでプロジェクトを分割するインスタントアプリケーションをサポートするためにプロジェクトを再構成しました。私はインスタントアプリケーションを正常にデプロイしましたが、いくつかのテストの後、データバインディングを使用する1つのアクティビティでクラッシュが発生しました。NoClassDefFoundErrorは、ベースモジュールのデータバインディングクラスの解決に失敗しました
私はDataBindingがベースフィーチャでのみサポートされていることを認識しています。そのため、参照するクラスとベースモジュールのレイアウトがあります。 また、ProGuardのルールを追加してデータバインディングクラスを維持しました。
FATAL EXCEPTION: main Process:
com.yopapp.yop, PID: 5516 java.lang.NoClassDefFoundError: Failed resolution of:
Lcom/yopapp/yop/databinding/CardViewItemHeaderBinding;
at com.yopapp.yop.a.j.a(DealDetailAdapter.java:258)
at com.yopapp.yop.a.j.onCreateViewHolder(DealDetailAdapter.java:51)
at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:6493)
at android.support.v7.widget.RecyclerView$Recycler.a(RecyclerView.java:5680)
ProGuardのルール:
-dontwarn android.databinding.**
-keep class android.databinding.** { *; }
-dontwarn com.yopapp.yop.databinding.**
-keep class com.yopapp.yop.databinding.** { *; }
また
私はAPKを分析する場合、私はcom.yopapp.yop.databindingパッケージを見ることができます。ここで
は、クラッシュのスタックトレースですCardViewItemHeaderBindingクラス(ただし、イタリックフォントで、私はなぜ知らない)私には何かがありますか?
Googleにバグを報告してから、ここにリンクすることはできますか?それはすべてのために役立つだろう、ありがとう! https://issuetracker.google.com/issues/new?component=316045&template=1018787、詳細を見るにはサンプルプロジェクトが必要な場合があります。 – ManmeetP
イタリック体は実際のクラスではなく単なるリファレンスであることを意味します – fede1608