Multiple dex files define Landroid/support/v4 관련된 어쩌구 저쩌구 에러가 발생했을 때의 대처법입니다.

100% 제 환경에서 발생하는 일이였습니다. 먼저 환경을 소개하자면 회사에서 개발하는 안드로이드 (Android) 프로젝트인데 전부 환경이 달라서 문제가 발생했습니다.

  • PM 인 저는 Command Line 에서 프로젝트를 개발합니다. 사용하고 있는 툴(Tool)은 Emacs 에 Ant 를 이용해서 빌드합니다.
  • 회사에서 작업하는 개발자는 Android Studio 를 이용해서 개발합니다.
  • 회사 외부에서 개발하는 개발자는 ADT (Android Development Tool) 을 이용합니다.

저와 외부에서 개발하는 개발자간의 호환은 별 문제가 없습니다. Eclipse 와 Command Line 은 거의 프로젝트 세팅이 비슷한거 같습니다. 물론 따로 설정해줘야 하는 부분이 있지만.. 하지만 ADT 와 안드로이드 스튜디오 간에는 차이가 확실히 존재하더군요.

play-services 를 이용해서 개발하는 것입니다. ADT 에서는 따로 Library Project 를 설정해서 기존 프로젝트에 포함시켜주면 되는 것이였습니다. 그러나 Android Studio 는 방법이 다르더군요.

Google Play Service 세팅법 을 참조해서 하면 build.gradle 을 열고 다음과 같이 추가해 주면 되는 것입니다.

dependencies {

    compile 'com.google.android.gms:play-services:6.5.87'
}

그러나 에러가 발생하더군요. 이유는 간단했습니다. ADT 에서 참조하는 libs 에 android-support-v4.jar 이 포함됐기 때문입니다. 그렇다고 바로 지우자니 그 담부터는 ADT 를 이용하는 외부 개발자님의 빌드가 깨지겠지요.

그래서 다음과 같이 바꾸어 줍니다.

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile ('com.google.android.gms:play-services:+') {
                exclude group: 'com.android.support', module: 'support-v4'
    }
}

그리고 Android Studio 에 있는 Toolbar 를 보면 'Sync Project with Gradle Files' 라는 버튼을 눌러주고 프로젝트를 빌드해 주면 됩니다.

+ Recent posts