낭만 프로그래머

Android에서 메소드 갯수가 64K 이상 일때 발생하는 문제 해결 본문

Android

Android에서 메소드 갯수가 64K 이상 일때 발생하는 문제 해결

조영래 2016. 9. 12. 16:10

● 에러 메세지

 - Android에서 라이브러리를 많이 사용하다 보면 메소드 갯수가 64K를 넘는 경우 발생하는 에러 메세지

Error:The number of method references in a .dex file cannot exceed 64K.

또는

Error:Execution failed for task ':app:transformClassesWithDexForRelease'.


● 첫 번째 해결 방법

 - 필요 없는 라이브러리를 제거 하자 (참고로 우리는 중복되게 사용하는 경우도 있음)


● 두 번째 해결 방법

 - 참고 : https://developer.android.com/studio/build/multidex.html


  1. build.gradle 파일 수정

    - 기본적으로 sdk 컴파일 관련 버전은 21 이상으로 변경 (기존에 되어 있다면 패스)

    - defaultConfig 아래에 multiDexEnabled true 추가

    - dependencies 아래에 compile 'com.android.support:multidex:1.0.0' 추가

    - dexOptions 아래에 jumboMode true 와 javaMaxHeapSize "4g" 추가 (이 부분을 넣지 않으면 메모리가 부족하다고 에러 메세지 발생)


android {
    compileSdkVersion 21
    buildToolsVersion "21.1.0"

    defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 21
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
    ...
    dexOptions {
      jumboMode true
      javaMaxHeapSize "4g"
    } 

}

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


    2. AndroidManifest.xml 파일 수정

      - application 태그 속성으로 android:name="android.support.multidex.MultiDexApplication" 추가


<?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>