2017-12-03 26 views
0

나는 안드로이드 라이브러리에 의존성을 포함시키는 것을 가장 잘 다루는 방법을 모르며 다른 곳에서는 명확한 설명을 찾을 수 없다. 이 같은 종속 관계를 포함하는사용자 지정 라이브러리 : 종속성을 처리하는 방법?

compile 'com.android.support.constraint:constraint-layout:1.0.2' 
compile 'com.android.support:appcompat-v7:25.3.1' 
compile 'com.android.support:design:25.3.1' 
compile 'com.android.support:support-v4:25.3.1' 
compile 'com.android.support:recyclerview-v7:25.3.1' 

compile 'com.squareup.okhttp3:okhttp:3.9.0' 
compile 'com.github.bumptech.glide:glide:4.1.1' 
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1' 

이 "좋은 연습"이다 :

나는이 종속성을 포함하는 안드로이드 라이브러리를 만들었습니다? 내 라이브러리가 앱에 포함되어 있고 앱 자체에 동일한 종속성이 포함되어 있으면 어떻게됩니까? 이러한 "중복"종속성은 어떻게 처리됩니까?

라이브러리를 사용하는 앱에 동일한 종속성이 포함될 가능성이있는 경우 Android 라이브러리에 종속성을 포함시키는 가장 좋은 방법은 무엇입니까?

답변

4

은 중복을 피하기 위해 (빌드에 문제가 발생할 수 있으므로) 각 프로젝트 build.gradle에 exclude 절을 추가 할 수 있습니다. 예를 들어

:

compile('com.github.bumptech.glide:glide:4.1.1') { 
    exclude group: 'com.android.support', module: 'support-v4' 
} 

기본 동작은 요청 의존성의 최신 버전에 정착하는 것입니다 - 최신 가장 높은 버전 번호를 의미한다.

당신이 중복이있는 경우 명령과 함께 트리에 라이브러리 종속성을 시각화 할 수 있습니다 확인하려면

:

gradlew -q dependencies yourProject:dependencies --configuration compile 

당신은 more information here

+0

감사를 찾을 수 있습니다. 내 라이브러리를 사용하는 앱이 내 라이브러리에 포함 된 앱과 동일한 종속성을 가질 지 여부는 알 수 없기 때문에 내 종속성에 대해 '제외'를 사용하면 앱에 내 종속성을 사용하게됩니다. 앱에 포함되어있는 경우 최신 버전을 사용하십시오. –