Gradle 의존 충돌 해결 방식 에 대한 자세 한 설명

2556 단어 Gradle의존 충돌
문제.
안 드 로 이 드 개발 에 서 는 버 전 의존 에 관 한 문 제 를 겪 고 있다 고 믿 는 학생 들 이 적지 않다.안 드 로 이 드 스튜디오 는 일반적으로 자동 으로 무 거 운 것 을 도와 주지 만,때때로 무 거 운 것 을 실패 하면 수 동 으로 처리 해 야 한다.여기 서 자신 이 장기 적 으로 만난 각종 문제 의 해결 방식 을 정리 하 다.
효 과 를 보기 편 하도록 gradle 솔 루 션 을 버 전 충돌 시 자동 으로 실패 하 는 것 으로 바 꾸 었 습 니 다.다음 과 같 습 니 다.

configurations.all {
 resolutionStrategy {
  failOnVersionConflict()
 }
}
우리 가 서로 다른 버 전의 rxjava 에 동시에 의존 할 때 컴 파일 은 다음 과 같이 오 류 를 보고 합 니 다.

해결 방안
1.통합 버 전 관리
하나의 procject 아래 에 여러 개의 module 이나 library 가 있 을 때 통 일 된 버 전 관리 방식 을 사용 하기에 적합 합 니 다.
config.gradle 만 들 기
procject 디 렉 터 리 에 config.gradle 파일 을 만 들 려 면 통일 적 으로 관리 해 야 합 니 다.다음 과 같 습 니 다.

ext {
 //Dependencies
 supportLibraryVersion = '25.3.1'
 okHttpVersion = '3.8.0'
 domainTestDependencies = [
   appcompatv7: "com.android.support:appcompat-v7:${supportLibraryVersion}",
   okHttp  : "com.squareup.okhttp3:okhttp:${okHttpVersion}"
 ]
}
procject 의 build.gradle 시작 에 가입 합 니 다.

apply from: "config.gradle"
module 또는 library 참조 버 전

implementation rootProject.ext.dependencies["appcompatv7"]
implementation rootProject.ext.dependencies["okHttp"]
2.충돌 의존 제거
우리 가 인터넷 의 일부 오픈 소스 라 이브 러 리 를 사용 하고 자신의 프로젝트 에 도 서로 다른 버 전 라 이브 러 리 를 사 용 했 을 때 우 리 는 의존 하 는 오픈 소스 라 이브 러 리 에서 exclude 로 중복 을 제거 할 수 있다.
만약 우리 가 의존 하 는 라 이브 러 리 가 com.carlos.test:Test:1.0.0 이 라면 rxjava 와 우리 module 이 서로 다른 버 전 을 사용 했다 면 우 리 는 이렇게 할 수 있 습 니 다.

 implementation ('com.carlos.test:Test:1.0.0') {
  exclude group: "io.reactivex.rxjava2",module: "rxjava"
  // exclude group: "io.reactivex.rxjava2:rxjava:2.1.11"
 }
 implementation 'io.reactivex.rxjava2:rxjava:2.1.13'
group 은 라 이브 러 리 의 groupId 이 고,module 는 artifactId 입 니 다.우 리 는 또한 주석 중의 방법 으로 구체 적 인 버 전 을 직접 지정 할 수 있다.
3.특정 버 전 의존 강제 사용
저희 도 직접 전략 에서 어떤 버 전 의존 을 강제 할 수 있 습 니 다.

configurations.all {
 resolutionStrategy {
  force 'io.reactivex.rxjava2:rxjava:2.1.13'
 }
}
이렇게 하면 rxjava 에 2.1.13 버 전 을 강제로 사용 하도록 하 는 것 이다.
총결산
세 가지 방식 은 각각 다른 장면 이 있 는데 자신 에 게 맞 는 것 이 가장 좋다.만약 에 누락 되 거나 잘못된 것 이 있 으 면 지적 을 환영한다.서로 교류 하고 공 부 했 으 면 좋 겠 어 요.많은 응원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기