2010-12-08 71 views
4

我最近更新了我的SDK Tools和ADT Plugin到最新版本(也獲得了Android 2.3)。這需要對我的配置進行一些更改(主要是我添加了proguard.config=procfg.txtdefault.properties,以便我可以使用內置的proguard支持),並從build.xml中刪除舊的proguard配置。現在,我的問題是Eclipse給出了一個相當長的錯誤(我將在問題的最後嵌入)問題是我最近沒有添加任何庫。再次,編譯使用ant按預期工作:Eclipse在工作時給出了「轉換爲Dalvik格式失敗」

$ ant debug 
Buildfile: /home/felix/workspace/XXX/build.xml 
    [setup] Android SDK Tools Revision 8 
    [setup] Project Target: Android 2.3 
    [setup] API level: 9 
    [setup] 
    [setup] ------------------ 
    [setup] Resolving library dependencies: 
    [setup] No library dependencies. 
    [setup] 
    [setup] ------------------ 
    [setup] 
    [setup] WARNING: Attribute minSdkVersion in AndroidManifest.xml (4) is lower than the project target API level (9) 
    [setup] 
    [setup] Importing rules file: tools/ant/main_rules.xml 

-debug-obfuscation-check: 

-set-debug-mode: 

-compile-tested-if-test: 

-dirs: 
    [echo] Creating output directories if needed... 

-pre-build: 

-resource-src: 
    [echo] Generating R.java/Manifest.java from the resources... 

-aidl: 
    [echo] Compiling aidl files into Java classes... 

-pre-compile: 

compile: 
    [javac] /opt/android-sdk/tools/ant/main_rules.xml:361: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds 
    [javac] Compiling 1 source file to /home/felix/workspace/XXX/bin/classes 

-post-compile: 

-obfuscate: 

-dex: 
    [echo] Converting compiled files and external libraries into /home/felix/workspace/XXX/bin/classes.dex... 

-package-resources: 
    [echo] Packaging resources 
    [aapt] Creating full resource package... 

-package-debug-sign: 
[apkbuilder] Creating XXX-debug-unaligned.apk and signing it with a debug key... 

debug: 
    [echo] Running zip align on final apk... 
    [echo] Debug Package: /home/felix/workspace/XXX/bin/XXX-debug.apk 

BUILD SUCCESSFUL 
Total time: 6 seconds 

然而,Eclipse是抱怨重複類或某事:

[2010-12-08 15:06:43 - XXX]: Dx 
UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added: Lcom/android/vending/licensing/AESObfuscator; 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:143) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processClass(Main.java:338) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:315) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.access$100(Main.java:56) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:266) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processOne(Main.java:284) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:220) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.run(Main.java:176) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
[2010-12-08 15:06:43 - XXX]: Dx at java.lang.reflect.Method.invoke(Method.java:597) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
[2010-12-08 15:06:43 - XXX]: Dx 
UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added: Lcom/android/vending/licensing/AESObfuscator; 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:143) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processClass(Main.java:338) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:315) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.access$100(Main.java:56) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:266) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processOne(Main.java:284) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:220) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.run(Main.java:176) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
[2010-12-08 15:06:43 - XXX]: Dx at java.lang.reflect.Method.invoke(Method.java:597) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
[2010-12-08 15:06:43 - XXX]: Dx 
trouble processing: 
[2010-12-08 15:06:44 - XXX]: Dxclass name (com/android/vending/licensing/LicenseCheckerCallback) does not match path (classes/com/android/vending/licensing/LicenseCheckerCallback.class) 
...while parsing classes/com/android/vending/licensing/LicenseCheckerCallback.class 
...while processing classes/com/android/vending/licensing/LicenseCheckerCallback.class 
[2010-12-08 15:06:44 - XXX]: Dx 
trouble processing: 
[2010-12-08 15:06:44 - XXX]: Dxclass name (com/android/vending/licensing/NullDeviceLimiter) does not match path (classes/com/android/vending/licensing/NullDeviceLimiter.class) 
...while parsing classes/com/android/vending/licensing/NullDeviceLimiter.class 
...while processing classes/com/android/vending/licensing/NullDeviceLimiter.class 
[2010-12-08 15:06:44 - XXX]: Dx 
trouble processing: 
[2010-12-08 15:06:44 - XXX]: Dxclass name (com/android/vending/licensing/PreferenceObfuscator) does not match path (classes/com/android/vending/licensing/PreferenceObfuscator.class) 
...while parsing classes/com/android/vending/licensing/PreferenceObfuscator.class 
...while processing classes/com/android/vending/licensing/PreferenceObfuscator.class 
[2010-12-08 15:06:44 - XXX]: Dx 
... --------------------------------------- ... 
... and so on for every class in my project ... 
... --------------------------------------- ... 
[2010-12-08 15:06:44 - XXX]: Dx229 warnings 
[2010-12-08 15:06:44 - XXX]: Dx2 errors; aborting 
[2010-12-08 15:06:44 - XXX] Conversion to Dalvik format failed with error 1 

