Транзитивные зависимости для локальной библиотеки 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'
}

теперь, когда мы строим его, он производит .

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

repositories {
    flatDir {
        dirs 'libs'
    }
}

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

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

1 ответов


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

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

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

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