【问题标题】:Conversion to Dalvik format failed: Unable to execute dex SDK Tools 22.3转换为 Dalvik 格式失败:无法执行 dex SDK Tools 22.3
【发布时间】:2015-04-14 17:54:40
【问题描述】:

多个 dex 文件定义 Lcom/google/ads/AdRequest$ErrorCode

最新的 ADT、最新的 SDK 工具 (22.3)。

我试过了:

  1. 清理/重建
  2. 更新 Eclipse
  3. 删除 bin 和 gen 文件夹
  4. 重启 Eclipse
  5. 使用 Ant 手动构建
  6. 加上其他一些东西

我所有的项目现在都针对 API lvl 19。

我不知道该怎么办。

谢谢

【问题讨论】:

    标签: android


    【解决方案1】:

    多个 dex 文件错误只是告诉您您包含来自不同来源的相同类文件。因此,重新启动 Eclipse 或使用 Ant 构建将无济于事,因为您的项目设置无效。

    由于您没有指定使用的 jar,因此无法确定发生了什么。

    但是,最新的 Google Play 库包含广告,我猜您会同时包含 Admob 和 Google Play 服务,它们显然包含相同的类。在这种情况下,您应该迁移您的代码以使用 Google Play 服务广告并从您的项目中删除 admob jar。

    【讨论】:

    • 感谢您指出这一点,我在更新之前没有遇到任何问题...问题是我使用的是 DFPAdView,如果我删除 GoogleAdMobSdk-6.4.1.jar 则它不可用跨度>
    • 就我而言 - 我根本没有在应用程序中使用广告或 AdMob!仍然出现该错误。这有多蠢???
    • 这仍然是同一个问题,只是与不同的依赖关系有关:您从不同的依赖关系中包含两次相同的类文件......
    • 如果我们想在 android 2.1 及更高版本上展示广告怎么办。如果我们使用播放服务库中的 adView,它会崩溃。
    • @botteaap 但是 Google play 服务仅适用于 2.2 和更新版本,我的应用也支持 2.1。我应该怎么做?
    【解决方案2】:

    *右键单击项目名称并选择构建路径。

    *然后选择配置构建路径。

    *从 Java Build Path 中选择选项卡 Order and Export。

    *取消选中 .jar 库。

    该错误通常是由于库中的多样性造成的。

    【讨论】:

      【解决方案3】:

      您检查过您的 xml 文件吗?我有同样的问题(还没有解决),我忘了从以下位置更改 adView 属性:

      <com.google.ads.AdView
          android:id="@+id/adView"
      

      <com.google.android.gms.ads.AdView
          android:id="@+id/adView"
      

      那么你也应该检查你的

      xmlns:ads="http://schemas.android.com/apk/lib/com.google.android.gms.ads"
      

      (不知道这是否正确......)

      编辑: 找到这个:

          <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    xmlns:ads="http://schemas.android.com/apk/res-auto"
                    android:orientation="vertical"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
        <com.google.android.gms.ads.AdView android:id="@+id/adView"
                               android:layout_width="wrap_content"
                               android:layout_height="wrap_content"
                               ads:adUnitId="MY_AD_UNIT_ID"
                               ads:adSize="BANNER"/>
      </LinearLayout>
      

      (来源:https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals

      编辑2:

      好的,现在我解决了我的问题。我真是个白痴…… 好吧,我将 AdMob SDK 集成到服务库中……我删除了它,一切又恢复了!所以删除 services_lib,下载它并再次导入,我猜应该可以。祝你好运!

      【讨论】:

      • 我没有使用 XML 广告,它们都是在运行时生成和添加的
      【解决方案4】:

      从我的项目中删除“GoogleAdMobAdsSdk-6.4.1.jar”后工作正常。 不要忘记将 Google Play 服务作为库添加到您的应用程序中。 问候!

      【讨论】:

        【解决方案5】:

        这是因为 Google Play 服务中有 google Ads。 这就是为什么你有多个 dex 错误。

        http://developer.android.com/reference/com/google/android/gms/ads/AdRequest.html

        【讨论】:

          【解决方案6】:

          如果你也在使用google play服务,那就有冲突了。

          【讨论】:

            【解决方案7】:

            Eclipse 项目属性->Java 构建路径->排序和导出

            取消选中 Android 私有库。

            不要在你的项目中同时使用 google play service lib 的 jar 文件和库项目。

            【讨论】:

              猜你喜欢
              • 2013-03-05
              • 1970-01-01
              • 2014-01-25
              • 2012-10-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-02-10
              • 1970-01-01
              相关资源
              最近更新 更多