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

时间:2011-09-26 13:39:59

标签: android eclipse dalvik

当我在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 个答案:

答案 0 :(得分:19)

这看起来不像proguard的问题,因为它甚至没有在 defaults.properties 文件中启用。请尝试以下方法:

  1. 取消选中“当外部jar包含本机库时强制错误”选项(就像您一样)
  2. 从菜单
  3. 中选择“项目 - >清洁...”
  4. 如果这样做无助于确保您导入了正确的R类。如source.android.com所述:
      Eclipse有时候喜欢在这里添加一个导入android.R语句   使用资源的文件顶部,尤其是当您询问eclipse时   排序或以其他方式管理进口。这将导致你的制作   打破。注意这些错误的import语句并删除它们。

  5. 更新

    还要看一下这个主题:"Conversion to Dalvik format failed with error 1" on external JAR 检查以下答案(链接将直接带您回答):

答案 1 :(得分:5)

我错误地添加了对android.jar副本的引用,这不是必需的,因为它是一个Android依赖项,我删除了这个并且错误消失了。

答案 2 :(得分:2)

我也开始遇到这个问题......唯一能解决这个问题的是手动下载最新版本的ProGuard(目前是4.6版)并用最新版本替换SDK版本的Proguard的bin和lib文件夹。 / p>

之后一切都开始了。这显然是一个记录错误... http://code.google.com/p/android/issues/detail?id=18359

答案 3 :(得分:1)

你有新的Android SDK吗?如果您这样做,则必须从proguard网站下载proguard.jar并将其替换为SDK目录。

答案 4 :(得分:0)

我只是在解决这个问题,我最后做的是编辑proguard.bat文件,问题消失了

它位于:[Android SDK安装目录] \ tools \ proguard \ bin \ proguard.bat

更改

调用%java_exe%-jar“%PROGUARD_HOME%”\ lib \ proguard.jar%*

调用%java_exe%-jar“%PROGUARD_HOME%”\ lib \ proguard.jar%1%2%3%4%5%6%7%8%9

我尝试了很多其他的东西,但这就是为我做的。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

我偶尔会遇到这个问题,对我来说,解决方法是关闭“自动构建”#39;。根据我的经验,当打开自动构建时,Eclipse在构建apks时有时会感到困惑。

答案 7 :(得分:0)

如果所有解决方案都不适合您,请尝试执行以下操作:

  1. 停止寻找在线帮助。
  2. 转到您的项目。即使在应用程序运行期间没有报告错误,Dalvik也会以错误的方式解释代码中的内容。
  3. 我遇到了这样的问题。禁用Proguard的应用程序的多次运行/构建/导出是成功的,只有在启用Proguard后才会出现错误1。 以下步骤可以帮助您解决问题:

    1. 创建一个新项目。
    2. 为了检测可疑类,每次运行导出签名的应用程序工具时,都要逐个添加类。
    3. 通过逐个添加代码块来缩小该类中的搜索范围。
    4. 在我的情况下,错误是由以下原因引起的:

      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
          }
      }
      

      ERROR 1消失了。

答案 8 :(得分:0)

我在stackoverflow上尝试了很多解决方案,但没有任何方法可以帮助我。 我只是打开项目文件夹中的project.properties文件,并在这里添加了两次appcompat库 android.library.reference.1 = .. / appcompat_v7 android.library.reference.1 = .. / appcompat_v7

我刚删除了一行,这对我有用:)