NoClassDefFoundError在基本模块中解析数据绑定类失败

时间:2017-10-25 13:26:30

标签: java android data-binding android-instant-apps

我刚刚重组了我的项目,以便支持即时应用,将我的项目分成3个不同的模块。我已经成功部署了我的即时应用程序,但经过几次测试后,我注意到一个使用数据绑定的活动发生了崩溃。

我知道只有基本功能支持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

我有什么遗失的吗?

1 个答案:

答案 0 :(得分:1)

我发现如果您在库中的AndroidManifest.xml中使用相同的包名称作为您的应用程序,那么您的数据绑定类会出现java.lang.NoClassDefFoundError。尝试为库模块使用不同的包名称。