Подтвердить что ты не робот

Транзитивные зависимости для локальной aar-библиотеки

Мы создаем некоторую библиотеку, в основном для нашего API, что облегчит жизнь нашим внешним разработчикам.

Итак, мы создали новый проект библиотеки и добавили Retrofit и некоторые другие библиотеки в качестве зависимостей.

dependencies {
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile 'com.google.code.gson:gson:2.6.2'
    compile 'com.squareup.retrofit2:retrofit:2.0.1'
    compile 'com.squareup.retrofit2:converter-gson:2.0.1'
    compile 'com.squareup.okhttp3:okhttp:3.2.0'
}

Теперь, когда мы его создаем, он создает файл aar.

Но теперь, когда мы помещаем файл aar в каталог libs и устанавливаем его как зависимость, нам все равно придется поместить ту же зависимость в файл пользователя build.gradle, который отстой. Он должен быть взят из библиотеки, не так ли?

repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile(name: 'ourlibrary', ext: 'aar') {
        transitive = true;
    }
}

Как сделать transitive = true работать?

4b9b3361

Ответ 1

Файл aar не содержит вложенных (или transitive) зависимостей и не имеет файла pom, который описывает зависимости, используемые библиотекой.

Это означает, что если вы импортируете файл aar с помощью ретрансляции flatDir, вы должны указать зависимости также в своем проекте.

В вашем случае добавление transitive=true не разрешает вашу проблему по причине, описанной выше.

Вам следует использовать хранилище maven (вы должны публиковать библиотеку в частном или публичном репозитории maven), у вас не будет такой же проблемы.
В этом случае gradle загружает зависимости, используя файл pom, который будет содержать список зависимостей.