Eclipse:转换为Dalvik格式失败,错误1。

9

当我在Eclipse中新建项目时,这会立即发生。

我的项目中只有1个jar文件,我已经尝试过多次删除它并重新添加,并在此之后清理了项目。

我已经更新了ProGuard(我想),下载了新版本,并按照这里的帖子替换了lib文件夹。

我的default.properties文件如下:

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.

# Project target.
target=android-8

所以我无法对在另一个线程中提到的ProGuard发表任何评论。 我感觉我已经尝试了所有方法,但是仍然存在这个错误。 不过有一件事我注意到了,如果我前往: window -> preferences -> android -> build。并取消选中 "当外部jar包包含本地库时强制错误"。那么我会收到:"无法解析R" 而不是Dalvik错误。
也没有名为 android.R 的导入。
请问有人能提供一些帮助吗?
9个回答

19

这似乎不是与proguard有关的问题,因为在您的defaults.properties文件中甚至没有启用它。请尝试以下操作:

  1. 取消选中“当外部jar包包含本地库时强制出错”选项(就像您所做的一样)
  2. 从菜单中选择“项目->清理…”
  3. 如果这无法帮助,请确保已正确导入R类。如source.android.com所述:

    Eclipse有时会在使用资源的文件顶部添加import android.R语句,特别是当您要求eclipse对导入进行排序或管理时。这将导致构建失败。请注意这些错误的导入语句并将其删除。

更新:

还可以查看此主题:"Conversion to Dalvik format failed with error 1" on external JAR
检查以下答案(链接会直接带您到答案):


恐怕不行,使用了import android.R并清理过,还是出现同样的错误,然后又把它移除了。现在报告dalvik这个问题。 :-( 重新安装? - Anders Metnik
@AndersMetnik 重新安装一下。如果这样还不行,你能否在某个地方分享你的骨架项目(可以打包成zip文件上传到文件托管网站)?这样我就可以查看并在我的环境中测试它了。 - Idolon
@AndersMetnik 你成功了吗?如果没有,请查看我的更新答案。 - Idolon
重新安装并进行了其他操作,这有所帮助,抱歉我忘记更新问题的解决方法,现在也忘记了 :-/ - Anders Metnik

5

我不小心添加了对android.jar的引用,但它并不是必需的,因为它是android的依赖项,我将其删除后错误消失了。


这个解决方案对我有效。在我的构建路径中取消选中android.jar。 - Lawrence Gimenez

2
我也遇到了这个问题...唯一解决方法是手动下载最新版本的ProGuard(当前版本为4.6),并将Proguard的bin和lib文件夹替换为最新版本。
之后一切都恢复正常了。这显然是一个已记录的错误... http://code.google.com/p/android/issues/detail?id=18359

1
我只是将4.6版本中的bin和lib替换为现有的proguard,这对我起作用了!!! - Hitendra

1
你有新的Android SDK吗?如果有,你需要从proguard网站下载proguard.jar并将其替换到SDK目录中。

1
不知道为什么有人给你点赞... 你显然没有读我的帖子。 - Anders Metnik

0
如果以上解决方案都不适用于您,请尝试以下操作:
  1. 停止寻找在线帮助。
  2. 转向您的项目。即使在应用程序运行期间没有报告错误,Dalvik仍可能以错误的方式解释代码中的某些内容。

我曾经遇到过这样的问题。多次运行/构建/导出禁用Proguard的应用程序都成功了,只有在启用Proguard后才出现错误1。 以下步骤可以帮助您解决问题:

  1. 创建一个新项目。
  2. 为了检测可疑的类,每次运行导出签名应用程序工具时,逐个添加您的类。
  3. 通过逐个添加代码块来缩小该类中的搜索范围。

在我的情况下,错误是由以下原因引起的:

float[][] array1 = null, array2;
for(int i = 0; i < someVal; i++){
    if(array1 == null){
        array1 = new float[row][col];
    }
    else{
        array2 = new float[array1.length][array1[0].length]; // ERROR 1
        // it was assumed that array1 is still null
    }
}

当我用以下内容替换它时:

float[][] array1 = new float[1][1], array2;
for(int i = 0; i < someVal; i++){
    if(i == 0){
        array1 = new float[row][col];
    }
    else{
        array2 = new float[array1.length][array1[0].length]; // ERROR 1
        // it was assumed that array1 is still null
    }
}

错误1已经消失。


0
我在stackoverflow上尝试了很多解决方案,但都不起作用。 我只是打开项目文件夹中的project.properties文件,发现appcompat库被重复添加了两次,像这样: android.library.reference.1=../appcompat_v7 android.library.reference.1=../appcompat_v7
我只删除了其中一行,这对我起作用 :)

0

如果你使用CVS更新,每次都必须清理你的项目。


0

我偶尔也会遇到这个问题,解决方法是关闭“自动构建”。根据我的经验,当自动构建开启时,Eclipse 在构建 APK 时有时会变得混乱。


0

我之前也遇到了这个问题,最后的解决办法是编辑proguard.bat文件,然后问题就消失了。

文件路径:[Android SDK安装目录]\tools\proguard\bin\proguard.bat

修改以下内容:

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

我试过很多其他方法,但最终这个方法对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接