如何使用新的Android Multidex支持库启用多重索引
我想使用新的Multidex支持库来打破我的一个应用程序的方法限制。
使用Android棒棒糖Google推出了一个multidex支持库,可以轻松实现multidex。
需要采取哪些步骤来使用这个库,并使用multidex支持构build我的应用程序?
自2014年12月3日起,构build工具1.0.0-rc1
发布。 现在,你需要做的就是修改你的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 { compile 'com.android.support:multidex:1.0.1' }
如果你正在运行unit testing,你会想把它包含在你的Application
类中:
public class YouApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
欲了解更多信息,这是一个很好的指导。
启动多重分类需要以下步骤:
将android-support-multidex.jar添加到您的项目中。 该jar可以在您的Android SDK文件夹/ sdk / extras / android / support / multidex / library / libs中find
现在,您可以让应用程序类扩展MultiDexApplication
public class MyApplication extends MultiDexApplication
或者你像这样覆盖attachBaseContext:
protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
我使用了覆盖方法,因为这不会影响应用程序类的类层次结构。
现在,您的应用程序已准备好使用多个dex。 下一步是说服gradlebuild立一个多重dexed apk。 构build工具团队正在努力使这个更容易,但目前你需要添加以下内容到你的应用程序的android部分build.gradle
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博客上find。
简单,为了启用multidex,你需要…
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.0' }
你也必须改变你的清单文件。 在您的清单中,将MultiDexApplication类从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>
在你的build.gradle添加这个依赖:
compile 'com.android.support:multidex:1.0.1'
再次在你的build.gradle文件中添加这行到defaultConfig块:
multiDexEnabled true
而不是从应用程序扩展你的应用程序类从MultiDexApplication扩展; 喜欢 :
public class AppConfig extends MultiDexApplication {
现在你很好走! 万一您需要它,所有MultiDexApplication
做
public class MultiDexApplication extends Application { @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } }
第1步:更改build.grade
defaultConfig { ... // Enabling multidex support. multiDexEnabled true } dependencies { ... compile 'com.android.support:multidex:1.0.0' }
第二步:设置应用程序类
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
它会工作! 谢谢。
如果你想在你的项目中启用multi-dex,那么就去gradle.builder
并在你的依赖中添加这个
dependencies { compile 'com.android.support:multidex:1.0.0'}
那么你必须添加
defaultConfig { ... minSdkVersion 14 targetSdkVersion 21 ... // Enabling multidex support. multiDexEnabled true}
然后打开一个类并将其扩展到应用程序如果您的应用程序使用扩展了Application类,则可以覆盖oncrete()方法并调用
MultiDex.install(this)
启用multidex。
最后join你的清单
<?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>
添加到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' } }
只是在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**** } }
首先,你应该尝试与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中,不要忘记启用multidex
dexOptions { incremental true javaMaxHeapSize "2g" }