我目前正在构建一个Android应用程序,其中包含我的主应用程序,并且我有一个主应用程序使用的Android库。
在我的库中,我使用使用gradle编译的特定Android库,如下所示:
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
然后我使用Gradle将我的库再次添加到主应用程序中,如下所示:
compile(group: 'my.apps.package.name', name: 'app', version: "1.0.0")
Rx库仅用于Android库,而不是主应用程序,但是当我运行主应用程序时,我收到以下错误:
引起:java.lang.ClassNotFoundException:没找到类 " io.reactivex.Observable"在路径上:DexPathList ...
要解决这个问题,我必须将Rx库添加到我的主应用程序gradle文件以及我的库Gradle文件中,但这似乎不对,我必须在我的库中错误地声明依赖项吗?任何人都能指出我正确的方向来实现这一目标吗?
问:你使用MultiDex吗? 答:是的,已启用 // Enabling multidex support.
multiDexEnabled true
答案 0 :(得分:2)
问题在于您尝试包含库的方式。
compile(group: 'my.apps.package.name', name: 'app', version: "1.0.0")
通过这种方式,外部依赖关系无法正确解析并包含在DexPath中。
你应该使用更简单的方法,
compile project(':yourlibname')
这将告诉Gradle正确编译模块及其所有外部依赖项。