【发布时间】:2013-12-05 15:30:24
【问题描述】:
我对这个问题感到绝望:我想导出/运行我的 Android 应用程序,并在构建路径中添加了一个额外的 .jar。我确定我添加正确,还包括其他 5 个 .jar,它们都可以正常工作。
有了这个特殊的,我得到了提到的错误。 我已经尝试了可以在这个问题中找到的所有内容: "Conversion to Dalvik format failed with error 1" on external JAR
和其他几个链接谷歌吐出。主要问题是,我实际上不明白我附加的消息想要告诉我什么,因为如果我将所有 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 警告:忽略匿名内部的 InnerClasses 属性 不附带的类 (iaik.xml.crypto.XSecProvider$1) 关联的 EnclosureMethod 属性。这个类可能是制作的 由不针对现代 .class 文件格式的编译器。这 推荐的解决方案是从源代码重新编译类,使用 最新的编译器,并且没有指定任何“-target”类型选项。 忽略此警告的后果是反射操作 在这个类上会错误地指出它是 not 一个内部 类。
... ...
[2012-07-18 10:45:48 - myapp] Dx 警告:忽略匿名内部的 InnerClasses 属性 不附带的类 (iaik.xml.crypto.XSecProvider$2) 关联的 EnclosureMethod 属性。这个类可能是制作的 由不针对现代 .class 文件格式的编译器。这 推荐的解决方案是从源代码重新编译类,使用 最新的编译器,并且没有指定任何“-target”类型选项。 忽略此警告的后果是反射操作 在这个类上会错误地指出它是 not 一个内部 类。
在以下情况下对核心类(java.* 或 javax.*)的不明智或错误使用 不构建核心库。
这通常是由于无意中包含了核心库文件 您的应用程序的项目,当使用 IDE(例如 Eclipse)时。如果 你确定你不是故意定义一个核心类,那么这个 是对正在发生的事情的最可能的解释。
但是,您实际上可能正在尝试在核心中定义一个类 命名空间,您可能已经获取了它的来源,例如,从 非安卓虚拟机项目。这肯定不会 工作。至少,它会危害您的应用程序与 平台的未来版本。它也经常是有问题的 合法性。
如果你真的打算建立一个核心库——这只是 适合作为创建完整虚拟机分发的一部分, 而不是编译应用程序 - 然后使用 “--core-library”选项来禁止显示此错误消息。
如果您继续使用“--core-library”,但实际上是在构建一个 应用程序,然后预先警告您的应用程序仍然会失败 在某个时候构建或运行。请为愤怒的顾客做好准备 例如,他们发现您的应用程序停止运行一次 他们升级他们的操作系统。你将为此负责 问题。
如果您合法地使用某些恰好位于核心中的代码 包装,那么您拥有的最简单安全的替代方法是重新包装 那个代码。也就是说,将有问题的类移动到您自己的包中 命名空间。这意味着它们永远不会与核心冲突 系统类。 JarJar 是一个可以帮助您完成这项工作的工具。 如果你发现你不能做到这一点,那么这表明你 你所走的道路最终会导致痛苦、苦难、悲伤, 和悲叹。
[2012-07-18 10:45:48 - myapp] Dx 1 错误;中止
[2012-07-18 10:45:48 - myapp] 转换为 Dalvik 格式 失败,错误 1
这就是我的项目在资源管理器中的样子:
【问题讨论】:
-
您能否确认您是否没有添加过两次jar?
-
是的,我想我在过去 30 分钟内删除并重新添加了 100 次。里面什么都没有。但有趣的是,实际上还有一行写着 (iaik.xml.crypto.XSecProvider$1)。