【问题标题】:Conversion to Dalvik format failed with error 1 - Why?转换为 Dalvik 格式失败,出现错误 1 ​​- 为什么?
【发布时间】:2012-02-08 08:08:28
【问题描述】:

我只添加到一个现有的完全工作的项目中,文件com/android/vending/billing/IMarketBillingService.aidl

(我还没有添加任何其他内容(来自 market_billing 示例),因为我什至还没有尝试使用该服务)

它可以完美地编译和构建,但是当我尝试运行它时,我会在控制台中收到以下信息:

java.lang.IllegalArgumentException: already added: Lcom/android/vending/billing/IMarketBillingService$Stub$Proxy;
Dx  at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
Dx  at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
Dx  at com.android.dx.command.dexer.Main.processClass(Main.java:486)
Dx  at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455)
Dx  at com.android.dx.command.dexer.Main.access$400(Main.java:67)
Dx  at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394)
Dx  at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
Dx  at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
Dx  at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
Dx  at com.android.dx.command.dexer.Main.processOne(Main.java:418)
Dx  at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
Dx  at com.android.dx.command.dexer.Main.run(Main.java:206)
Dx  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Dx  at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
Dx  at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
Dx  at java.lang.reflect.Method.invoke(Unknown Source)
Dx  at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:179)
Dx  at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:745)
Dx  at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:634)
Dx  at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:629)
Dx  at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
Dx  at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:172)
Dx  at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:282)
Dx  at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:363)
Dx  at org.eclipse.core.internal.resources.Project$1.run(Project.java:545)
Dx  at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
Dx  at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:524)
Dx  at org.eclipse.core.internal.resources.Project.build(Project.java:123)
Dx  at com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:961)
Dx  at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:146)
Dx  at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853)
Dx  at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702)
Dx  at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:924)
Dx  at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1128)
Dx  at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Dx 3 errors; aborting
Conversion to Dalvik format failed with error 1

知道为什么会发生这种情况吗?

注意:这个添加的 .aidl 文件不是外部 jar,所以答案 here 对我没有帮助。

更新:我删除了那个可疑的.aidl 文件,清理了项目,但问题并没有消失。很奇怪。

更新:我知道!在我将 SDK 从 9 版“升级”到 16 版之前,我刚刚尝试运行一个可以完美运行的现有项目,并且在那里我也遇到了同样的错误。我知道我应该避免这种“升级”。现在,我不得不浪费时间解决一个在我按计划升级之前不应该存在的问题,而不是当我 forced 时,无法进行计划和受控的迁移。应用发布延迟...

更新:似乎与 buggydefault.propertiesproject.properties 的自动转换有关,但尽管我手动更正了所有转换错误,但问题仍然存在持续存在。我现在没有开发环境。这太荒谬了。

【问题讨论】:

  • 至于 .aidl 文件,它们只将 .java 类生成到 gen 文件夹(与项目的 R.java 相同的位置)。应该在项目清理时将其删除,但仔细检查不应造成任何伤害。
  • @harism 感谢您的提示。我会检查这个,但我怀疑一个比.aidl 更严重的问题,因为它现在抱怨一个EditPreferences 文件实际上只存在一个库项目。在复制项目时,我可能做了一些我不记得的事情。我讨厌具有滞后性的 IDE……暂时 +1。
  • @harism 好的,我检查了,从 .aidl 产生的 .java 类不在任何 gen 文件夹(多个库项目)中。我暂时删除了 .aidl 文件,所以没关系。然而,我发现,现在被投诉的 EditPreferences 文件是其他 2 个库项目使用的库项目中的第一个 .java。这曾经完美地工作。发生了什么?
  • @harism 我当然做到了。我什至尝试禁用自动重建,清除所有现有的 Eclipse,重新启动 Eclipse,然后重新启用自动重建 - 无济于事。 Android 开发工具 (Eclipse+SDK+ADT) 的这种不可预测行为越来越frustrating
  • @harism Eclipse/Java 应该是操作系统中立的。实际上并非如此。但我不认为这是这里的根源问题。问题的根源在于 Google 不允许您控制开发环境的配置管理。如果你想改变一件小事,你不能——你必须用它来改变一切。这使得无法知道发生了什么变化,从而加快故障排除。哎呀……

标签: android dalvik aidl


【解决方案1】:

问题终于解决了,使用来自惊人的@TheTerribleSwiftTomato 的this solution

这都是“Changes to Library Projects in Android SDK Tools, r14”造成的。

感谢 @Google 让我的生活变得如此悲惨。如果您在系统行为中引入了根本性的变化,请不要在我还没有准备好吞噬它附带的所有信息时强迫我从 SDK 9“升级”到 SDK 16(或者至少发出一个错误)可以直接指向此更改的消息)。

另一方面,非常感谢 @Google 介绍了期待已久、非常渴望的功能 generates each library project into its own JAR file。这是真正的救命稻草,只能从 SDK Tools r14 上获得。哇!

【讨论】:

  • Related:唯一的问题是你不能在独立的 JAR 文件中导出库以用于多个工作区(你总是需要引用库源)。无论如何,感谢您记录您的旅程并回答您自己的问题 - 您留下的链接很有帮助。
【解决方案2】:

如果您使用的是 cocos2dx。简单的问题是您的工作区没有使用 android sdk 配置。只需使用您的 IDE(eclipse 或 android studio)配置一个新的工作区或现有的工作区。它对我有用

【讨论】:

    猜你喜欢
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多