【发布时间】:2014-10-10 12:52:29
【问题描述】:
由于cordova for android 中的高优先级安全修复,我们需要在我们的应用程序中更新我们的cordova 版本(从2.7.0 到3.6.3)。所以我们认为创建一个新项目会更好。
我安装了 cordova 并使用 cordova cli api 创建了一个项目。 我还添加了android平台添加了许多cordova插件。 然后我将我们的煎茶触摸内容复制到 www 文件夹中。
然后我打电话给cordova build android。
之后我在 Android Studio (0.8.11) 中导入了这个 android 项目。
对于我们的应用,我需要从旧项目中复制以下内容
- AndroidManifest.xml
- res/ 目录中的所有内容
- 在 src/ 目录中,我添加了一些我们在应用中需要的东西
在我们自己编写的 java 文件(src/ 目录)中,一切都是红色的。所以我们发现在
src/org.apache.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.gradlefile 有以下依赖项:
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
for (subproject in getProjectList()) {
compile project(subproject)
}
}
在我的 lib/ 目录中只是我手动添加的 jar。
请帮助我/谢谢! :-)
【问题讨论】:
-
彻底检查,这个错误是因为你从多个罐子里得到了相同的东西的引用。
-
谢谢,我发现了我的问题:这是因为我将 cordova java 文件复制到 src/com/apache/cordova/ ...它们已经存在于 /CordovaLib/... 否该应用程序正在编译,但我一直收到错误消息:“Cordova exec 失败:找不到类”,在我的 java 文件中出现“无法解析符号 CordovaPlugin”之类的错误
标签: android apache cordova android-studio