原文:http://hsx9566.iteye.com/blog/1142002
最近发现在家的本本,在项目加入混淆之后,导出都会提示
- 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等声明过了,就无需再处理。
新版本更为方便。
如何还有提示这样的通常是第三方的包没声明保持现有类名。看错误的提示相应声明下就可以了。