Answers:
编辑:
Android 5.0(API级别21)及更高版本使用支持多义化的ART。因此,如果您的minSdkVersion
年龄为21岁或更高,则不需要multidex支持库。
修改您的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);
}
我使用了重写方法,因为这不会与您的应用程序类的类层次结构混淆。
现在,您的应用已准备好使用Multi dex。下一步是说服gradle构建多版本的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博客上找到更多信息。
简而言之,为了启用multidex,您需要...
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类添加到application元素中,如下所示
<?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:在Application类上进行设置
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,该VM本机支持multidex。
minSdk
<21在模块级别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'
}
}
}
如果要在项目中启用Multi-dex,则只需转到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)
启用multidex。
最后添加到您的清单
<?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'
}
并在清单中添加name属性到应用程序标签中
<manifest ...>
<application
android:name="androidx.multidex.MultiDexApplication"
...
...>
...
...
</application>
</manifest>
如果您的应用程序以API 21或更高版本为目标,则默认情况下启用multidex。
现在,如果您想摆脱许多问题,尝试支持multidex,请先尝试通过设置使用代码收缩minifyEnabled true
。