gpt4 book ai didi

android - 无法执行 dex : Multiple dex files define Lorg/apache/cordova/App$1

转载 作者:行者123 更新时间:2023-11-30 02:37:18 24 4
gpt4 key购买 nike

由于 cordova for android 中的高优先级安全修复,我们需要在我们的应用程序中更新我们的 cordova 版本(从 2.7.0 到 3.6.3)。所以我们认为创建一个新项目会更好。

我安装了 cordova 并使用 cordova cli api 创建了一个项目。我还添加了 android 平台添加了许多 cordova 插件。然后我将我们的 sencha touch 内容复制到 www 文件夹中。

然后我调用了cordova build android

之后,我在 Android Studio (0.8.11) 中导入了这个 android 项目。

对于我们的应用程序,我需要从我们的旧项目中复制以下内容

  • AndroidManifest.xml
  • res/目录下的所有内容
  • 在 src/目录中,我在应用程序中添加了一些我们需要的东西

在我们自己编写的 java 文件(src/目录)中,所有内容都是红色的。所以我们发现在src/org.apache.cordova/ 只有已安装的 cordova 插件的目录。所以我下载了 cordova 3.6.X(来自 https://github.com/apache/cordova-android/tree/3.6.x)并将所有 java 文件复制到 src/org/apache/cordava。

然后我发现 lib/文件夹中缺少 android-support android-support-v13.jar 库。所以我从sdk\extras\android\support\v13目录下复制出来。之后代码中几乎所有红色的东西都消失了,所以我尝试运行它。

但是我收到了这个错误:

Error:Execution failed for task ':dexDebug'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
C:\Develop\Android SDK\sdk\build-tools\19.1.0\dx.bat --dex --output D:\www\xxx\native\cordova-project\platforms\android\build\intermediates\dex\debug D:\www\DiLocSyncMobile\native\cordova-project\platforms\android\build\intermediates\classes\debug D:\www\xxx\native\cordova-project\platforms\android\build\intermediates\dependency-cache\debug D:\www\xxx\native\cordova-project\platforms\android\build\intermediates\pre-dexed\debug\android-support-v13-ba93a882b9b887c9c56ff93adba54cb3616bd827.jar D:\www\xxx\native\cordova-project\platforms\android\build\intermediates\pre-dexed\debug\classes-0236632443c0351e54fca9912536c8c02b5ad2b2.jar
Error Code:
2
Output:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lorg/apache/cordova/App$1;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
at com.android.dx.command.dexer.Main.run(Main.java:230)
at com.android.dx.command.dexer.Main.main(Main.java:199)
at com.android.dx.command.Main.main(Main.java:103)

我的 build.gradle 文件具有以下依赖项:

dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
for (subproject in getProjectList()) {
compile project(subproject)
}
}

在我的 lib/目录中就是我手动添加的 jar。

请帮助我/提前致谢!! :-)

最佳答案

当您对同一个包中的同一个类有多个引用时,就会发生该错误。

例如你可能有一个类:

com.android.foo.bar.GenericClass

然后你有两个 jar :

tools_library.jar

more_tools_library.jar

而且他们都需要“GenericClass”——但是其中一个使用了与另一个不同版本的类。在伪代码中,您可能会这样想:

tools_library.jar:com.android.foo.bar.GenericClass != more_tools_library.jar:com.android.foo.bar.GenericClass

你需要它是:

tools_library.jar:com.android.foo.bar.GenericClass == more_tools_library.jar:com.android.foo.bar.GenericClass

此问题的一个常见原因是使用了两个不同版本的包,例如 android-support-v13.jarandroid-support-v4.jar给我不止几次。

如果其中一个 jar 包含旧版本的 android-support-v4.jar 而您需要更新版本或 android-support-v13.jar

虽然这可能不会具体回答您的问题(没有足够的信息来确定是哪个特定的 jar 或类导致了冲突),但我认为至少提供对错误的更具描述性的解释可能会有所帮助到“无法执行 dex”——当我第一次看到它时,我花了很长时间才解密。

关于android - 无法执行 dex : Multiple dex files define Lorg/apache/cordova/App$1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26299922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com