我刚刚重组了项目,以支持即时应用程序,将项目分为3个不同的模块。我已经成功部署了Instant App,但是经过几次测试,我发现使用数据出价的一项活动发生了崩溃。

我知道DataBinding仅在基本Feature中受支持,因此我有引用它的类和基本模块中的布局。
我还添加了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类(但使用斜体字体,我不知道为什么)

java - NoClassDefFoundError无法解析基本模块中的数据绑定(bind)类-LMLPHP

我有什么想念的吗?

最佳答案

我发现如果您在库中的AndroidManifest.xml中使用与您的应用相同的包名称,则数据绑定类会发生java.lang.NoClassDefFoundError。尝试对库模块使用其他软件包名称。

07-24 09:46
查看更多