Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- FrameLayout
- RaduoButton
- CheckedTextView
- androidstudio
- EditText
- ToggelButton
- layout
- textview
- switch
- AutoCompleteTextView
- Application
- constraintlayout
- TextInputlayout
- manifest
- GridLayout
- intent-filter
- button
- Android
- LinearLayout
- TEXT
- PlainText
- RelativeLayout
- Guideline
- TableLayout
- Kotlin
- Professional Android
- Chip
Archives
- Today
- Total
근본있는 블로그
MultiDex 에러..? 본문
현재 회사에서 앱을 테스트하는 과정에서 다음과 같은 현상이 발생했습니다.
-
API19 테스트 중 앱이 Crash되며 앱이 실행되지 않는 현상 발생!!
-
에러로그
-
01-21 15:45:01.823 3747-3747/com.platfarm.example.mojitoksdksampleapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.platfarm.example.mojitoksdksampleapp, PID: 3747
java.lang.RuntimeException: Unable to get provider androidx.lifecycle.ProcessLifecycleOwnerInitializer: java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.ProcessLifecycleOwnerInitializer" on path: DexPathList[[zip file "/data/app/com.platfarm.example.mojitoksdksampleapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.platfarm.example.mojitoksdksampleapp-1, /vendor/lib, /system/lib]]
at android.app.ActivityThread.installProvider(ActivityThread.java:4793)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4385)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4325)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.ProcessLifecycleOwnerInitializer" on path: DexPathList[[zip file "/data/app/com.platfarm.example.mojitoksdksampleapp-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.platfarm.example.mojitoksdksampleapp-1, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.ActivityThread.installProvider(ActivityThread.java:4778)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4385)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4325)
at android.app.ActivityThread.access$1500(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
-
Dex란?
안드로이드의 경우는 클래스를 .dex 형식의 파일로 컴파일해서 APK를 구성하고 있습니다. 문제는 Dex파일은 함수의 개수가 64K개를 초과할 수 없다는 것이죠. 그래서 나온개념이 MultiDex인데요. 함수의 개수가 많아지면 dex파일을 쪼개서 실해하는 것입니다. 런타임별 MultiDex에 대한 지원과 정보는 아래링크에서 확인하실 수 있습니다.
64K가 넘는 메서드의 앱에 관해 멀티덱스 사용 설정 | Android 개발자 | Android Developers
앱이 여러 DEX 파일을 빌드하고 읽을 수 있도록 하는 multidex라는 앱 구성의 사용설정 방법에 관해 알아보세요.
developer.android.com
-
API20 이하의 플랫폼에서는 Dalvik 런타임이 MultiDex를 자동으로 지원하지 않으므로 명시적으로 MultiDex 라이브러리를 Gradle에 추가해야합니다.
-
API21 이상의 플랫폼에서는 ART 런타임이 기본적으로 MultiDex를 적용하기때문에 에러가 발생하지 않습니다.
-
Gradle 과 App class들 다음과 같이 변경합니다.
implementation 'com.android.support:multidex:1.0.3'
class App : Application() -> class App : MultiDexApplication()
'Android' 카테고리의 다른 글
화웨이 결제 구현(1) - 개요 (0) | 2021.04.12 |
---|---|
API27 에뮬레이터에서 결제 안되는 현상 (1) | 2021.03.14 |
Design Palette 훑어보기 - Layout편 (0) | 2020.09.25 |
Design Palette 훑어보기 - Button편 (0) | 2020.09.24 |
Design Palette 훑어보기 - Text편 - 2 (0) | 2020.09.23 |