Java Android Dx错误1,无法转换为Dalvik格式
我对这个问题感到绝望:我想导出/运行我的Android应用程序,并在构建路径中添加一个Java Android Dx错误1,无法转换为Dalvik格式,java,android,dalvik,Java,Android,Dalvik,我对这个问题感到绝望:我想导出/运行我的Android应用程序,并在构建路径中添加一个.jar。我确信我添加的是正确的,还有5个其他的罐子,它们都很好用 通过这个特殊的例子,我得到了上面提到的错误。 我已经尝试了这个问题中的所有方法: 谷歌还抛出了其他几个链接。主要问题是,我实际上不明白我附加的消息想告诉我什么,因为如果我将所有JAR添加到一个“普通”javaproject中,它运行得非常好 在Android 4.0.3上开发 proguard 4.8 adt 16.0.1.v20111215
.jar
。我确信我添加的是正确的,还有5个其他的罐子,它们都很好用
通过这个特殊的例子,我得到了上面提到的错误。
我已经尝试了这个问题中的所有方法:
谷歌还抛出了其他几个链接。主要问题是,我实际上不明白我附加的消息想告诉我什么,因为如果我将所有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文件格式为目标的编译器执行。这个
建议的解决方案是使用
最新的编译器,无需指定任何“-target”类型选项。
忽略此警告的后果是反射操作
在该类上,将错误地指示它不是内部
班级
。。。
[2012-07-18 10:45:48-myapp]Dx警告:忽略匿名内部应用程序的InnerClasses属性
类(iaik.xml.crypto.XSecProvider$2),该类不附带
关联的EnclosingMethod属性。这门课很可能是制作出来的
由不以现代.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
这是我的项目在浏览器中的外观:
如果使用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-尝试从项目中删除库项目。
2-尝试导出项目(作为存档文件),从工作区删除项目及其源,然后再次导入。
3-尝试从path中删除JAR,进行干净构建,然后再次将它们添加到项目中 同意哈桑哈福里安的观点。最简单的解决方案是删除项目库。
右键单击您的项目->属性->Java构建路径,然后删除库项目问题是您包含的jar在Java.*或javax.*命名空间中有一个类。dx不允许这样做,如上一条大错误消息中所述
如果您确实需要这些类,则需要使用类似于jar工具的工具将它们移动到另一个包中。否则,您将需要从jar中删除它们——我不确定,在一切都得到dx’d之前,proguard可能会删除它们。我在使用自己的模糊lib jar时也遇到了同样的错误 我的日志: 警告:忽略匿名内部类的InnerClasses属性,该匿名内部类没有关联的EnclosingMethod属性。该类可能是由未针对Moden.class文件格式的编译器生成的
我这样解决了这个问题:在混淆我的jar之前,我在proguard.cfg(或最新android adt版本中的proguard-project.txt)中添加了“-keepattributes EnclosingMethod”。我遇到了同样的问题,我最终通过显式导出我的私有库解决了这个问题 比如: 项目>>属性>>Java构建路径>>库>>添加外部JAR 注意:已从libs文件夹中删除我的所有私有库。我知道
project
> properties
> java build path
> libraries
> remove all including android jars
android tools
> fix project properties.