Android 启用多索引

Android 启用多索引,android,android-gradle-plugin,android-multidex,Android,Android Gradle Plugin,Android Multidex,几天前,我曾收到DexIndexOverflowException,我所做的是: a) 将multiDexEnabled true添加到我的build.gradle文件中的defaultConfig b) 在依赖项部分添加compile'com.android.support:multidex:1.0.1' 在那之后,一切又恢复正常了 今天我在读d.android.com网站(link)上的multidex用户指南,上面说我还应该重写MultiDexApplication类(因为我已经从应用程序

几天前,我曾收到
DexIndexOverflowException
,我所做的是:

a) 将
multiDexEnabled true
添加到我的
build.gradle
文件中的defaultConfig

b) 在依赖项部分添加
compile'com.android.support:multidex:1.0.1'

在那之后,一切又恢复正常了

今天我在读d.android.com网站(link)上的
multidex
用户指南,上面说我还应该重写
MultiDexApplication
类(因为我已经从
应用程序
扩展了)


我的问题是:既然我没有扩展
MultiDexApplication
,怎么可能只做上面提到的两件事,而不接收我以前接收到的异常呢?我现在该怎么办?即使现在一切正常,我是否应该尝试扩展
MultiDexApplication

您的代码必须接近方法的数量限制,我建议进行总体实现。否则,您可以查看您的依赖项,删除您未使用的依赖项,并使用ProGuard。好的实践是有帮助的,比如在可能的情况下更喜欢使用方法
private

您可以使用MultiDex

支持最小多索引的应用程序。使用传统的多重索引 图书馆有3种可能性:

  • 在AndroidManifest.xml中将此类声明为应用程序
  • 让你的应用程序扩展这个类
  • 让您的应用程序覆盖从受保护的void attachBaseContext(Context base){super.attachBaseContext(base);MultiDex.install(this)开始的attachBaseContext

最后一个应该适合你。

你用lolipop前的设备测试过你的应用程序吗?是的,我测试过,而且它工作没有任何问题可能是你没有超过65536个dex方法检查一下医生:那么你能解释一下为什么没有这些设备对他有效吗?我假设最终的dex没有超过65536个,或者他只是个缺点正在考虑即时运行生成。要验证这一点:首先确保您正在编译最终APK。在最终APK生成后,在Android Studio中进入菜单Build\Analyze APK,选择它。然后检查是否只有文件
classes.dex
(而不是
classes2.dex
),因此选择这个.dex文件。并查看其中存在的引用方法的数量。