Android Dx Error1,无法转换为Dalvik格式

我对这个问题感到绝望:我想用一个额外的.jar导出/运行我的Android应用程序。我添加到buildpath中。 我确定我正确地添加了它,还有其他5个.jars,它们都工作正常。

有了这个特别的,我得到了上面提到的错误。 我已经尝试过在这个问题中找到的所有内容: “转换为Dalvik格式失败,错误1”在外部JAR上

和其他几个链接谷歌吐了出来。 主要的问题是,我实际上不明白我追加的消息想要告诉我什么,因为如果我将所有的jar子添加到“正常”的javaproject中,它运行得非常好……

在Android 4.0.3上开发,

proguard 4.8,

adt 16.0.1.v201112150204-238534,

eclipse 3.7.1.r37

请帮我

[2012-07-18 10:45:48 – myapp] Dx警告:忽略没有关联的EnclosingMethod属性的匿名内部类(iaik.xml.crypto.XSecProvider $ 1)的InnerClasses属性。 这个类可能是由一个没有以现代.class文件格式为目标的编译器生成的。 建议的解决方案是使用最新的编译器从源代码重新编译类,而不指定任何“-target”类型选项。 忽略此警告的后果是,对此类的reflection操作将错误地指示它不是内部类。

……

[2012-07-18 10:45:48 – myapp] Dx警告:忽略没有关联的EnclosingMethod属性的匿名内部类(iaik.xml.crypto.XSecProvider $ 2)的InnerClasses属性。 这个类可能是由一个没有以现代.class文件格式为目标的编译器生成的。 建议的解决方案是使用最新的编译器从源代码重新编译类,而不指定任何“-target”类型选项。 忽略此警告的后果是,对此类的reflection操作将错误地指示它不是内部类。

在不构建核心库时,不明智或错误地使用核心类(java。*或javax。*)。

这通常是由于在使用IDE(例如Eclipse)时无意中在应用程序的项目中包含了核心库文件。 如果你确定你不是故意定义一个核心类,那么这就是最可能的解释。

但是,您实际上可能正在尝试在核心命名空间中定义一个类,您可能已经从其中获取了一个类,例如,来自非Android虚拟机项目。 这肯定是行不通的。 它至少会危害您的应用与该平台的未来版本的兼容性。 它的合法性通常也是有问题的。

如果您真的打算构建一个核心库 – 它只适合作为创建完整虚拟机分发的一部分,而不是编译应用程序 – 那么使用“–core-library”选项来抑制此错误消息。

如果你继续使用“–core-library”但实际上正在构建一个应用程序,那么预先警告你的应用程序在某些时候仍然无法构建或运行。 请为愤怒的客户做好准备,例如,一旦升级操作系统,您的应用程序就会停止运行。 你应该为这个问题负责。

如果您合法地使用恰好位于核心软件包中的某些代码,那么最简单的安全替代方法是重新打包该代码。 也就是说,将有问题的类移动到您自己的包命名空间中。 这意味着它们永远不会与核心系统类冲突。 JarJar是一个可以帮助您完成这项工作的工具。 如果你发现你不能做到这一点,那就表明你所走的道路最终将导致痛苦,痛苦,悲伤和悲伤。

[2012-07-18 10:45:48 – myapp] Dx 1错误; 中止

[2012-07-18 10:45:48 – myapp]转换为Dalvik格式失败,错误1

这就是我的项目在探险家中的表现: http://s14.directupload.net/images/120718/zzy6mmym.jpg

问题是你所包含的jar在java。*或javax。*命名空间中有一个类。 dx不允许这样,如上一个大错误消息中所述。

如果您确实需要这些类,则需要使用jarjar工具之类的东西将它们移动到不同的包中。 否则,你需要将它们从jar中删除 – 在所有内容被删除之前,有可能让proguard删除它们,我不确定。

我遇到了同样的问题,我最后通过显式导出我的私有库来解决它。

喜欢:项目>>属性>> Java构建路径>>库>>添加外部jar。

注意:从libs文件夹中删除了我的所有私有库。 我知道这不正确,但它对我有用。

谢谢,Anil

做如下:

 project > properties > java build path > libraries > remove all including android jars 

现在,进入项目浏览器,右键单击您正在处理的项目,然后

 android tools > fix project properties. 

做一个干净,然后建立。

只需重新启动eclipse,就不会再出现错误

如果您使用Win7更改此行:

 call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %* 

proguard.bat文件中:

 call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9 

proguard.bat位于:

[Android SDK安装目录] \ tools \ proguard \ bin \ proguard.bat

编辑
我希望这些组合可以帮助您:
1 – 尝试从项目中删除libraries projects项目。
2 – 尝试导出项目(作为存档文件),从工作区删除项目及其源,然后再次导入。
3 – 尝试从路径中删除jar,执行clean-build,然后将它们再次添加到项目中。

使用我自己的混淆lib jar时遇到了同样的错误。

我的日志:

警告:忽略没有关联的EnclosingMethod attribte的匿名内部类的InnerClasses属性。这个类可能是由一个没有以morden .class文件格式为目标的编译器产生的…

我解决了这个问题:在我混淆我的jar之前,我将“-keepattributes EnclosingMethod”添加到proguard.cfg(或最新的android adt版本中的proguard-project.txt)。

同意hasanghaforian。 最简单的解决方案是删除库项目。 右键单击您的项目 – > Properties-> Java Build Path,然后删除Library Projects