본문 바로가기

나의 플랫폼/안드로이드

[Android] Unable to execute dex: method ID not in [0, 0xffff]: 65536

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Unable to execute dex: method ID not in [0, 0xffff]: 65536


위와 같은 에러는 안드로이드에서 빌드시 메소드 갯수 제한(65K) 이 되어 있기 때문에 이 이상인 경우 빌드를 막아놓아서 발생한 것입니다.

이부분을 피하기 위해 안드로이드 에서는 MultiDex를 지원해주고 있는데요.


지금 부터 MultiDex를 설정하는 방법을 알려 드리겠습니다.


1. app/build.gradle 에 아래 소스를 추가 시킵니다.

defaultConfig {
...

// Enabling multidex support.
multiDexEnabled true
}


dependencies {
compile 'com.android.support:multidex:1.0.0'
}

참고 : http://stackoverflow.com/questions/15209831/unable-to-execute-dex-method-id-not-in-0-0xffff-65536


2. AndroidManifest.xml 에 아래 소스를 추가 합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>


## 만약 이미 Application을 사용하고 있을 경우 해당 Application 으로 이동 합니다.

그리고 상속 받는 Application을 MultiDexApplication으로 변경 합니다.

그리고 아래 소스를 추가 합니다.


@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}


참고 : http://developer.android.com/tools/building/multidex.html


그럼 문제 없이 빌드가 될 것입니다.


혹시 아래 와 같은 에러가 발생 하신 분은 다음 부분도 추가해 주세요.


GC overhead limit exceeded error


app/build.gradle 파일 안에 아래 소스를 추가 합니다.


dexOptions {
javaMaxHeapSize "4g"
}


참고 : http://stackoverflow.com/questions/25013638/android-studio-google-jar-causing-gc-overhead-limit-exceeded-error





감사합니다^^