Android Multidex

💀LeeSY·2022년 7월 20일
0
post-thumbnail

Multidex

  • 안드로이드 프로젝트 규모가 커지면서 앱 또는 앱이 참조하는 라이브러리의 메서드가 64K(65,536개)를 초과하면 앱이 Android 빌드 아키텍처의 제한에 도달했음을 알리는 빌드 오류가 발생한다.
trouble writing output:
Too many field references: 131000; max is 65536.
You may try using --multi-dex option.
  • Multidex는 이러한 상황에서 메서드가 64K개를 초과하지 않도록 Dex 파일을 여러개로 쪼개준 뒤, 다시 쪼개진 Dex를 읽을 수 있도록 해준다.

gradle

dependencies {
    val multidex_version = "2.0.1"
    implementation("androidx.multidex:multidex:$multidex_version")
}

How to use it?

  • Application 클래스 생성 여부에 따라 방법이 상이하다.
  • Application 클래스를 별도로 생성하지 않았다면 Manifest 파일을 수정한다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
            android:name="androidx.multidex.MultiDexApplication" >
        ...
    </application>
</manifest>
  • Application 클래스를 생성하여 사용중에 있다면, 다음과 같이 적용한다.
class AppCore : MultiDexApplication() {

    init {
        instance = this
    }

    companion object AppInstance {
        lateinit var instance: AppCore
        fun applicationContext() : Context {
            return instance.applicationContext
        }
    }
}
  • 만일 Application 클래스를 생성하였으나, 기본 클래스 변경이 불가능한 경우에는 attachBaseContext() 메서드를 재정의하고, 다음과 같이 install() 메서드로 Multidex 사용을 설정한다.
class MyApplication : SomeOtherApplication() {

    override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)
        MultiDex.install(this)
    }
}
profile
A little strange but passionate, sincere hard worker.

0개의 댓글

관련 채용 정보