尝试从 Eclipse 到 Android Studio 执行 Android 应用程序的异常
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/30025223/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Exception trying to execute Android App from Eclipse To Android Studio
提问by Marco Antonio Uzcategui Pescoz
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.
我曾尝试将 Eclipse Android 项目迁移到 Android Studio,我尝试了两种方法,直接从 Android Studio 打开并先在 Eclipse 中迁移到 Gradle,然后在 Android Studio 中打开它。
Then I have tried to remove the Google Play library folder and added it in my Gradle file, and then the project do this:
然后我尝试删除 Google Play 库文件夹并将其添加到我的 Gradle 文件中,然后项目执行以下操作:
- Make Project OK
- Clean Project OK
- Rebuild Project OK
- Gradle sync and download a lot of DLL OK
- Play or Debug KO and gives me this errors:
- 让项目OK
- 清洁项目OK
- 重建项目 OK
- Gradle同步并下载很多DLL OK
- 播放或调试 KO 并给我以下错误:
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'' finished with non-zero exit value 2
错误:任务 ':goSmart.guestperience.MoncloaDeSanLazaro:dexDebug' 执行失败。
com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:处理'命令'/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java''以非零退出值 2 结束
OR
或者
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'' finished with non-zero exit value 2
错误:任务 ':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
OR
或者
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'' finished with non-zero exit value 2
错误:任务 ':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
I have started with JDK 1.6, then updated to 1.7 and then to 1.8 to see if that was the problem.
我从 JDK 1.6 开始,然后更新到 1.7,然后更新到 1.8,看看这是否是问题所在。
If I don't delete the Google Play Dervices folders the project works just fine.
如果我不删除 Google Play Dervices 文件夹,该项目就可以正常工作。
I'm using a MAC if that is important.
如果这很重要,我正在使用 MAC。
And if that matter to solve this problem, I'm having thisother problem in my project posted in stack overflow.
如果这对解决这个问题很重要,那么我在堆栈溢出中发布的项目中遇到了另一个问题。
This is how it looks my project structure:
这是我的项目结构的外观:
And this are the build.grade files of all the projects
这是所有项目的 build.grade 文件
Main warper project (guestperience 1.0.1 Moncloa De San Lazaro):
主要整经项目(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 (this is where I code):
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')
}
}
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')
}
}
main:
主要的:
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.
我在想一些配置丢失了(也许),事实是我超级迷路了。
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
我是一名 iOS 程序员,这是我在 Android 中的第一步,该项目已由另一个人完成,现在我应该继续,所以假设我正在与 Android Studio 进行良好的斗争,看起来我输了;-P
Thanks for the help.
谢谢您的帮助。
UPDATE:
更新:
I have found this in the log:
我在日志中发现了这个:
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)"}
AGPBI: {"kind":"SIMPLE","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","position":{},"original":"UNEXPECTED TOP-LEVEL EXCEPTION:"} 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":"\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.运行(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)"}} 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)"}} 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)"}main(Main.java:106)","position":{},"original":"\tat com.android.dx.command.Main.main(Main.java:106)"}main(Main.java:106)","position":{},"original":"\tat com.android.dx.command.Main.main(Main.java:106)"}
回答by Livio
The problem come from Android Play Services 7.3.0.
问题来自 Android Play Services 7.3.0。
Try :
尝试 :
dependencies {
compile 'com.google.android.gms:play-services:6.5.87'
}
or enable multiDex:
或启用 multiDex:
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
versionCode 1
versionName versionNameVar
multiDexEnabled true
}
(multiDex solution compile, but might crash at app launch)
(multiDex 解决方案编译,但可能会在应用程序启动时崩溃)
回答by George
After hours with the same problem i found the answer.
在遇到同样的问题几个小时后,我找到了答案。
The REAL problem is that you have multiple libs with the same classes inside, so the solution would be to either remove the repeating files from one of the libs.
真正的问题是你有多个库,里面有相同的类,所以解决方案是从库之一中删除重复文件。
You have to either remove the libs with repeating files or:
您必须删除带有重复文件的库,或者:
- Open the lib
libGoogleAnalyticsServices.jar
with WinRAR, 7Zip or whatever. - Go to
com/google/android/gms/analytics/internal
and delete the filesCommand$1.class
andCommand.class
.
libGoogleAnalyticsServices.jar
使用 WinRAR、7Zip 或其他工具打开库。- 转到
com/google/android/gms/analytics/internal
并删除文件Command$1.class
和Command.class
.
In your case you may have to remove other repeating files, not sure because you have many files. Either way, you can also force it to ignore some of those files IFthe method above didn't work. Put the following code inside the Android block on your build.gradle file:
在您的情况下,您可能需要删除其他重复文件,不确定,因为您有很多文件。无论哪种方式,如果上述方法不起作用,您也可以强制它忽略其中一些文件。将以下代码放在 build.gradle 文件的 Android 块中:
defaultConfig {
multiDexEnabled true
}
dexOptions {
preDexLibraries = false
}
回答by DoruChidean
In my case I just had to delete the old library.
就我而言,我只需要删除旧库。
回答by AITAALI_ABDERRAHMANE
Try always compile with latest version of google play
尝试始终使用最新版本的 google play 进行编译
try this : compile 'com.google.android.gms:play-services:8.1.0'
尝试这个 : compile 'com.google.android.gms:play-services:8.1.0'
from : Setting up google play services
来自:设置谷歌播放服务