2017-10-25 4 views
0

저는 인스턴트 앱을 지원하기 위해 프로젝트를 재구성하여 3 가지 모듈로 프로젝트를 분할했습니다. 내 인스턴트 응용 프로그램을 성공적으로 배포했지만 두 번의 테스트를 거친 후에 데이터 바인딩을 사용하는 하나의 작업에서 충돌이 발생했습니다.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

,369 (왜 그러나 이탤릭체에, 나도 몰라)

내가 빠진 것이 있습니까?

+0

Google에 버그를 신고 한 다음 여기에 다시 연결할 수 있습니까? 모두에게 도움이 될 것입니다, 감사합니다! https://issuetracker.google.com/issues/new?component=316045&template=1018787 그리고 더 자세히 살펴 보려면 샘플 프로젝트가 필요할 수도 있습니다. – ManmeetP

+1

이탤릭체는 실제 클래스가 아닌 단지 참조 인 것을 의미합니다. – fede1608

답변

1

라이브러리에서 AndroidManifest.xml 내에서 동일한 패키지 이름을 앱으로 사용하고 데이터 바인딩 클래스에 java.lang.NoClassDefFoundError가 발생하면 발견되었습니다. 라이브러리 모듈에 다른 패키지 이름을 사용해보십시오.

관련 문제