Comments (23)
Caused by: java.lang.ClassNotFoundException: com.yt.mecomponent.databinding.MeFragmentPersoncenterBinding
from ddcomponentforandroid.
看起来像是:module B包含一些界面,module C包含一些databinding的内容,B 依赖于 C,将B打成AAR包给module A使用时,抛出了找不到module C中类的问题?没记错的话,module依赖会按照相对路径遍历下去,将module B打成AAR后,寻找module C的时候是会出现这类问题。
from ddcomponentforandroid.
写了下和这个原本结构类似,也就是在reader和share中加了databinding,componentrelease放了几个导出的模块aar文件,宿主去构建出来的apk就这样。具体该怎么解决呢
from ddcomponentforandroid.
@Anayuta 一般我都会避免多层的module依赖的,MVVM的我用的不多,不确定这种多层的module依赖结构是否能规避。如果确实是要这样的,一般我会把module C打aar包发到仓库,module B 依赖C的包,而不再直接依赖module C。 往往module 依赖 B的包的时候,还要再声明下依赖 C包。 对于打包研究不深。
from ddcomponentforandroid.
那就像这个结构一样,share依赖了service,那样的话不是得把service打包额,这样就比较麻烦了,毕竟service得一直添加接口给其他组件调用啊。
from ddcomponentforandroid.
应该是你说的那样,我把这个项目clone到本地 在share那加了databinding后,导出的aar用在宿主下,运行和上面的异常是一样的
from ddcomponentforandroid.
之前一直没有仔细研究过databinding,不确定是否和他的plugin有关系,晚上抽空研究下看,希望这个问题早日得到解决。
from ddcomponentforandroid.
好。
from ddcomponentforandroid.
我刚才又尝试了一遍,并没有复现这个问题呃。而且我前面说的多层次依赖往往发生于:Module A 依赖了发布到远程仓库的Module B的AAR包,跟当前场景还有一定的差异。
from ddcomponentforandroid.
可能是父类的继承中使用了3个泛型参数<T extends BasePresenter, E extends BaseModel, B extends ViewDataBinding>,使用的是这方式初始化 ,发现ViewDataBinding出现了异常。
public static T getT(Object o, int i) {
Type type = o.getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
try {
return ((Class<T>) ((ParameterizedType) type).getActualTypeArguments()[i]).newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return null;
}
然后把对应的前面2泛型参数去掉了,databinding又出了Didn't find class "android.databinding.DataBinderMapper这个问题~~!。。
from ddcomponentforandroid.
如果说这是这样的话,那可能并不是组件化编译导致的问题。建议你通过runalone单独调试你使用了databinding的Module。另外,一旦你使用了databinding,例如shareComponent,那么appmodule也要申明,否则无法编译通过。
from ddcomponentforandroid.
昨晚单模块是3个泛型参数也是可以的,然后导出的arr包到宿主上就不行。很是奇怪。
from ddcomponentforandroid.
现在一直存在这个问题异常,导出的aar使用了databinding;给宿主app使用。
E/AndroidRuntime: FATAL EXCEPTION: main
Process: net.biaozhun.biaozhun_component, PID: 2122
java.lang.NoClassDefFoundError: Failed resolution of: Landroid/databinding/DataBinderMapper;
at android.databinding.DataBindingUtil.(DataBindingUtil.java:31)
at android.databinding.DataBindingUtil.bind(DataBindingUtil.java:140)
at net.biaozhun.framework_base.base.BaseDataBindingFragment.onCreateView(BaseDataBindingFragment.java:99)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:601)
at net.biaozhun.framework_base.base.BaseActivity.onStart(BaseActivity.java:87)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1254)
at android.app.Activity.performStart(Activity.java:6782)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2839)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2941)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1649)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6475)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1134)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
Caused by: java.lang.ClassNotFoundException: Didn't find class "android.databinding.DataBinderMapper" on path: DexPathList[[zip file "/data/app/net.biaozhun.biaozhun_component-2/base.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_dependencies_apk.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_slice_0_apk.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_slice_1_apk.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_slice_2_apk.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_slice_3_apk.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_slice_4_apk.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_slice_5_apk.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_slice_6_apk.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_slice_7_apk.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_slice_8_apk.apk", zip file "/data/app/net.biaozhun.biaozhun_component-2/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/net.biaozhun.biaozhun_component-2/lib/arm64, /system/lib64, /vendor/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.databinding.DataBindingUtil.(DataBindingUtil.java:31)
at android.databinding.DataBindingUtil.bind(DataBindingUtil.java:140)
at net.biaozhun.framework_base.base.BaseDataBindingFragment.onCreateView(BaseDataBindingFragment.java:99)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:601)
at net.biaozhun.framework_base.base.BaseActivity.onStart(BaseActivity.java:87)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1254)
at android.app.Activity.performStart(Activity.java:6782)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2839)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2941)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1649)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6475)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1134)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:995)
from ddcomponentforandroid.
目前得到所有的组件都使用了databinding,但是暂时没有编译成aar,采用的是第一种组件引用语法,没有遇到问题。你可以试一下采用这种方式。aar的问题我有时间查一下,理论上是不应该出现的
from ddcomponentforandroid.
@mqzhangw 我看了下那gradle,里面依赖的是在componmentrelease文件夹下的aar,所以其他我模块我导出了aar包在那文件夹下供宿主编译时依赖。具体你那使用的第一种组件引用是怎样的?
from ddcomponentforandroid.
使用demo中的依赖的方式吧,直接引用module,目前看这种方式是可以的。发布aar比较麻烦,前提是所有的依赖库都需要发布到maven上才可以,这种只适合已经比较稳定的大型app,中型项目使用第一种方案是最方便的。
from ddcomponentforandroid.
同样遇到这个问题,请问最后解决了吗?怎么解决的
from ddcomponentforandroid.
@LzDocker 模块配置的依赖有问题,检查配置
from ddcomponentforandroid.
@Anayuta 直接引用的时候没有问题,把module当作aar引入的时候报错和上面基本一直,能说下解决的大致方向吗?今天找了一天。。
from ddcomponentforandroid.
@Anayuta 现在楼上维护的那个库还存在这样的问题吗?
from ddcomponentforandroid.
@LzDocker 你那问题很明显databinding 找不到,那么原因就出在打包上,你看看你的gradle的配置。
我用的是2.14.1的,没遇到其他奇葩的问题。库代码也就在那,遇到其他问题也都可以自己调。
from ddcomponentforandroid.
@Anayuta 多谢
from ddcomponentforandroid.
@Anayuta 打包aar时用的gradle版本,buildToolsVersion 以及classpath 'com.android.tools.build:gradle:3.0.0' 这三个地方都要和宿主app的保持保持一直,然后就解决了
from ddcomponentforandroid.
Related Issues (20)
- 项目报错Unable to find a matching configuration of project HOT 11
- android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? HOT 3
- 在实际公司组件化git部署用的哪种方式
- 打包后找不到子组件的类,怎么解决? HOT 1
- 建议
- basicres添加资源后编译失败 HOT 1
- 同时集成Bubly的Tinker1.9.6热修复时,打补丁包失败 HOT 2
- UI 跳转 List 数据的传递怎么使用? HOT 4
- 关于数据传递的问题 HOT 1
- 修改组件文件后,运行app,报错Failed to delete 组件名字\build\intermediates\intermediate-jars\debug\classes.jar HOT 5
- 没明白 AppShareBean不想将一些类下沉如何处理 是如何处理的 HOT 1
- 低版本无法运行的问题 HOT 1
- 低版本无法运行的问题
- 关于组件化dagger android使用相关问题 HOT 2
- gradle 5.1.1 BUG HOT 1
- 模块引入R文件报红
- 组件化,activity之间的共享动画如何处理呀? HOT 1
- 组件化库维护问题
- 依赖包版本compile 'com.android.support:appcompat-v7:26.+'
- 框架不支持App Bundle
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ddcomponentforandroid.