2016-02-03 96 views
2

我想与和GoogleApiclient实现View.OnClickListener界面如下导入谷歌Play服务,使DexIndexOverflowException

public class MainActivity extends Activity implements 
View.OnClickListener,GoogleApiClient.ConnectionCallbacks,OnConnectionFailedListener, com.google.android.gms.location.LocationListener{ 
    } 

但这种失败,下面的错误

Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_51\bin\java.exe'' finished with non-zero exit value 2

下面是摇篮控制台错误 ote:

H:\xxx\app\src\main\java\com\dbprox\css\MainActivity.java uses or overrides a deprecated API. 
Note: Recompile with -Xlint:deprecation for details. 

:app:compileDebugNdk UP-TO-DATE 
:app:compileDebugSources 
:app:preDexDebug UP-TO-DATE 
:app:dexDebug 
AGPBI: {"kind":"simple","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","sources":[{}]} 
AGPBI: {"kind":"simple","text":"com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536","sources":[{}]} 
AGPBI: {"kind":"simple","text":"\tat com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:484)","sources":[{}]} 
AGPBI: {"kind":"simple","text":"\tat com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:261)","sources":[{}]} 
AGPBI: {"kind":"simple","text":"\tat com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:473)","sources":[{}]} 
AGPBI: {"kind":"simple","text":"\tat com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:161)","sources":[{}]} 
AGPBI: {"kind":"simple","text":"\tat com.android.dx.merge.DexMerger.merge(DexMerger.java:188)","sources":[{}]} 
AGPBI: {"kind":"simple","text":"\tat com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)","sources":[{}]} 
AGPBI: {"kind":"simple","text":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)","sources":[{}]} 
AGPBI: {"kind":"simple","text":"\tat com.android.dx.command.dexer.Main.run(Main.java:277)","sources":[{}]} 
AGPBI: {"kind":"simple","text":"\tat com.android.dx.command.dexer.Main.main(Main.java:245)","sources":[{}]} 
AGPBI: {"kind":"simple","text":"\tat com.android.dx.command.Main.main(Main.java:106)","sources":[{}]} 


FAILED 

FAILURE: Build failed with an exception. 
  • 出错: 任务':app:dexDebug'的执行失败。

    com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_51\bin\java.exe'' finished with non-zero exit value 2

  • 尝试: 与--stacktrace选项获取堆栈跟踪运行。使用--info或--debug选项运行以获取更多日志输出。

构建失败

回答

14

由于您正在导入的库的数量,您的项目已超过65536个方法。

尽管您很幸运,因为Google Play服务现在允许您选择要导入的子模块,而不是导入整个事物。 这使您可以快速轻松地解决此问题。

the documentation:有了这个

compile 'com.google.android.gms:play-services:9.2.0' 

In versions of Google Play services prior to 6.5, you had to compile the entire package of APIs into your app. In some cases, doing so made it more difficult to keep the number of methods in your app (including framework APIs, library methods, and your own code) under the 65,536 limit.

From version 6.5, you can instead selectively compile Google Play service APIs into your app.

因此,如果谷歌Drive是你所需要的,然后更换这个

compile 'com.google.android.gms:play-services-drive:9.2.0' 
0

,我认为你的一些jar文件不编译。您应该进入build.gradle文件并查看您的依赖关系。如果你只是导入一些jar文件,你可以尝试删除并一次添加一个。这将帮助您确定哪一个会导致错误。

对于错误:MainActivity.java使用或覆盖弃用的API。 注意:使用-Xlint:deprecation重新编译以获取详细信息。,您可能正在使用较旧版本的appcompat库。你可以参考这个link

+0

问题是编译“COM .google.android.gms:play-services:8.3.0',将它从build.girdle中移除。我能够建立这个项目。我需要这个库连接到谷歌drive.How我可以添加这个库与任何issue.compile'c​​om.android.support:appcompat-v7:23.1.1' compile'c​​om.android.support:design:23.1.1 ' compile'c​​om.dropbox.core:dropbox-core-sdk:2.0-beta-5' compile'c​​om.google.code.gson:gson:2.3.1' compile'c​​om.microsoft.services.msa: msa-auth:0.8.4' compile'c​​om.microsoft.aad:adal:1.1.7' // compile'c​​om.google.android.gms:play-services:8.3.0' –