2012-01-11 61 views
3

我只添加到現有的完全正常的項目,該文件com/android/vending/billing/IMarketBillingService.aidl轉換爲Dalvik格式失敗,錯誤1 - 爲什麼?

(我沒加任何東西(從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文件外部罐子,所以答案here不會在我的情況有所幫助。

更新:我刪除了可疑.aidl文件,清理項目,但問題並沒有消失。奇怪的。

更新:我知道了!我剛剛嘗試運行一個現有的項目,該項目在將SDK升級到9之前已經完美運行,並且我也遇到了同樣的錯誤。我知道我應該避免這種「升級」。現在,我必須浪費時間解決本應不存在的問題,直到根據計劃進行升級,而不是在我forced時進行升級,而無法執行受控遷移的計劃&。應用發佈延遲...

更新:似乎有從default.propertiesproject.properties,但儘管我手動矯正全部轉換錯誤的自動轉換的連接,問題仍然存在。我現在沒有開發環境。這是荒唐的。

+1

至於.aidl文件,它們只生成.java類到gen -folder中(與R.java相同的地方爲項目)。應該在項目清理時將其刪除,但重複檢查不應該造成任何傷害。 – harism 2012-01-12 00:05:59

+0

@harism感謝您的提示。我會檢查這個,但我懷疑這個問題不僅僅是'.aidl',因爲它現在抱怨一個'EditPreferences'文件,它真的只存在一個庫項目。在複製項目時,我可能做了一些我不記得的事情。我討厭帶遲滯的IDE ... +1。 – 2012-01-12 00:13:33

+0

@harism好的,我檢查了.aidl產生的.java類不在任何gen文件夾(多個庫項目)中。我暫時刪除了.aidl文件,所以這沒問題。然而,我發現,現在被抱怨的EditPreferences文件是其他兩個庫項目所使用的Library項目中的第一個.java文件。這用於完美地工作。發生了什麼? – 2012-01-12 00:22:23

回答

6

問題終於解決了,使用了來自驚人的@TheTerribleSwiftTomato的this solution

這是全部由「Changes to Library Projects in Android SDK Tools, r14」造成的。

感謝@谷歌讓我的生活變得如此悲慘。如果您引入系統行爲的根本性變化,當我還沒有準備好吞併隨附的所有信息時(或者至少發出錯誤),不要強制我從SDK 9「升級」到SDK 16消息可以直接指向此更改)。

另一方面,真正感謝@谷歌推出期待已久的,多向往的功能generates each library project into its own JAR file。這是一個真正的救星,它只能從SDK Tools r14上得到。哇!

+0

相關:唯一的問題是,您無法將庫導出爲獨立的JAR文件,以便在多個工作區中使用(您始終需要引用庫源)。無論如何,感謝您記錄你的旅程並回答你自己的問題 - 你留下的幫助很多。 – kape123 2013-02-05 23:34:44

1

如果您使用的是cocos2dx。簡單的問題是你的工作區沒有配置android sdk。只是用你的IDE(eclipse或android studio)來配置一個新的工作區或現有的工作區。它爲我工作

相關問題