HOME > android > basic

AndroidX - MultiDex 적용하는 방법

By JS | 10 Nov 2019

안드로이드 코드는 dex라는 파일로 컴파일이 됩니다. dex는 65,535개의 메소드만 컴파일이 됩니다. 이를 초과하는 앱을 생성하면 MultiDex로 설정하여 Apk파일에 dex가 두개 이상으로 컴파일되도록 해야 합니다.

AndroidX를 사용할 때 앱을 MultiDex로 설정하는 방법을 소개합니다.

Gradle 설정

먼저 App의 build.gradle파일에 다음과 같이 "multiDexEnabled true"로 설정하고 라이브러리를 의존성에 추가합니다.

defaultConfig {
    multiDexEnabled true
}

dependencies {
    implementation 'androidx.multidex:multidex:2.0.1'
    ....
}

앱 코드 설정

멀티덱스를 사용하려면 AndroidManifest에 Application을 MultiDexApplication의 클래스로 지정해주어야 합니다.

Application 클래스를 따로 만들지 않을 때

"AndroidManifest.xml"에 다음처럼 이름을 설정해주면 됩니다.

<application
    android:name="androidx.multidex.MultiDexApplication" ... >
    ...

Custom Application 클래스를 만들 때

다음처럼 Application 클래스를 따로 만들 수 있습니다.

public class MyApplication extends MultiDexApplication {
    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
    }
}

이런 경우, "AndroidManifest.xml"에 구현한 Application 객체의 이름을 설정해주면 됩니다.

<application
    android:name=".MyApplication" ... >
    ...

만약 Application은 재정의하지만 MultiDexApplication를 상속하지 않는 경우, 다음처럼 MultiDex.install(this)를 호출하여 MultiDex를 사용하도록 만들 수 있습니다.

public class MyApplication extends SomeOtherApplication {
  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(base);
     MultiDex.install(this);
  }
}

Proguard 등으로 최적화를 할 때 주의해야 하는 점은 Android Developer를 참고해주세요.

참고