새로운 Android Multidex 지원 라이브러리로 멀티 덱싱을 활성화하는 방법 내 앱 중

새로운 Multidex 지원 라이브러리를 사용하여 내 앱 중 하나의 방법 제한을 깨고 싶습니다.

Google은 Android Lollipop을 통해 멀티 덱스를 쉽게 만들 수있는 멀티 덱스 지원 라이브러리를 도입했습니다.

이 라이브러리를 사용하고 멀티 덱스 지원으로 내 앱을 빌드하려면 어떤 단계가 필요합니까?



답변

편집하다:

Android 5.0 (API 레벨 21) 이상은 멀티 덱싱을 지원하는 ART를 사용합니다. 따라서 minSdkVersion21 이상인 경우 멀티 덱스 지원 라이브러리가 필요하지 않습니다.


당신의 수정 build.gradle:

android {
    compileSdkVersion 22
    buildToolsVersion "23.0.0"

         defaultConfig {
             minSdkVersion 14 //lower than 14 doesn't support multidex
             targetSdkVersion 22

             // Enabling multidex support.
             multiDexEnabled true
         }
}

dependencies {
    implementation 'com.android.support:multidex:1.0.3'
}

단위 테스트를 실행중인 경우이를 Application클래스 에 포함 시키려고합니다.

public class YouApplication extends Application {

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

}

아니면 그냥 application수업을 확장MultiDexApplication

public class Application extends MultiDexApplication {

}

자세한 내용 안내서를 참조하십시오.


답변

멀티 덱싱을 시작하려면 다음 단계가 필요합니다.

프로젝트에 android-support-multidex.jar를 추가하십시오. jar은 Android SDK 폴더 / sdk / extras / android / support / multidex / library / libs에 있습니다.

이제 응용 프로그램 응용 프로그램 클래스에서 MultiDexApplication을 확장 할 수 있습니다.

public class MyApplication extends MultiDexApplication

또는 다음과 같이 attachBaseContext를 재정의하십시오.

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

재정의 접근법을 사용했는데 응용 프로그램 클래스의 클래스 계층 구조를 망칠 수 없습니다.

이제 앱에서 멀티 덱스를 사용할 수 있습니다. 다음 단계는 gradle에게 multi dexed apk를 만들도록 설득하는 것입니다. 빌드 도구 팀이이 작업을보다 쉽게 ​​수행하기 위해 노력하고 있지만 현재는 앱 build.gradle의 Android 부분에 다음을 추가해야합니다.

   dexOptions {
      preDexLibraries = false
   }

다음은 앱 build.gradle의 일반적인 부분입니다.

afterEvaluate {
   tasks.matching {
      it.name.startsWith('dex')
   }.each { dx ->
      if (dx.additionalParameters == null) {
         dx.additionalParameters = ['--multi-dex']
      } else {
         dx.additionalParameters += '--multi-dex'
      }
   }
}

자세한 내용은 Alex Lipovs 블로그를 참조하십시오 .


답변

간단히, 멀티 덱스를 활성화하려면 다음을 수행해야합니다.

android {
compileSdkVersion 21
buildToolsVersion "21.1.0"

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

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

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

또한 매니페스트 파일을 변경해야합니다. 매니페스트에서 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>


답변

당신에 build.gradle 이 종속성을 추가 :

compile 'com.android.support:multidex:1.0.1'

다시 build.gradle 파일 에서 다음 행을 defaultConfig 블록에 추가하십시오 .

multiDexEnabled true

Application 에서 어플리케이션 클래스를 확장하는 대신 MultiDexApplication 에서 어플리케이션 클래스를 확장하십시오 . 처럼 :

public class AppConfig extends MultiDexApplication {

이제 잘 가세요! 필요한 경우 모든 MultiDexApplication것이

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


답변

build.gradle

multiDexEnabled true
implementation 'androidx.multidex:multidex:2.0.1'

AndroidManifest.xml

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


답변

1 단계 : build.grade 변경

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

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

2 단계 : 응용 프로그램 클래스 설정

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        MultiDex.install(this);
    }
}

3 단계 : grade.properties 변경

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

작동합니다!. 감사.


답변

다음은 2020 년 5 월 현재 Android X를 사용한 최신 접근 방식입니다.

옵션 minSdk> = 21

당신은 아무것도 할 필요가 없습니다. 이러한 모든 장치는 멀티 덱스를 기본적으로 지원하는 Android RunTime (ART) VM을 사용합니다.

들어 minSdk<21

당신의에서 모듈 -level build.gradle, 다음과 같은 구성되었는지 확인합니다 :

android {
    defaultConfig {
        multiDexEnabled true
    }
}

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

그런 다음 다음과 같이 src/main/AndroidManifest.xml선언 MultiDexApplication해야합니다 application:name.

<manifest package="com.your.package"
          xmlns:android="http://schemas.android.com/apk/res/android">
    <application android:name="androidx.multidex.MultiDexApplication" />
</manifest>