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' 라는 버튼을 눌러주고 프로젝트를 빌드해 주면 됩니다.


안드로이드 개발을 위해서 구글이 내놓은 새로운 개발툴 입니다. 최근에 이클립스가 maven 지원이 더딘것 때문에 사용자를 늘려가던 (유료인데도 불구하고!!) IntelliJ 기반입니다. 물론 구글이 내놓아서 공짜랍니다. 크기는 무려 700메가 정도군요, 기가단위가 아니라서 가벼운게냐..


조금 더 만져보니 이게 프로젝트가 비쥬얼 스튜디오 마냥 한번에 하나의 프로젝트만 열게 되어 있군요. 그래서 여러개를 한꺼번에 오픈하는 방식인 ADT 보다 가볍다는 소리를 듣는군요. 


자세한 설명과 다운로드는 바로 http://developer.android.com/sdk/installing/studio.html 에서 다운받을 수가 있습니다. 


지금까지 ADT 를 잘 사용했는데 왜 이걸 또 배워야 하느냐고 물으실 수가 있습니다. 저는 구글의 대변인은 아니지만 ㅎㅎ 이게 비록 베타인데도 웨어러블 (Wearable) 앱 만드는데 최적화가 되어 있습니다. (추천한다고 여기 저기 쓰여져 있습니다) 그리고 메이븐도 사용할 수가 있습니다. 자세한 것은 위의 주소에 가면 설명이 되어 있지만 따로 가져와 본다면 




제가 하는 영역과 관련되서 딱 하나의 불만은 NDK 가 지원 안된다는 점이지만 뭐 급할 것은 없겠지요. 받아서 설치하시고 나면 


바로 테마를 Default 에서 취향에 맞춰서 Darcula (드라큘라가 아니다? -ㅅ- ) 바꿔주셔도 좋습니다. 테마가 두개 밖에 없으니 알아서 골라주세용 


아 그리고 에디터를 이용할때 사용하는데 전혀 거부감이 없었습니다. 그 말인즉슨 에디터가 기본으로 이맥스(Emacs) 키 바인딩을 지원한다는 것이겠지요. 이것 또한 아주 마음에 드는 부분이였습니다. 


+ Recent posts