我对这个问题感到绝望:我想导出/运行我的 Android 应用程序,.jar
并在构建路径中添加了一个额外的应用程序。我确定我添加正确,还包括 5 个其他 .jar,它们都可以正常工作。
有了这个特殊的,我得到了提到的错误。我已经尝试了可以在这个问题中找到的所有内容: 外部 JAR 上的“Conversion to Dalvik format failed with error 1”
和其他几个链接谷歌吐出。主要问题是,我实际上不明白我附加的消息想要告诉我什么,因为如果我将所有 jar 添加到“普通”javaproject 中,它运行得非常好......
在 Android 4.0.3 上开发,
proguard 4.8,
广告 16.0.1.v201112150204-238534,
日食 3.7.1.r37
请帮我
[2012-07-18 10:45:48 - myapp] Dx 警告:忽略不带有关联 EnclosureMethod 属性的匿名内部类 (iaik.xml.crypto.XSecProvider$1) 的 InnerClasses 属性。此类可能是由不针对现代 .class 文件格式的编译器生成的。推荐的解决方案是从源代码重新编译类,使用最新的编译器并且不指定任何“-target”类型选项。忽略此警告的后果是此类上的反射操作将错误地指示它不是内部类。
……
[2012-07-18 10:45:48 - myapp] Dx 警告:忽略不带有关联 EnclosureMethod 属性的匿名内部类 (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
这就是我的项目在资源管理器中的样子: