`
hsx9566
  • 浏览: 174046 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

有关 Conversion to Dalvik format failed with error 1

 
阅读更多
最近发现在家的本本,在项目加入混淆之后,导出都会提示
Conversion to Dalvik format failed with error 1


从网上看到的都是转来转去的解决方法:

android低版本工程(如1.5)放到高版本环境中(如2.2)可能会上述错误,解决方法如下:
1。 如果不修改android sdk版本,则使用project clean 命令作用于某工程即可。
       (该处理方式只是在高版本中兼容了低版本工程,未真正意义上的升级)
2。 如果修改android sdk版本,则需要以下几个步骤:
       1)修改SDK
             选择工程,build path --> configure build path ---> library 删除引用的低版本SDK,
             然后add External JARs,选择高版本SDK,OK,保存
        2)修改classpath文件 
             该文件可能存在该项: 
        3) 修改AndroidManifest.xml
             在AndroidManifest.xml文件中,application标签后添加
        4) 修改default.properties(很重要)
              该文件最后一行(前面没用#的)target=android-3 该成target=android-8,保存。
        再看看你的工程和新建的android 2.2的工程结构就一样了。



这个就解决不了我这问题。

接着我重新下载eclipse,并新建一个项目,发现也一样导出不了。
最终在一篇文章中让我解决了这问题,这是android-sdk_r12 的问题,如下:

http://stackoverflow.com/questions/6605971/android-sdk-tools-revision-12-has-problem-with-proguard-error-conversion-to-d




我采用的解决方法是:

http://code.google.com/p/android/issues/detail?id=18359




android-sdk-windows\tools\proguard\bin目录找到:

proguard.bat



用记事本打开,内容如下:


ECHO OFF

REM Start-up script for ProGuard -- free class file shrinker, optimizer,
REM obfuscator, and preverifier for Java bytecode.

rem Change current directory and drive to where the script is, to avoid
rem issues with directories containing whitespaces.
cd /d %~dp0

IF EXIST "%PROGUARD_HOME%" GOTO home
SET PROGUARD_HOME=..
:home

set java_exe=
call "%PROGUARD_HOME%"\..\lib\find_java.bat

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*





call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*
改为:
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
即可!

我对比了之前的版本,发现这改法,就是改成和之前SDK版本中含有的proguard.bat文件一致。



现在最新的android-sdk_r18-windows已经没有此问题了!
而且默认已对android-support-v4.jar等声明过了,就无需再处理。
新版本更为方便。

如何还有提示这样的通常是第三方的包没声明保持现有类名。看错误的提示相应声明下就可以了。
分享到:
评论
10 楼 ningv 2016-05-30  
修改proguard.bat还是不行,看了LZ提供的论坛,里面的网友说升级proguard后问题就解决了,我自己也成功了。
proguard路径:android-sdk-windows\tools\proguard
我升级到了5.1
9 楼 chunjuan0126 2013-10-14  
楼主,我现在用的是Android 4.3的,Android-18的,还是有这样的问题。
我Manifest里面已经改好了uses-sdk
<uses-sdk android:minSdkVersion="18"></uses-sdk>
但是还是不行。
我想知道 proguard.cfg 文件在哪里?
要修改类似
-dontwarn **CompatHoneycomb  
-dontwarn **CompatCreatorHoneycombMR2  
-dontwarn android.support.v4.view.**  
-dontwarn android.support.v4.android.**  
-dontwarn android.support.v4.widget.**  
-keep class android.support.v4.** { *; } 
这种内容吗?
8 楼 夜色蓝 2012-10-27  
真的好用,谢谢啦
7 楼 icefireliu 2012-06-25  
谢谢,在尝试了网上流行的方案后。这个方案适用我的情况,很不错。谢谢了
6 楼 hsx9566 2012-04-26  
lijin3096 写道
为什么我都试过了,为什么都还报Conversion to Dalvik format failed with error 1 我要崩溃了。。。

出现这个的另一个原因是引用了第三方jar
通常在项目里用了第三方jar文件需要作类似如下处理:
比如用到了android-support-v4.jar:
那么需要在
proguard.cfg

里增加:
-dontwarn **CompatHoneycomb
-dontwarn **CompatCreatorHoneycombMR2
-dontwarn android.support.v4.view.**
-dontwarn android.support.v4.android.**
-dontwarn android.support.v4.widget.**
-keep class android.support.v4.** { *; }
5 楼 lijin3096 2012-04-25  
为什么我都试过了,为什么都还报Conversion to Dalvik format failed with error 1 我要崩溃了。。。
4 楼 逍遥天下 2012-04-07  
谢谢·
3 楼 hilary3113 2011-11-24  
感谢楼主
2 楼 nocb 2011-11-02  
可以更新 proguard 到4.6  ,把最新的 lib  和 bin 文件覆盖,就可以了
没必要 修改 批处理文件
1 楼 brick 2011-10-22  
感谢楼主。
我也是遇到这个问题,按照第一种方法没能解决,按照第二种方法就搞定了。
我是开发环境更新一次后出现这个问题的。

相关推荐

Global site tag (gtag.js) - Google Analytics