Android库 - 需要在库和主应用程序中添加编译库吗?

时间:2017-03-16 12:07:05

标签: android android-studio gradle android-gradle

我目前正在构建一个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

1 个答案:

答案 0 :(得分:2)

问题在于您尝试包含库的方式。

compile(group: 'my.apps.package.name', name: 'app', version: "1.0.0")

通过这种方式,外部依赖关系无法正确解析并包含在DexPath中。

你应该使用更简单的方法,

 compile project(':yourlibname')

这将告诉Gradle正确编译模块及其所有外部依赖项。