В проекта на библиотеката на Android липсват класове в aar

Опитвам се да създам библиотека за 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 локално, но не мисля, че това е проблемът. Разархивирайки classes.jar в moduleD, виждам файловете на класовете на moduleD, но не и MyMissingClass.

build.gradle (в отделен проект за приложение)

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

не-Решение

Преходна зависимост[1][2]

[1] : Как да включа зависимости в проекта gradle на библиотеката на Android? [2] : Как да изпратя Android библиотека (aar) с отдалечени зависимости (gradle)?

build.gradle (приложение)

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

Това може да работи за външни зависимости (напр. налични чрез maven, централно или локално) и има смисъл да се избягва групирането на външни зависимости, които иначе биха могли да бъдат надстроени/понижени независимо, за да се избегнат конфликти или да се получат корекции на грешки. Модулите A-C обаче са вътрешни за проекта и засега се използват само в тази библиотека.

Въпрос

Възможно ли е да се създаде aar (или jar) за moduleD, който съдържа всички класове и всъщност може да се използва в приложение, като се има предвид, че проектът на библиотеката е разделен на отделни модули?


person Enrico    schedule 19.11.2014    source източник
comment
Изглежда не: groups.google.com/d/msg/adt- dev/0ZAP8AVUZVw/tJGV69wo9q4J   -  person speedynomads    schedule 14.03.2017