2010-12-08 74 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

当构建路径中包含同一个库的多个实例时,会发生这种情况。

相关问题