Android Grayleは、外部ライブラリとプロジェクトへのネストされた外部ライブラリを追加する

StackOverflow https://stackoverflow.com//questions/21001232

質問

Androidプロジェクトに外部ライブラリとネストされた外部ライブラリを追加する方法は?


私のプロジェクト構造(変更できません)

  • アプリ/
    • app1 /
      • build.gradle
      • settings.gradle
    • ライブラリ/
      • library1 /
        • build.grade
        • settings.gradle
      • library2 /
        • build.grade
        • settings.gradle
      • 図書館3 /
        • build.grade
        • settings.gradle
      • library4 /
        • build.grade
        • settings.gradle

APP1

app1 / build.gradle

buildscript {
    ...
}

apply plugin: 'android'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':..:libraries:library1')
    compile project(':..:libraries:library2')
    compile project(':..:libraries:library3')
    compile project(':..:libraries:library4')
}

android {
    ...
}
.

app1は、library3またはlibrary4に直接依存しませんが、build.gradleファイルとsettings.gradleファイルの依存関係に含めていない場合はコンパルします。だから、私は彼らが文句を言うのを止めるためだけに含まれています。

app1 / settings.gradle

include ':'
include '..:libraries:library1'
include '..:libraries:library2'
include '..:libraries:library3'
include '..:libraries:library4'
.


ライブラリー1

library1 / build.gradle

buildscript {
    ...
}

apply plugin: 'android-library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':..:library3')
    compile project(':..:library4')
}

android {
    ...
}
.

library1 / settings.gradle

include ':'
include '..:library3'
include '..:library4'
.


ライブラリー2..4

library2..4 / build.gradle

buildscript {
    ...
}

apply plugin: 'android-library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    ...
}
.

library2..4 / settings.gradle

include ':'
.


gradlew clean buildApp1を作成しようとすると、次のエラーが発生します。

FAILURE: Build failed with an exception.

* Where:
Build file '/home/user/projects/branches/branch1/Apps/libraries/library1/build.gradle' line: 15

* What went wrong:
A problem occurred evaluating project ':..:library:library1'.
> Project with path ':..:library3' could not be found in project ':..:library:library1'.
.

行15はcompile project(':..:library3')ファイルのlibrary1/build.gradleです。

Androidプロジェクトに外部ライブラリとネストされた外部ライブラリを追加する方法は?

役に立ちましたか?

解決

最上位設定。グラードル(app1 / settions.gradle)ファイルライブラリごとにこのようなものをしてください

include ':library1'   
include ':library2'   
include ':library3'   
include ':library4'   

project(':library1').projectDir = new File(rootProject.projectDir, '../libraries/library1')
project(':library2').projectDir = new File(rootProject.projectDir, '../libraries/library2')
project(':library3').projectDir = new File(rootProject.projectDir, '../libraries/library3')
project(':library4').projectDir = new File(rootProject.projectDir, '../libraries/library4')
.

他の設定。グラードルファイルを削除する必要はありません

各ビルドスクリプトでは、

を使用する必要があります。
compile project (':library1')
compile project (':library2')
etc....
.

上記のように、ルートプロジェクトで単一の設定。

あなたのApp1フォルダからgradlew clean :library1:buildを実行して、ライブラリ1が正しく構築されていることを検証します。

App1についての問題は欠けているライブラリ3と4を不満に適用する3&4に、これらのライブラリを直接参照しているアプリにコードがないことを確認してください。すべてのライブラリを個別に構築して、それらすべてをビルドしてください。

他のヒント

1つの質問。 あなたはこの依存関係の木が必要ですか?

--- App
   |--- Library 2
   |--- Library 1
       |--- Library 3
       |--- Library 4
.

YESの場合、アプリはライブラリ3と4のインポートは不要です。これらの依存関係はライブラリー1を介して入手できます。

settings.gradleファイルについて。それぞれのモジュールの中の理由このファイルは、モジュールを参照するためにルートプロジェクト(Eclipseワークスペースのような)でのみ使用されます(アプリ、ライブラリ1、ライブラリ2など)

これはあなたを助けますか?

相対パスにこれをやっています:

include '..:ambilWarna'
include '..:excel'
include '..:pdfjet'
include '..:commons'
include '..:volley'


include  ':odb2'
include  ':azure'

include ':carBase'
include ':fuelTrackerLib'
include ':comsourcecastlelogbook'
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top