我对这个问题感到绝望:我想在我的Android应用程序中导出/运行一个.jar
我添加到构建路径中。我确定我正确地添加了它,还有其他5个.jars,它们都可以正常工作。
有了这个特殊的一个,我得到了上面提到的错误。 我已经尝试过在这个问题中找到的所有内容: "Conversion to Dalvik format failed with error 1" on external 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警告:忽略匿名内心的InnerClasses属性 没有附带的类(iaik.xml.crypto.XSecProvider $ 1) 关联的EnclosingMethod属性。这堂课可能是制作完成的 由一个没有以现代.class文件格式为目标的编译器。该 建议的解决方案是使用a从源代码重新编译类 最新的编译器,没有指定任何“-target”类型选项。 忽视这种警告的后果是反思性操作 在这个类上将错误地表明它是而不是一个内部 类。
... ...
[2012-07-18 10:45:48 - myapp] Dx警告:忽略匿名内心的InnerClasses属性 没有附带的类(iaik.xml.crypto.XSecProvider $ 2) 关联的EnclosingMethod属性。这堂课可能是制作完成的 由一个没有以现代.class文件格式为目标的编译器。该 建议的解决方案是使用a从源代码重新编译类 最新的编译器,没有指定任何“-target”类型选项。 忽视这种警告的后果是反思性操作 在这个类上将错误地表明它是而不是一个内部 类。
错误使用或错误使用核心类(java。*或javax。*)时 没有建立核心库。
这通常是由于无意中包含了一个核心库文件 应用程序的项目,使用IDE(例如Eclipse)时。如果 你确定你不是故意定义一个核心类,那么这个 是最有可能解释发生了什么。
但是,您实际上可能正在尝试在核心中定义类 命名空间,例如,来自a的源代码 非Android虚拟机项目。这肯定不会 工作。它至少会危害您的应用与您的兼容性 该平台的未来版本。它也常常值得怀疑 合法性。
如果你真的打算建立一个核心库 - 这只是 适合作为创建完整虚拟机分发的一部分, 而不是编译应用程序 - 然后使用 “--core-library”选项可以禁止显示此错误消息。
如果你继续使用“--core-library”但实际上正在构建一个 应用程序,然后预先警告您的应用程序仍将失败 在某些时候建立或运行。请为愤怒的顾客做好准备 例如,谁发现你的申请不再运作一次 他们升级他们的操作系统。你应该为此负责 问题
如果您合法地使用恰好位于核心中的某些代码 包装,那么最简单的安全替代方案就是重新包装 那段代码。也就是说,将有问题的类移动到您自己的包中 命名空间。这意味着它们永远不会与核心发生冲突 系统类。 JarJar是一个可以帮助您完成这项工作的工具。 如果你发现你不能这样做,那就表明了这一点 你所走的道路最终将导致痛苦,痛苦,悲伤, 和悲伤。
[2012-07-18 10:45:48 - myapp] Dx 1错误;中止
[2012-07-18 10:45:48 - myapp]转换为Dalvik格式 失败,错误1
这是我的项目在探险家中的表现:
答案 0 :(得分:5)
问题是你所包含的jar在java。*或javax。*命名空间中有一个类。 dx不允许这样做,如上一条重大错误消息所述。
如果您确实需要这些类,则需要使用jarjar工具之类的东西将它们移动到不同的包中。否则,你需要将它们从jar中删除 - 在所有内容被删除之前,有可能让proguard移除它们,我不确定。
答案 1 :(得分:3)
我遇到了同样的问题,我最后通过明确导出我的私人库来解决它。
像: 项目>>属性>> Java构建路径>>图书馆>>添加外部罐子。
注意:从libs文件夹中删除了我的所有私有库。我知道这不对,但它对我有用。
谢谢, 阿尼尔
答案 2 :(得分:2)
请执行以下操作:
project
> properties
> java build path
> libraries
> remove all including android jars
现在,进入项目浏览器,右键单击您正在处理的项目,然后
android tools
> fix project properties.
干净然后再建造。
只需重新启动eclipse,就不会再出现错误了
答案 3 :(得分:1)
如果您使用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,然后将它们再次添加到项目中。
答案 4 :(得分:1)
使用我自己的混淆lib jar时遇到了同样的错误。
我的日志:
警告:忽略一个匿名内部类的InnerClasses属性,该内部类没有关联的EnclosingMethod attribte.This类可能是由一个没有以morden .class文件格式为目标的编译器产生的......
我解决了这个问题:在我模糊我的jar之前,我将“-keepattributes EnclosingMethod”添加到proguard.cfg(或最新的android adt版本中的proguard-project.txt)。
答案 5 :(得分:0)
同意hasanghaforian。最简单的解决方案是删除库项目。 右键单击您的项目 - > Properties |> Java Build Path,然后删除Library Projects