Android Studio DexIndexOverflowException:方法 ID 不在
Posted
技术标签:
【中文标题】Android Studio DexIndexOverflowException:方法 ID 不在【英文标题】:Android Studio DexIndexOverflowException: method ID not in 【发布时间】:2016-12-07 11:12:08 【问题描述】:我使用 android Studio 开发一个应用程序,我遇到了这个我不知道如何解决的错误。
com.android.dex.DexIndexOverflowException: 方法 ID 不在 [0, 0xffff] 中
:app:lintVitalRelease
:app:prePackageMarkerForRelease
:app:transformClassesWithDexForRelease FAILED
Error:Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
Information:BUILD FAILED
Information:Total time: 34.783 secs
Information:1 error
【问题讨论】:
我正在使用安卓工作室 查看谷歌关于如何启用 Multidex 的文档developer.android.com/studio/build/multidex.html 【参考方案1】:尝试在 build.gradle 中启用 multiDex:
android
defaultConfig
...
// Enabling multidex support.
multiDexEnabled true
...
dependencies
compile 'com.android.support:multidex:1.0.0'
这篇文章可能会有所帮助:DexIndexOverflowException issue after updating to latest appcompat and support library
【讨论】:
如果错误是由添加 Google Play 服务引起的,请查看以下答案:***.com/a/35210195/1340631 我的问题是通过放置 dexOptions javaMaxHeapSize "4g" @DanielPereira。最终,我们应该做的事情是优化我们的代码,我们的应用程序,而不是增加堆大小,即使我们今天的现代设备的内存比过去更大:) @VIRGINSTV,只是把所有东西都放在一个地方:另外,你需要根据文档developer.android.com/studio/build/multidex 调用 MultiDex.install 或使用 MultiDexApplication。还有一个解决办法就是在不需要multidex的地方把minSdk改成21,就不会出现这样的错误【参考方案2】:Android 有 65536 个方法的预定义上限。
如果您添加了整个播放服务,请将其删除并添加特定的。
删除compile 'com.google.android.gms:play-services:9.6.1'
然后为地图添加 ex:compile 'com.google.android.gms:play-services-maps:9.6.1'
。
https://developers.google.com/android/guides/setup
显示您在编译应用时可以包含的单独 API 的列表,以及如何在 build.gradle 文件中描述它们
【讨论】:
那是我的问题。我创建了 MapActivity,谷歌添加了一大堆服务。谢谢! 在我的情况下,我设置了两个依赖项compile 'com.google.android.gms:play-services:10.0.1'
,compile 'com.google.android.gms:play-services-ads:10.0.1'
并不得不将其减少到 compile 'com.google.android.gms:play-services-ads:10.0.1'
这应该是公认的答案。这对我有用。其他可能有效,但根本原因是使用了很多不需要的服务。【参考方案3】:
在你的 gradle 中设置 multiDex
defaultConfig
// ...
multiDexEnabled true
这对我有用。
【讨论】:
什么是multiDexEnabled?【参考方案4】:在所有谷歌服务包列表下使用单个包的最佳方式。
google play services api kbd> 在build.gradle中的描述 kbd> google+ kbd> com.google.android.gms:播放 - services-plus:11.2.0Google 帐户登录 com.google.android.gms:play-services-auth:11.2.0Google 操作,基本客户端库com.google.android.gms:play-services-base:11.2.0Google 地址 API com.google.android.gms:play-services-identity:11.2.0Google Analytics com.google.android.gms:play- services-analytics:11.2.0Google 意识 com.google.android.gms:play-services-awareness:11.2.0Google Cast com.google.android.gms:play-services-cast:11.2.0Google云消息传递 com.google.android.gms:play-services-gcm:11.2.0Google 云端硬盘 com.google.android .gms:play-services-drive:11.2.0Google 健身 com.google.android.gms:play-services-fitness:11.2.0 kbd>Google 位置和活动识别 com.google.android.gms:play-services-location:11.2.0Google 地图 com.google.android.gms:play-services-maps:11.2.0Google 移动广告 com.google.android.gms :play-services-ads:11.2.0Google 地方信息 com.google.android.gms:play-services-places:11.2.0 Mobile Vision com.google.android.gms:play-services-vision:11.2.0Google Nearby com.google.android.gms:play-services-nearby:11.2.0Google 全景查看器 com.google.android.gms:play -services-panorama:11.2.0Google Play 游戏服务 com.google.android.gms:play-services-games:11.2.0 SafetyNet com.google.android.gms:play-services-safetynet:11.2.0Android Pay com.google.android.gms:play-services-wallet:11.2.0Android Wear com.google.android.gms:play-services-wearable: 11.2.0
【讨论】:
【参考方案5】: Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
solution : inside build.gradle(app)
defaultConfig
applicationId "com.rentalhousereviews"
------------
-----------
multiDexEnabled true //add this line
dependencies
compile 'com.android.support:multidex:1.0.1'
【讨论】:
【参考方案6】:DexIndexOverflowException
也是超过65536个方法造成的。添加大型库(例如 Google Play 服务)时,很容易发生这种情况。请参阅this answer 获取解决方案。
【讨论】:
【参考方案7】:4 个多月以来,我在自己创建的项目中发现了这个错误,我失去了超过 14 个项目。 我正在寻找***和其他的所有地方以及android.developer.multidex extr的网站官方......但是谷歌android的任何官方方法都可以解决我的问题。
最后,我正在尝试对 Ads 的 google play 服务进行简单的更改。 这是我找到的最终解决方案:
首先编译女巫我发现错误是: 编译'com.google.android.gms:play-services:9.0.2'
更改只是添加了“-maps”并确保您的广告能够完美运行! 编译'com.google.android.gms:play-services-maps:9.0.2'
9.0.2 版可以让您的 minSdkVersion 11 正常工作,因为您知道广告只能在 11 版和更高版本上工作!
我很自豪能找到解决方案并分享这个简单的解决方案来解决其他人的问题。
【讨论】:
【参考方案8】:任务“:app:transformDexArchiveWithDexMergerForDebug”执行失败。
com.android.build.api.transform.TransformException: com.android.dex.DexIndexOverflowException: 方法 ID 不在 [0, 0xffff] 中:65536
最新版本com.android.support:multidex:1.0.3
为我工作!
dependencies
compile 'com.android.support:multidex:1.0.3'
【讨论】:
以上是关于Android Studio DexIndexOverflowException:方法 ID 不在的主要内容,如果未能解决你的问题,请参考以下文章