转换为Dalvik格式失败,错误1 - 为什么?

时间:2012-01-11 23:33:35

标签: android dalvik aidl

我只添加了现有的完整工作项目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之前,而不能做一个有计划的&受控迁移。应用程序发布延迟......

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

2 个答案:

答案 0 :(得分:6)

问题终于解决了,使用来自惊人的@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工具 r14 上获得。哇!

答案 1 :(得分:1)

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