2017-10-25 10 views
0

私は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クラス(ただし、イタリックフォントで、私はなぜ知らない)

screenshot

私には何かがありますか?

+0

Googleにバグを報告してから、ここにリンクすることはできますか?それはすべてのために役立つだろう、ありがとう! https://issuetracker.google.com/issues/new?component=316045&template=1018787、詳細を見るにはサンプルプロジェクトが必要な場合があります。 – ManmeetP

+1

イタリック体は実際のクラスではなく単なるリファレンスであることを意味します – fede1608

答えて

1

ライブラリーのAndroidManifest.xml内でアプリケーションと同じパッケージ名を使用している場合、データバインディングクラスに対してjava.lang.NoClassDefFoundErrorが発生しました。ライブラリモジュールに異なるパッケージ名を使用してみてください。

関連する問題