项目在更新到API 23后不起作用

时间:2015-09-26 11:12:37

标签: java android android-studio

任何人都可以帮我这个吗?我不知道这是什么意思。 为了给你一个备份,我用23更新了我的sdk,然后我得到了101个关于HTTPClient无法解决的错误。所以我按照this链接删除了然后我有这个错误,我不知道从哪里开始。

错误:任务':app:dexDebug'执行失败。

  

com.android.ide.common.internal.LoggedErrorException:无法运行命令:       C:\ adt-bundle-windows-x86_64-20140702 \ adt-bundle-windows-x86_64-20140702 \ sdk \ build-tools \ 23.0.1 \ dx.bat --dex --no-optimize --output F:\ sagarDevanga \ workspace \ AndNrby \ app \ build \ intermediates \ dex \ debug --input-list = F:\ sagarDevanga \ workspace \ AndNrby \ app \ build \ intermediates \ tmp \ dex \ debug \ inputList.txt   错误代码:       2   输出:       意外的顶级例外情况:       com.android.dex.DexException:多个dex文件定义Lorg / apache / http / ConnectionClosedException;           在com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)           在com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)           在com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)           在com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)           在com.android.dx.merge.DexMerger.merge(DexMerger.java:189)           在com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:502)           在com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)           在com.android.dx.command.dexer.Main.run(Main.java:277)           在com.android.dx.command.dexer.Main.main(Main.java:245)           在com.android.dx.command.Main.main(Main.java:106)

3 个答案:

答案 0 :(得分:0)

确保您的adt支持您正在运行的api版本。请看这个链接:https://developer.android.com/tools/support-library/index.html

答案 1 :(得分:0)

要修复你应该检查libs(.jar)和build.gradle中是否有一些库重复。当您添加相同库的副本或包含您已添加的另一个库的副本的库时,会发生此错误

还从SDK

更新您的支持库

答案 2 :(得分:0)

好的我已经更新了问题的标题,以便其他人也发现它很有用。所以我会写一个详细的答案,关于我的项目中是如何发生这个错误的,我做了哪些修复,以及我最终是如何得出答案的。

1)我更新了SDK,然后开始使用最新的api,即API 23编译我的项目。你可以通过转到文件 - >来实现。项目结构 - >选择您的模块。 现在,在属性下的右侧窗口中,可以使用下拉列表更改前两个属性。enter image description here 然后单击“应用”和“确定”。

2)因此,当您执行此操作时,您的应用程序的build.gradle文件将如下所示enter image description here。现在一切都很好看。它也会编译。但是当你运行项目时,你会得到很多错误,这个名称是错误:(17,35)错误:包org.apache.http.impl.client不存在显然如果你正在使用他们在你的异步任务中。

3)所以当我收到这个错误时,我在这里和那里做了很多研究然后遇到了这个link并在libs文件夹中添加了HTTP CLIENTS jar文件,然后尝试运行我结束的程序这个问题(问题中提到的问题)。

4)所以在挖掘后我发现问题是我在Async任务中使用的HTTP方法在API 23中被弃用了,因此我陷入了混乱。

5)然后我接下来做了什么为我解决了问题。参考文献here

6)在你的模块的build.gradle文件中,添加以下行 useLibrary'org.apache.http.legacy'enter image description here

7)等你还没完成。现在转到主build.gradle文件并添加此行 classpath'com.android.tools.build:gradle:1.3.1',如此enter image description here。现在构建和编译你的项目一切正常。

8)完成所有这些步骤后,项目工作正常,但我在最后一张照片中有一个疑问,即我分享了顶级build.gradle文件。我是否应该保留类路径或只使用此类路径'com.android.tools.build:gradle:1.3.1'并删除另一个。如果有人对此有任何想法,请帮助。

9)问题在于他们弃用了最新Android API中的HTTP客户端23.在HTTP客户端中,您必须使用HttpUrlConnection,但如果您想继续使用HTTP客户端,请按照上述步骤操作。