web-dev-qa-db-ja.com

ローカル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を機能させる方法は?

30
Pitel

aarファイルには、ネストされた(または transitive )依存関係が含まれていませんおよびライブラリで使用される依存関係を記述するpomファイルがありません。

つまり、flatDirリポジトリを使用してaarファイルをインポートする場合は、プロジェクトでも依存関係を指定する必要があります。

あなたの場合、transitive=trueを追加しても、上記の理由で問題は解決しません。

mavenリポジトリを使用する必要があります(プライベートまたはパブリックmavenリポジトリでライブラリを公開する必要があります)、同じ問題は発生しません。
この場合、gradleは依存関係リストを含むpomファイルを使用して依存関係をダウンロードします。

54