Android库项目缺少类中的类

Enr*_*ico 5 android android-studio android-gradle-plugin

我正在尝试创建一个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
Run Code Online (Sandbox Code Playgroud)

build.gradle(模块C)

dependencies {
    compile project(':moduleA')
    compile project(':moduleB')
}
Run Code Online (Sandbox Code Playgroud)

build.gradle(模块D)

dependencies {
    compile project(':moduleC')
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

repositories {
...
    flatDir {
        dirs 'libs'
    }
}
dependencies {
    compile(name:'moduleB', ext:'aar')
}
Run Code Online (Sandbox Code Playgroud)

无解

传递依赖[1] [2]

[1]:如何在android库gradle项目中包含依赖项? [2]:如何发送具有远程依赖项(gradle)的Android库(aar)?

build.gradle(应用程序)

dependencies {
    compile(name:'moduleD', ext:'aar') {
        transitive true
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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