【问题标题】:Exception trying to execute Android App from Eclipse To Android Studio尝试从 Eclipse 到 Android Studio 执行 Android 应用程序的异常
【发布时间】:2015-07-13 13:10:45
【问题描述】:

我曾尝试将一个Eclipse Android 项目迁移到Android Studio,两种方法都试过了,直接从Android Studio 打开,先在Eclipse 中迁移到Gradle,然后在Android Studio 中打开。

然后我尝试删除 Google Play 库文件夹并将其添加到我的 Gradle 文件中,然后项目执行此操作:

  • 制作项目确定
  • 清理项目确定
  • 重建项目确定
  • Gradle 同步并下载大量 DLL OK
  • 播放或调试 KO 并给我这个错误:

错误:任务执行失败 ':goSmart.guestperience.MoncloaDeSanLazaro:dexDebug'.

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java'' 以非零退出值 2 结束

错误:任务执行失败 ':goSmart.guestperience.MoncloaDeSanLazaro:dexDebug'.

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/库/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' 以非零退出值 2 结束

错误:任务执行失败 ':goSmart.guestperience.MoncloaDeSanLazaro:dexDebug'.

com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/库/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java'' 以非零退出值 2 结束

我从 JDK 1.6 开始,然后更新到 1.7,然后再更新到 1.8,看看是否是问题所在。

如果我不删除 Google Play Dervices 文件夹,项目就可以正常工作。

如果这很重要,我正在使用 MAC。

如果解决这个问题很重要,我的项目中有this 其他问题发布在堆栈溢出中。

这是我的项目结构:

这是所有项目的 build.grade 文件

主要的warper项目(guestperience 1.0.1 Moncloa De San Lazaro):

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.0'
    }
}

goSmart.guestperience.MoncloaDeSanLazaro(这是我编码的地方):

apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':librarySmartHotel')
    compile 'com.google.android.gms:play-services:7.3.0'
}

android {
    compileSdkVersion 16
    buildToolsVersion "22.0.1"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

图书馆智能酒店:

apply plugin: 'com.android.library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':main')
}

android {
    compileSdkVersion 16
    buildToolsVersion '22.0.1'

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

主要:

apply plugin: 'com.android.library'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

android {
    compileSdkVersion 16
    buildToolsVersion '22.0.1'

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

我在想一些配置丢失(也许),事实是我超级迷路。

我是一名 iOS 程序员,这是我在 Android 中的第一步,该项目已由另一个人完成,现在我应该继续,所以假设我正在与 Android Studio 和看来我要输了;-P

感谢您的帮助。

更新:

我在日志中找到了这个:

AGPBI: {"kind":"SIMPLE","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","position":{},"original":"UNEXPECTED TOP-LEVEL 例外:"} AGPBI: {"kind":"SIMPLE","text":"com.android.dex.DexException: 多个 dex 文件定义 Lcom/google/android/gms/analytics/internal/Command$1;","position":{},"original":"com.android.dex.DexException: 多个dex文件定义 Lcom/google/android/gms/analytics/internal/Command$1;"} AGPBI: {"种类":"简单","文本":"\tat com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)","position":{},"original":"\tat com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)","position":{},"original":"\tat com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)","position":{},"original":"\tat com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)","position":{},"original":"\tat com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)"} AGPBI: {"种类":"简单","文本":"\tat com.android.dx.merge.DexMerger.merge(DexMerger.java:189)","position":{},"original":"\tat com.android.dx.merge.DexMerger.merge(DexMerger.java:189)"} AGPBI: {"种类":"简单","文本":"\tat com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)","position":{},"original":"\tat com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)"} AGPBI: {"kind":"SIMPLE","text":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)","position":{},"original":"\tat com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)"} AGPBI: {"种类":"简单","文本":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)","position":{},"original":"\tat com.android.dx.command.dexer.Main.run(Main.java:246)"} AGPBI: {"种类":"简单","文本":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)","position":{},"original":"\tat com.android.dx.command.dexer.Main.main(Main.java:215)"} AGPBI: {"种类":"简单","文本":"\tat com.android.dx.command.Main.main(Main.java:106)","position":{},"original":"\tat com.android.dx.command.Main.main(Main.java:106)"}

【问题讨论】:

  • 尝试取消勾选 Settings->Compiler->Use In-process build 然后清除缓存并重启 IDE
  • @Eenvincible 谢谢,但这并没有解决问题
  • 可能是重复依赖:stackoverflow.com/a/32973987/3166417

标签: java android eclipse android-studio gradle


【解决方案1】:

问题来自 Android Play Services 7.3.0。

试试:

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87'
}

或启用 multiDex:

defaultConfig {
    minSdkVersion 14
    targetSdkVersion 19
    versionCode 1
    versionName versionNameVar
    multiDexEnabled true
}

(multiDex 解决方案编译,但可能在应用启动时崩溃)

【讨论】:

  • 对不起,我的朋友你在哪里,问题是我必须从 libs 文件夹中删除旧的库。
  • 非常感谢!解决了我的问题!
  • 它也对我有用。 multiDex 有什么作用?为什么会在应用启动时崩溃?
  • 我不知道为什么它在某些项目中崩溃,当我写这个答案时日志不是很清楚,但是如果你尝试并且它没有崩溃,你很高兴,否则你必须更改播放服务的版本,也许 8.1.0 解决了这个问题
【解决方案2】:

就我而言,我只需要删除旧库。

【讨论】:

    【解决方案3】:

    尝试始终使用最新版本的 google play 进行编译

    试试这个:compile 'com.google.android.gms:play-services:8.1.0'

    来自:Setting up google play services

    【讨论】:

      【解决方案4】:

      几个小时后,我找到了答案。

      真正的问题是您有多个内部具有相同类的库,因此解决方案是从其中一个库中删除重复文件。

      您必须删除带有重复文件的库,或者:

      1. 使用 WinRAR、7Zip 或其他方式打开库 libGoogleAnalyticsServices.jar
      2. 转到com/google/android/gms/analytics/internal并删除文件Command$1.classCommand.class

      在您的情况下,您可能需要删除其他重复文件,因为您有很多文件,所以不确定。无论哪种方式,您也可以强制它忽略其中一些文件如果上述方法不起作用。将以下代码放入 build.gradle 文件的 Android 块中:

      defaultConfig {
          multiDexEnabled true
      }
      
      dexOptions {
          preDexLibraries = false
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-18
        • 2012-05-22
        • 2021-10-14
        • 2019-04-20
        • 2021-02-14
        • 2015-04-26
        • 1970-01-01
        相关资源
        最近更新 更多