안녕하세요!
오늘은 제가 삽질했던 오류 해결법을 올려드리려고 합니다
ZipException은 Gradle에서 라이브러리를 추가할 때 가끔 발생하는 오류인데요
라이브러리 안에 같은 모듈이 중복되어 생기는 오류입니다.
보통 서드파티 라이브러리에서 구글 gms 등을 포함하여 충돌나는 경우가 많습니다.
다음과 같이 해결할 수 있습니다!
compile ('패키지 이름'){
exclude group: 'com.google.android.gms'
}
이렇게 하면 해당하는 패키지에 gms를 제외하고 컴파일되게 되어 충돌을 막을 수 있습니다.
하지만 저는 특수한 케이스에 부딪혔습니다!
기존 앱에 '파이어베이스'를 연동한 상태에서 '구글 플레이 게임' 을 연동하기 위해
BaseGameUtils를 모듈로 추가했었는데요
이때 zip exception com/google/android/gms/internal/z~~~.class 오류가 발생되어 고통을 받았었습니다.
이 해결법을 알려드리겠습니다!!
build.gradle(Module: BaseGameUtils) 에는 다음과 같이 선언되어있습니다.
if (!project.hasProperty('gms_library_version')) {
ext.gms_library_version = '8.4.0'
}
compile "com.google.android.gms:play-services-games:${gms_library_version}"
compile "com.google.android.gms:play-services-plus:${gms_library_version}"
제 build.gradle(Module: app) 에는 파이어베이스가 다음과 같이 선언되어 있었습니다.
compile 'com.google.firebase:firebase-core:10.0.1'
compile 'com.google.firebase:firebase-ads:10.0.1'
여기서 app의 파이어베이스에도 gms가 포함되어있었고, BaseGameUtils에도 gms가 포함되어 충돌이 일어났었는데요!
모듈이 달라 디버깅하기 쉽지 않았었습니다...
따라서 다음과 같이
compile "com.google.android.gms:play-services-games:10.0.1"
compile "com.google.android.gms:play-services-plus:10.0.1"
build.gradle(Module: BaseGameUtils) 의 버전을 맞춰주시면 아름답게 컴파일 되는 것을 확인할 수 있습니다!
저와 같은 고통을 받지 않으셨으면 좋겠습니다.
감사합니다!
'안드로이드' 카테고리의 다른 글
안드로이드 - Retrofit 2를 이용한 RestAPI 통신하기 (18) | 2016.08.25 |
---|---|
안드로이드 - 카카오톡 로그인 연동 part 3 (9) | 2016.01.26 |
안드로이드 - 카카오톡 로그인 연동 part 2 (3) | 2016.01.26 |
안드로이드 - 카카오톡 로그인 연동 part 1 (4) | 2016.01.26 |