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

bil*_*oor 2 java android dalvik

我对这个问题感到非常绝望:我想导出/运行我的Android应用程序,.jar并在构建路径中添加了一个.我确定我正确添加了它,还有其他5个.jars,它们都运行正常.

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

和其他几个链接谷歌吐出来.主要的问题是,我实际上不明白我追加的消息是什么想告诉我,因为如果我将所有的罐子添加到"普通"的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"类型的选项.忽略此警告的后果是,对此类的反射操作将错误地指示它不是内部类.

......

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

在不构建核心库时,不明智或错误地使用核心类(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

Jes*_*eke 5

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

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