안드로이드 Gradle 추가 외부 라이브러리고 중첩된 외부 라이브러리 프로젝트
-
20-12-2019 - |
문제
은 어떻게 추가하는 외부 라이브러리고 중첩된 외부 라이브러리는 안드로이드 프로젝트가 있습니까?
내 프로젝트 구조(를 변경할 수 없)
- 앱/
- A p p1/
- 니다.gradle
- 설정합니다.gradle
- 라이브러리/
- library1/
- 니다.등급
- 설정합니다.gradle
- library2/
- 니다.등급
- 설정합니다.gradle
- library3/
- 니다.등급
- 설정합니다.gradle
- library4/
- 니다.등급
- 설정합니다.gradle
- library1/
- A p p1/
A p p1
A p p1/니다.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 {
...
}
A p p1 하지 않는 직접에 따라 달라집 library3
나 library4
, 그러나,그것은 불평하지 않는 경우에 포함하의 종속성 build.gradle
파일 settings.gradle
파일입니다.그래서 나는 그들이 포함되어 있를 중지에서 불만을 제기하였습니다.
A p p1/설정합니다.gradle
include ':'
include '..:libraries:library1'
include '..:libraries:library2'
include '..:libraries:library3'
include '..:libraries:library4'
library1
library1/니다.gradle
buildscript {
...
}
apply plugin: 'android-library'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':..:library3')
compile project(':..:library4')
}
android {
...
}
library1/설정합니다.gradle
include ':'
include '..:library3'
include '..:library4'
library2..4
library2..4/니다.gradle
buildscript {
...
}
apply plugin: 'android-library'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
android {
...
}
library2..4/설정합니다.gradle
include ':'
하려고 할 때 gradlew clean build
에 App1
나는 다음과 같은 오류가:
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
파일입니다.
은 어떻게 추가하는 외부 라이브러리고 중첩된 외부 라이브러리는 안드로이드 프로젝트가 있습니까?
해결책
에서 최고 수준의 설정입니다.gradle(a p p1/설정합니다.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')
을 제거 기타 설정을 수정할 수 있습니다.gradle 파일,당신은 그들이 필요하지 않
그런 다음에 각 구축하는 스크립트 사용하기만 하면 됩니다
compile project (':library1')
compile project (':library2')
etc....
위에 설명된 대로 그냥 하나를 사용하여 설정합니다.gradle 파일에서 루트로젝트(a p p1).
에서 다음의 a p p1 폴더에 실행 gradlew clean :library1:build
는지 확인하려 library1 은 건물습니다.
로에 대한 문제에 대 a p p1 에 대해 불평하고 누락된 라이브러리 3&4,당신은 확신이 없 코드에 직접 응용 프로그램을 참조하는 이 라이브러리,또는 또는 라이브러리를 찾을 수 없을 때 컴파일 library1.건축 라이브러리를 개별적으로 검증은 그들 모두 구축 ok.
다른 팁
질문 하나입니다.당신은 당신이 의존성 트리?
--- App
|--- Library 2
|--- Library 1
|--- Library 3
|--- Library 4
그렇다면,당신의 응용 프로그램을 필요로하지 않을 가져올 라이브러리의 3 및 4.이 종속성을 사용할 수 있는 라이브러리 1.
에 대한 설정입니다.gradle 파일이 있습니다.왜 하나에서 각 모듈?이 파일은 사용되는 루트에서 프로젝트(같은 이 작업 영역)를 참조하 모듈(응용 프로그램,1 라이브러리,라이브러리 2,etc...)
당신이 필요하십니까?
내가 이것을 하기 위한 상대적인 경로:
include '..:ambilWarna'
include '..:excel'
include '..:pdfjet'
include '..:commons'
include '..:volley'
include ':odb2'
include ':azure'
include ':carBase'
include ':fuelTrackerLib'
include ':comsourcecastlelogbook'