본문 바로가기
공부하는 하스씨/안드로이드

지긋지긋한 버전 충돌... 망할 구글

by 박하스. 2017. 10. 18.
728x90
반응형

http://sseyoung513.blog.me/221069549509


http://blog.naver.com/sseyoung513/221064260156



0. 오류 내용


안드로이드 예제를 따라하다가, 메니페스트 파일에서 오류가 났다.

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 26.0.0-alpha1, 25.2.0. Examples include com.android.support:animated-vector-drawable:26.0.0-alpha1 andcom.android.support:mediarouter-v7:25.2.0 less... (Ctrl+F1) There are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your targetSdkVersion.)

1. 오류가 나게 된 상황

안드로이드 구글 맵 예제 따라하려고
Google Play service를 추가하기 위해서
Project Structure(ctrl + alt + shift + s) 가서 library dependency를 추가하였다.
그 후에 오류가 생겼다.


com.google.android.gms:play-services:11.0.4 가 최신이길래 추가했다.

2. 오류 이유

외부 라이브러리가
내가 명시하지 않은(명확히 적어두지 않은)
support 라이브러리를 참고해서

명시한 support 라이브러리와
버전이 다르다
는 것이다.

나의 경우는
Google Play service가 추가되면서
이러한 버전 충돌이 일어난 것이다.

3. 오류 해결

1) Gradle dependency report를 실행하여, dependency의 full tree를 확인한다.
    - 안드로이드 스튜디오의 Terminal을 연다.
    - gradlew -q dependencies app:dependencies --configuration compile      를 붙여 넣고 enter.
    - ctrl+f로 버전 안 맞던 라이브러리를 검색한다.
    - 나의 경우 이 방법으로 mediarouter가 내가 추가한 play-service 아래 있고, 버전이 업데이트가 안 되고 25.2.0을 쓴다는 것을 
      알 수 있다.
    - '->' 표시는 업데이트된 버전을 가리킨다.


2) 메니페스트 파일에 dependency 추가
    - 1)에서 트리보니 mediarouter 하위, appcompat가 26.0.0-alpha이기에 이걸로 통일시켰다.
       (형광펜 부분 추가)
     - 
만일 위 방법이 안 통하면 해당하는 버전이 없는 것이므로, 버전을 전체적으로 낮추거나 disable해야 한다고 한다.



4. 참고 사이트


728x90
반응형