Android库项目缺少类中的类

时间:2014-11-19 05:55:02

标签: android android-studio android-gradle

我正在尝试创建一个依赖于另一个库模块的android库moduleD,而这又取决于两个库模块。一切似乎都很好,但是当我尝试在应用程序中使用库时,我得到ClassNotFoundException

设置

MyLibrary/
 +-- moduleA
      +-- src/main/java/
           +-- com/example/a

 +-- moduleB
      +-- src/main/java/
           +-- com/example/b

 +-- moduleC
      +-- src/main/java/
           +-- com/example/b
           +-- com/example/c
                `-- MyMissingClass.java <-- MISSING

 +-- moduleD
      +-- src/main/java/
           +-- com/example/b

build.gradle (模块C)

dependencies {
    compile project(':moduleA')
    compile project(':moduleB')
}

build.gradle (模块D)

dependencies {
    compile project(':moduleC')
}

在我的应用程序中,我调用ModuleD调用Module

为了完整起见,我在本地引用了所得到的aars,但我不认为这是问题所在。解压缩moduleD中的classes.jar,我可以看到moduleD的类文件,但不能看到MyMissingClass。

build.gradle (在单独的应用程序项目中)

repositories {
...
    flatDir {
        dirs 'libs'
    }
}
dependencies {
    compile(name:'moduleB', ext:'aar')
}

非解

传递依赖[1] [2]

[1]:How to include dependencies in android library gradle project? [2]:How do I ship an Android Library (aar) with remote dependencies (gradle)?

build.gradle (应用程序)

dependencies {
    compile(name:'moduleD', ext:'aar') {
        transitive true
    }
}

这可能适用于外部依赖项(例如,通过maven,中央或本地可用),并且避免捆绑外部依赖项是有意义的,否则可以单独升级/降级以避免冲突或获取错误修正。但是,模块A-C是项目的内部模块,现在只在这一个库中使用。

问题

是否可以为moduleD创建一个包含所有类的aar(或jar),并且可以在应用程序中实际使用它,因为库项目被分解为单独的模块?

0 个答案:

没有答案