尝试从 Eclipse 到 Android Studio 执行 Android 应用程序的异常 [英] Exception trying to execute Android App from Eclipse To Android Studio
问题描述
我曾尝试将一个 Eclipse Android 项目迁移到 Android Studio,我尝试了两种方法,直接从 Android Studio 打开并先在 Eclipse 中迁移到 Gradle,然后在 Android Studio 中打开它.
I have tried to migrate an Eclipse Android project to Android Studio, I have tried both ways, open directly from Android Studio and migrating to Gradle in Eclipse first and then open it in Android Studio.
然后我尝试删除 Google Play 库文件夹并将其添加到我的 Gradle 文件中,然后项目执行此操作:
Then I have tried to remove the Google Play library folder and added it in my Gradle file, and then the project do this:
- 使项目OK
- 清理项目好的
- 重建项目确定
- Gradle 同步并下载大量 DLL OK
- 播放或调试 KO 并给我以下错误:
错误:任务执行失败':goSmart.guestperience.MoncloaDeSanLazaro:dexDebug'.
Error:Execution failed for task ':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 结束
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'' finished with non-zero exit value 2
或
错误:任务执行失败':goSmart.guestperience.MoncloaDeSanLazaro:dexDebug'.
Error:Execution failed for task ':goSmart.guestperience.MoncloaDeSanLazaro:dexDebug'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command'/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java''以非零退出值 2 结束
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
或
错误:任务执行失败':goSmart.guestperience.MoncloaDeSanLazaro:dexDebug'.
Error:Execution failed for task ':goSmart.guestperience.MoncloaDeSanLazaro:dexDebug'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command'/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java''以非零退出值 2 结束
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 2
我从 JDK 1.6 开始,然后更新到 1.7,然后更新到 1.8,看看是否有问题.
I have started with JDK 1.6, then updated to 1.7 and then to 1.8 to see if that was the problem.
如果我不删除 Google Play Dervices 文件夹,该项目就可以正常工作.
If I don't delete the Google Play Dervices folders the project works just fine.
如果这很重要,我正在使用 MAC.
I'm using a MAC if that is important.
如果解决这个问题很重要,我有 this 我的项目中的其他问题在堆栈溢出中发布.
And if that matter to solve this problem, I'm having this other problem in my project posted in stack overflow.
这是我的项目结构:
这是所有项目的 build.grade 文件
And this are the build.grade files of all the projects
主要整经项目(guestperience 1.0.1 Moncloa De San Lazaro):
Main warper project (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(这是我编码的地方):
goSmart.guestperience.MoncloaDeSanLazaro (this is where I code):
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')
}
}
librarySmartHotel:
librarySmartHotel:
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')
}
}
我认为缺少某些配置(可能),事实是我非常迷茫.
I'm thinking that some configuration is missing (maybe), the true is that I'm super lost.
我是一名 iOS 程序员,这是我在 Android 中的第一步,该项目已由另一个人完成,现在我应该继续,所以假设我正在与 Android Studio 进行良好的斗争,看来我要输了;-P
I'm an iOS programmer and this are my first steps in Android, the project has been done by another guy, and now I'm supposed to continue, so let's say I'm having a good fight with Android Studio and it looks that I'm loosing ;-P
感谢您的帮助.
更新:
我在日志中发现了这个:
I have found this in the log:
AGPBI: {"kind":"SIMPLE","text":"意外的顶级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:{"kind":"SIMPLE","text":"\tatcom.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)","position":{},"original":"\tatcom.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)"}AGPBI: {"kind":"SIMPLE","text":"\tatcom.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)","position":{},"original":"\tatcom.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)"}AGPBI: {"kind":"SIMPLE","text":"\tatcom.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)","position":{},"original":"\tatcom.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)"}AGPBI: {"kind":"SIMPLE","text":"\tatcom.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)","position":{},"original":"\tatcom.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)"} AGPBI:{"kind":"SIMPLE","text":"\tatcom.android.dx.merge.DexMerger.merge(DexMerger.java:189)","position":{},"original":"\tatcom.android.dx.merge.DexMerger.merge(DexMerger.java:189)"} AGPBI:{"kind":"SIMPLE","text":"\tatcom.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)","position":{},"original":"\tatcom.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)"}AGPBI: {"kind":"SIMPLE","text":"\tatcom.android.dx.command.dexer.Main.runMonoDex(Main.java:303)","position":{},"original":"\tatcom.android.dx.command.dexer.Main.runMonoDex(Main.java:303)"} AGPBI:{"kind":"SIMPLE","text":"\tatcom.android.dx.command.dexer.Main.run(Main.java:246)","position":{},"original":"\tatcom.android.dx.command.dexer.Main.run(Main.java:246)"} AGPBI:{"kind":"SIMPLE","text":"\tatcom.android.dx.command.dexer.Main.main(Main.java:215)","position":{},"original":"\tatcom.android.dx.command.dexer.Main.main(Main.java:215)"} AGPBI:{"kind":"SIMPLE","text":"\tatcom.android.dx.command.Main.main(Main.java:106)","position":{},"original":"\tatcom.android.dx.command.Main.main(Main.java:106)"}
AGPBI: {"kind":"SIMPLE","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","position":{},"original":"UNEXPECTED TOP-LEVEL EXCEPTION:"} AGPBI: {"kind":"SIMPLE","text":"com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/analytics/internal/Command$1;","position":{},"original":"com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/analytics/internal/Command$1;"} AGPBI: {"kind":"SIMPLE","text":"\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: {"kind":"SIMPLE","text":"\tat com.android.dx.merge.DexMerger.merge(DexMerger.java:189)","position":{},"original":"\tat com.android.dx.merge.DexMerger.merge(DexMerger.java:189)"} AGPBI: {"kind":"SIMPLE","text":"\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: {"kind":"SIMPLE","text":"\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: {"kind":"SIMPLE","text":"\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: {"kind":"SIMPLE","text":"\tat com.android.dx.command.Main.main(Main.java:106)","position":{},"original":"\tat com.android.dx.command.Main.main(Main.java:106)"}
推荐答案
问题来自Android Play Services 7.3.0.
The problem come from Android Play Services 7.3.0.
试试:
dependencies {
compile 'com.google.android.gms:play-services:6.5.87'
}
或启用 multiDex:
or enable multiDex:
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName versionNameVar
multiDexEnabled true
}
(multiDex 解决方案可编译,但可能会在应用启动时崩溃)
(multiDex solution compile, but might crash at app launch)
这篇关于尝试从 Eclipse 到 Android Studio 执行 Android 应用程序的异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!