프로젝트에서 하나의 라이브러리를 만들고 싶습니다. 프로젝트는 많은 의존성과 리소스를 사용합니다. cardview를 jar로 가져 오면 해당 태그와 함께 리소스가 없지만 aar로 추가되면 다른 모듈로 추가됩니다. 그래서 그것을 하나의 aar 라이브러리에 결합 할 수는 없습니다. 내 프로젝트를 저장소에 제출하고 싶지 않습니다. 미리 라이브러리를 구축 할 수 있습니까?어떻게 서로 다른 모듈을 결합하여 단일 라이브러리를 만들 수 있습니까?
답변
android-fat-aar이이 문제를 처리해야합니다.
당신은 GitHub의 저장소에서
apply from: 'fat-aar.gradle'
해야하고 다음 포함 의존하여 컴파일 종속성을 대체합니다. 당신이 가진 것 때문에 그래서 그 대신
dependencies {
compile project(':otherModule')
}
같은 모듈 otherModule
의존성을 definining의 경우에만 는 구성이 포함 구성에 따라 컴파일
dependencies {
embedded project(':otherModule')
}
로 정의해야 할 것 같은 행동은 이전처럼 지역적으로 비슷합니다.
그러나 이것은 특히 Android 지원 라이브러리를 사용하려는 경우 문제가되는 구성입니다. 중복 문제가 발생할 가능성이 큽니다. 더 나은 사용하는 데 필요한 라이브러리 아티팩트의 사본과 함께 Local Maven repository
repositories {
mavenLocal()
}
를 사용하는 것을 고려
오프라인 작업이 설정을 만드는 경우
. 또는 자신과 다른 사람이 필요로하는 개인 관리 저장소 일 수도 있습니다.모듈을 라이브러리 (소스, AAR을 컴파일하지 않음)로 사용할 수 있다는 것을 알고 있습니까? 이것은 라이브러리 프로젝트가 모든 gradle 종속성을 사용할 수 있음을 의미합니다. 다음은 'MyApiLibrary'라는 라이브러리 프로젝트의 예이며 'api'라는 독립 실행 형 모듈입니다.
먼저 라이브러리를 새 프로젝트로 만듭니다 (이 예에서는 모듈 이름이 'api'이지만 이름은 당신이 좋아하는 것이 무엇이든지). 해당 라이브러리 모듈에 대한 Gradle을 파일에서 는 일반적으로 또한 라이브러리 모듈은 Gradle을 파일의 defaultConfig
에 applicationId
를 선언하지 않도록 응용 프로그램 플러그인을
apply plugin: 'com.android.library' //not apply plugin: 'com.android.application'
을 사용 라이브러리 플러그인을 사용합니다. 그런 다음 평상시처럼 모든 라이브러리 종속성을 선언하십시오.
그런 다음 소비 프로젝트에서 설정에 다음을 포함하여 라이브러리를 가져옵니다.Gradle을는 :
당신의 소비 모듈의 Gradle을 파일에서//this first line declares a pseudonym to refer to the library module
include ':api'
//this second line explains where the pseudonym links to
//(the path to the module directory of the library project, relative to the root dir of the current project)
project(':api').projectDir = new File('../MyApiLibrary/api/')
, 종속성으로 프로젝트를 참조 :
dependencies {
...
compile project(':api')
}
주요 프로젝트 라이브러리 프로젝트의 모든 클래스 및 수입 의존성에 액세스 할 수 있습니다 내부에 이제 모든
맞다면 여러 개의 라이브러리 프로젝트가있는 다중 모듈 프로젝트가 있고 모듈과 그 종속성을 포함하는 단일 aar를 컴파일하려고합니다. 일치하는 경우 :
- 설치. - 모듈에 gradle maven 플러그인 (https://github.com/dcendents/android-maven-gradle-plugin)을 적용하십시오. 설치 태스크를 사용하여 모듈을 단일 라이브러리로 설치하십시오.
- 설치된 단일 라이브러리의 모든 버전과 해당 종속성을 가져 오는 새 모듈을 만듭니다. android shade plugin (https://github.com/zawn/android-shade-plugin, documentation here : http://imperceptiblethoughts.com/shadow/)을이 모듈에 적용하십시오. 그 출력은 라이브러리 모듈과 그 종속성을 포함하는 uber-aar 및 aar가됩니다. 이것을 로컬 Maven 인스턴스에 설치할 수도 있고, 응용 프로그램의 libs 디렉토리에 aar 파일을 넣을 수도 있습니다.
현재 구성 파일을 게시 할 수 있습니까? – Adonis
왜 Jar 또는 Aar를 사용하지 않고 com.android.support : cardview-v7 : 25.2.0 '을 컴파일 할 수 있습니까? –