티스토리 뷰

Android

안드로이드 Multidex 오류

Gibson 김형섭 2017. 2. 15. 18:28

android multidex error 



앱개발을 하다보면 앱 규모가 커지고 사용하는 라이브러리가 많아지면 만나게되는 에러가 있다.


LEVEL EXCEPTION: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536 at 


이는 앱에서 빌드시 사용되는 메서드가 65536개가 넘어서 발생하는 에러다

(하단참조)





하나의 유형이 아니라 다른 방식으로 에러가 발생 할 수 있기 때문에 ex) Class not found 등


항상 유의해야한다.


해결방법은 간단하다 .




android {
    compileSdkVersion
21
    buildToolsVersion
"21.1.0"

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

       
// Enabling multidex support.
        multiDexEnabled
true
   
}
   
...
}

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

위와같이 app 레벨의   build.gradle 파일에 multiDexEnabled true를 설정해주고 

dependencies에 mutidex를 추가해준다.



<?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 클래스를 사용하고 있지 않다면 AndroidManifest.xml을 수정해주면 되고,




public class MyApplication extends Application{

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

Application 클래스를 상속받은 별도의 클래스를 사용하고 있다면 위와 같이 attachBaseContext를 override하여 MultiDex.Install(this); 를 추가해주면 된다.




이 외에도 리팩토링과  proguard를 통해  코드축소를 하는 습관을 갖자!


proguard란?

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
TAG
more
«   2024/05   »
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
글 보관함