這究竟是爲什麼?爲什麼它在classes/,這不存在?

該項目工作沒有任何問題,直到昨天,它仍然工作,如果編譯通過ant


編輯:通常Fix project propertiesClean project不起作用。


編輯2:的錯誤不斷來來往往。我沒有任何.jar。另外,我正在使用ProGuard。在某些時候,螞蟻停止工作,以及(不記得的錯誤),我做了

touch `find .` 

,事情又開始工作(Eclipse和螞蟻),有一陣子。現在Eclipse再次發佈錯誤。這是怎麼回事!?


編輯3:這似乎問題出在ProGuard的整合。無論何時我將proguard.config指令從default.properties註釋掉,並將其更新爲項目刷新+清理,它都可以工作。這非常奇怪,因爲在調試模式下構建時,Eclipse不應該通過ProGuard對代碼進行混淆/優化。此外,我的ProGuard配置通過Ant工作得很好。


編輯4:的Eclipse +螞蟻+的ProGuard =不相處在一起。如果我關閉Eclipse,取消註釋我的proguard.config指令,使用Ant構建,評論我的proguard.config指令,打開Eclipse,Eclipse開始噴出錯誤。這看起來像是Ant正在留下一些東西。如果我做一個乾淨的項目,它工作得很好。

+0

您正在使用哪種ADT版本? `8.0.0`不再是'8.0.1`幾個小時前發佈的最新版本。 – 2010-12-08 13:37:22

+0

感謝您的提醒,我剛剛更新,但沒有解決我的問題。 – Felix 2010-12-08 13:52:13

+0

@Octavian實際上,在Eclipse第二次重啓以及更多的「乾淨的項目」操作後,它似乎正在工作。發表您的評論作爲答案,以便我可以接受它。 – Felix 2010-12-08 13:55:18

回答

4

看來問題出在Eclipse和Ant不相處的時候。我已經停止使用Ant了,現在Eclipse 似乎工作正常(我甚至可以使用嚮導導出已簽署的&混淆軟件包)。因此,總而言之,Ant + Eclipse =一個很大的不是。

2

確保在幾個小時前更新到最新的ADT版本8.0.1

+0

我沒有把這個答案作爲接受的答案,因爲錯誤再次出現。這與ADT無關。 – Felix 2010-12-13 12:45:47

5

執行「ant clean」,然後在Eclipse中清理項目。確保在執行此操作之前保存您的proguard生成的文件(/ bin/proguard),因爲「bin」和「gen」dirs會被刪除。討厭的解決方案,但這是我如何解決這個問題。

0

僅供參考當我使用ant構建我的一個應用程序時,我設法得到相同的錯誤信息。然而在我的情況下,我在libs文件夾中留下了兩個版本的jar文件。這兩個jar文件都包含在我修改過的ant腳本中(根據Can't build and run an android test project created using "ant create test-project" when tested project has jars in libs directory的建議),從而導致此問題。我的eclipse項目只有一個指定的庫,所以沒有遇到問題。

我的解決方案很簡單,我將兩個jar文件中的一個重命名爲另一個擴展名.jazz,並且我能夠使用ant成功構建項目。

1

我有同樣的問題。

我工作的解決方案:
螞蟻乾淨,使用時在庫到Eclipse項目擺脫DEX錯誤
添加.jar文件(AADT錯誤?)

我沒有問題設置中的proguard。

0

只是一個小小的花費,我們遇到了同樣的問題,因爲jar被卡在我們的/ libs /文件夾中。在Eclipse中一切都很好,但是我們的build slave抱怨重複的類定義。 我們有和普通的.java一樣的類,我們的/ libs /中的.jar沒有包含在構建路徑中,但似乎像我們的Jenkins構建服務器上的ant構建腳本包含了它。 從/ libs /中刪除它,現在一切恢復正常:)

0

當構建路徑中包含同一個庫的多個實例時,會發生這種情況。

相關問題