답변:
편집하다:
Android 5.0 (API 레벨 21) 이상은 멀티 덱싱을 지원하는 ART를 사용합니다. 따라서 minSdkVersion
21 이상인 경우 멀티 덱스 지원 라이브러리가 필요하지 않습니다.
당신의 수정 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 {
}
자세한 내용 은 이 안내서를 참조하십시오.
gradle-wrapper.properties
). 요점 : 1 buildToolsVersion이 21.1.1 이상이어야합니다. 2 추가 multiDexEnabled true
하여 build.gradle 당신의 defaultConfig에은 (통지하지 않는이 =
) (3)가 추가'com.android.support:multidex:1.0.0'
android:name="android.support.multidex.MultiDexApplication"
에 application
에 태그 AndroidManifest.xml
충분?
..if your minSdkVersion is set to 20 or lower you must use...
'compile 'com.android.support:multidex:1.0.1'
.
멀티 덱싱을 시작하려면 다음 단계가 필요합니다.
프로젝트에 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>
android:name="android.support.multidex.MultiDexApplication
주세요 ..
당신에 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>
AndroidManifest.xml에 추가 :
android:name="android.support.multidex.MultiDexApplication"
또는
MultiDex.install(this);
사용자 정의 응용 프로그램의 attachBaseContext 메소드에서
또는 사용자 정의 응용 프로그램 확장 MultiDexApplication
build.gradle에 multiDexEnabled = true 추가
defaultConfig {
multiDexEnabled true
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
}
먼저 Proguard를 사용해보십시오 (이 코드는 모두 사용되지 않습니다)
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
프로젝트에서 멀티 덱스를 활성화하려면 gradle.builder로 이동하십시오.
그리고 당신의 의존성에 이것을 추가하십시오
dependencies {
compile 'com.android.support:multidex:1.0.0'}
그런 다음 추가해야합니다
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true}
그런 다음 클래스를 열고 Application으로 확장하십시오. 앱에서 Application 클래스를 확장하면 oncrete () 메서드를 재정의하고
MultiDex.install(this)
멀티 덱스를 활성화합니다.
마지막으로 매니페스트에 추가하십시오.
<?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>
gradle.builder
?
위의 모든 답변은 훌륭합니다.
또한 이것을 추가하십시오. 그렇지 않으면 앱이 아무 이유없이 광산처럼 추락합니다.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
androidx에서는 클래식 지원 라이브러리가 더 이상 작동하지 않습니다.
간단한 해결책은 다음 코드를 사용하는 것입니다
당신의에서 build.gradle
파일
android{
...
...
defaultConfig {
...
...
multiDexEnabled true
}
...
}
dependencies {
...
...
implementation 'androidx.multidex:multidex:2.0.1'
}
그리고 매니페스트에서 응용 프로그램 태그에 이름 속성을 추가하십시오.
<manifest ...>
<application
android:name="androidx.multidex.MultiDexApplication"
...
...>
...
...
</application>
</manifest>
애플리케이션이 API 21 이상을 대상으로하는 경우 멀티 덱스는 기본적으로 활성화되어 있습니다.
이제 멀티 덱스를 지원하려고하는 많은 문제를 해결하려면 먼저 설정을 통해 코드 축소를 사용해보십시오 minifyEnabled true
.