我有一个项目正在尝试在将包含的不同应用程序之间共享通用代码。
现在,我只有一个通用模块作为android库,在其中移动了一个片段及其所有链接资源,因此可以在我的主应用程序模块上使用它。
我能够正确显示布局,但是当我尝试将变量绑定到该布局时,出现以下错误:
java.lang.NoSuchFieldError: No field device of type I in class L***/****/common/BR; or its superclasses (declaration of '**.****.common.BR' appears in /data/app/***.****.******-9VGDieZHqLKJUD0xhdmawA==/split_lib_slice_6_apk.apk)
在堆栈跟踪中,此方法会在我的片段生成的数据绑定类上发生问题:
public void setDevice(@Nullable **.***.common.vo.Device Device) {
this.mDevice = Device;
synchronized(this) {
mDirtyFlags |= 0x1L;
}
notifyPropertyChanged(BR.device);
super.requestRebind();
}
具体在此次通话中:notifyPropertyChanged(BR.device)
。
因此,显然,生成的类无法在合并的BR文件中找到BR.device
,但它仍然存在,它是在拆分的APK中找到的...
我不知道这是配置问题还是合并过程中的错误...
任何帮助将不胜感激。
答案 0 :(得分:1)
检查两个模块的软件包名称是否相同。 我有类似的错误,这是由于我的lib模块具有 与我的应用模块相同的软件包名称。
示例:
com.app.example(应用程序模块包名称) com.app.example(lib模块软件包名称)
我改为:
com.app.example(应用程序模块包名称) com.lib.example(lib模块软件包名称)