compile 'com.google.android.gms:play-services-identity:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'
也将其添加到项目构建包中:
classpath 'com.google.gms:google-services:1.4.0-beta3'
也将插件添加到应用程序构建gradle:
apply plugin: 'com.google.gms.google-services'
然后添加所需的权限
,但是当我尝试运行我的应用程序,收到此错误:
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0\bin\java.exe'' finished with non-zero exit value 2
#1 楼
尝试将multiDexEnabled true
添加到您的应用程序build.gradle文件中。 defaultConfig {
multiDexEnabled true
}
编辑:
首先尝试Steve的答案。如果它频繁发生或第一步没有帮助,则可能会有所帮助。对于那些喜欢深入了解的人,这里有几个类似的问题(有更多答案):
:app:dexDebug ExecException以非零退出值2完成
Error:Execution任务':app:dexDebug'失败。 com.android.ide.common.process.ProcessException
#2 楼
需要注意的另一件事是,您不会使用compile 'com.google.android.gms:play-services:8.3.0'
这将导入所有播放服务,并且只需要一个世界即可超过单个dex APK的65535方法限制。
仅指定您需要的服务,例如:
compile 'com.google.android.gms:play-services-identity:8.3.0'
compile 'com.google.android.gms:play-services-plus:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'
评论
你是最棒的!这解决了我的问题。如许多解决方案中所述,对于我而言,重建无济于事。正如您所提到的,Google Play服务库包含许多子组件,应按照您所说的那样逐一导入。再次非常感谢!
–伊万·卡拉瓦尼奥(Ivan Caravanio)
15年11月19日在11:02
最近几天我遇到了这个问题。我以为我只选了我需要的东西。但是,瞧瞧,经过数小时的观察,我想导入所有的播放服务,而我想要的只是播放服务广告。绝对检查您的gradle依赖人员!
– MCLLC
15年12月20日在21:11
@ A.Grandt您可以在答案中添加Ivan给出的链接吗?它包含所有子组件名称的列表,应该作为答案的一部分,因为这是每个人都必须采取的下一步。
–默默尔
16-10-5在13:12
#3 楼
我只需要清理我的项目,然后项目就可以成功构建。评论
谢谢!它完美地工作!可以接受的答案很奇怪,因为我的项目还远远没有达到65K的方法极限(这需要multidex)。
–Louis CAD
2015年10月6日,12:08
是的,清洁是必经之路。 AS 1.4
–Felipe Caldas
15年10月16日在22:06
如果您有库模块,请清理项目中的所有模块以使其正常运行。仅清洁单个模块对我不起作用。清理整个项目。
–Akh
16 Mar 9 '16 at 20:49
有人可以告诉我如何清理项目吗?我一直在尝试很多“组合”,但没有任何效果。我看到每个人都说“干净”,但不知道如何。谢谢。
–阿尔贝托·卢比奥(Alberto Rubio)
16-09-27在16:29
@AlbertoRubio,在AS工具栏中的Build> Clean Project下。
– Chantell Osejo
16-10-27在22:28
#4 楼
当我向项目中添加一些新方法时,此错误开始对我出现。我知道我还远未达到65k的方法限制,并且如果我能帮助的话,我不想为我的项目启用multiDex支持。我通过增加
:app:transformClassesForDexForDebug
任务的可用内存来解决它。我是通过在gradle.build
中指定javaMaxHeapSize来做到这一点的。android {
...
dexOptions {
javaMaxHeapSize "4g" //specify the heap size for the dex process
}
}
我在其他常见解决方案均未成功后尝试了此方法这个问题:
运行项目
clean
从我的项目中手动删除
/app/build
和/build
目录使Gradle Cache无效并重新启动Android Studio
错误
错误:任务执行失败
>':app:transformClassesWithDexForDebug'。
com.android.build.api.transform.TransformException:
com.android.ide.common.process.ProcessException:
org.gradle.process.internal.ExecException:处理'command
'/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java''
以非零退出值1结束
注意:增加DEX任务可用的内存可能会导致内存较低的系统的性能问题-链接。
评论
这对我有用,只是指定最大堆大小即可解决问题,谢谢莫里斯
– Zeyad Assem
16-2-21在10:05
#5 楼
我在Android Studio 1.5.1和gradle 1.5.0中也遇到了类似的问题。我只需要从依赖项中删除不需要的库,这些依赖项可能会自动添加到我的应用程序的build.gradle文件中。
是:编译'com.google.android.gms:play-services:8.4.0'。
因此,为了获得最佳实践,请尝试仅包含特定的播放服务库,例如仅包含广告的
dependencies {
compile 'com.google.android.gms:play-services-ads:8.4.0'
}
尽管
defaultConfig {
multiDexEnabled true
}
这也可以解决该问题,但是在gradle控制台中提供了很多Notes,这使得查找其他内容变得混乱构建过程中的实际问题
评论
将我的Google api使用范围缩小到仅play-services-map可以达到目的。以下是Google对play-services API中各个组件的正式分类:developers.google.com/android/guides/…
– jperl
16-3-27在1:02
#6 楼
您可以查看Android文档android {
compileSdkVersion 21
buildToolsVersion "21.1.0"
defaultConfig {
...
minSdkVersion 14
targetSdkVersion 21
...
// Enabling multidex support.
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
</manifest>
#7 楼
我正在使用AS 1.5.1并遇到相同的问题。但是只是清理项目是行不通的,所以我尝试了一下。清理项目
重新启动AS
同步项目
和我在一起,希望对您有所帮助。
评论
对于超出64k Dex方法限制的项目,这将毫无意义。
– IgorGanapolsky
16年7月12日在14:24
#8 楼
就我而言,将buildToolsVersion从“ 24”更改为“ 23.0.2”,即可解决问题。#9 楼
在我的情况下,发生异常是因为所有的Google Play服务扩展名都不具有相同的版本,如下所示 compile 'com.google.android.gms:play-services-plus:9.8.0'
compile 'com.google.android.gms:play-services-appinvite:9.8.0'
compile 'com.google.android.gms:play-services-analytics:8.3.0'
将其更改为
compile 'com.google.android.gms:play-services-plus:9.8.0'
compile 'com.google.android.gms:play-services-appinvite:9.8.0'
compile 'com.google.android.gms:play-services-analytics:9.8.0'
评论
我没有浏览所有的答案,也没有看到您的答案,所以……大约一个小时后,我发现这是我的情况:/
– denispyr
17 Mar 27 '17 at 17:09
#10 楼
我用下一个解决了它:我配置了
multidex
在build.gradle中,您需要添加下一个。
android {
...
defaultConfig {
...
// Enabling multidex support.
multiDexEnabled true
...
}
dexOptions {
incremental true
maxProcessCount 4 // this is the default value
javaMaxHeapSize "2g"
}
...
}
dependencies {
...
compile 'com.android.support:multidex:1.0.1'
...
}
在local.properties中添加下一个
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
之后,进入Application类,您需要也添加Multidex。
public class MyApplication extends MultiDexApplication {
@Override
public void onCreate() {
super.onCreate();
//mas codigo
}
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
不要忘记将行代码添加到Manifest.xml中
<application
...
android:name=".MyApplication"
...
/>
就是这样足以解决该错误:
执行任务':app:transformClassesWithDexForDebug失败。
用javaMaxHeapSize“ 2g”很好地检查build.gradle,而local.properties org.gradle.jvmargs = -Xmx2048m为2 GB。
评论
请仅以英文发布。这看起来像是一个很好的答案,因为它不是英语,所以删除它是一个耻辱。
–Tunaki
17年2月28日在22:30
#11 楼
当我通过git回滚到旧版本时,我遇到了同样的问题,并且该版本以前具有一个第三方api的.jar库,并且由于某种原因,原来两个sdk的jar都在/ libs文件夹中。#12 楼
首先删除中间文件您的APP文件夹\ app \ build \ intermediates
OR
清理项目,然后重新构建。
然后添加
multiDexEnabled true
ie
defaultConfig {
multiDexEnabled true
}
为我工作
#13 楼
我通过更改来解决此问题,以使用最新的buildToolsVersion
android {
//...
buildToolsVersion '26.0.2' // change from '23.0.2'
//...
}
#14 楼
如果以上所有内容都不适合您,那么将是一个有帮助的答案。转到您的应用gradle文件,
检查所有依赖项版本是否都带有正确的版本代码,而不是任何版本代码相对值,例如(com.example.demo:+)
上一个-实现'com.google.api-client:google-api-client-android:+'
之后-实施'com.google.api-client:google-api-client-android:1.30.0'
#15 楼
如果您使用的是最新的gradle版本,例如classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3'
,请尝试从SDK管理器更新最新的支持资源库,然后重建整个项目。#16 楼
如果需要为cordova插件添加此参考,请在plugin.xml文件中添加下一行。<framework src="com.android.support:support-v4:+" />
#17 楼
如果不同的依赖项具有相同的jar,也将导致此生成错误。例如:
compile('com.a.b:library1');
compile('com.c.d:library2');
如果“ library1”和“ library2”有一个名为
xxx.jar
的罐子,这会导致这样的错误。#18 楼
由于Eclipse内存泄漏,它发生在我身上。我必须重新启动计算机。#19 楼
我在gradle中更改了几个png和内部版本号,现在我明白了。没有任何清理和重新启动的帮助。禁用Instant Run为我修复了它。 YMMV#20 楼
我有相同的选择,并且我关闭即时运行后,它在我的API16设备上运行正常,但是在API24设备上,它与即时运行一起运行良好。希望这可以帮助遇到相同问题的人
#21 楼
只需转到Build-Edit Build Types-Properties选项卡-Build Type Version并将其降级到ver 23.0.1。单击确定。这适用于android studio 1.5。
对我有用。
#22 楼
写入答案在gradle中放置defaultConfig {
multiDexEnabled true
}
,然后清单中的应用程序名称
android:name =“ android.support.multidex.MultiDexApplication”
希望这个答案对某些人来说很有意义
#23 楼
此代码解决了问题defaultConfig {
multiDexEnabled true
}
实现Google登录最简单的方法是访问:Google登录android
也尝试
dexOptions {
javaMaxHeapSize "4g"
}
还要为不同的服务保留相同的版本号。
#24 楼
我通过添加以下内容解决了此问题:在
build.gradle
中:defaultConfig {
multiDexEnabled true
}
在
local.properties
中,org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m
提及依赖项:
compile 'com.android.support:multidex:1.0.1'
清理并重建。
评论
没有为我工作。史蒂夫的答案-清洁就可以解决问题。我刚刚升级到AS1.5预览版
–斯科特
15年10月13日在21:53
公平地说,您应始终检查是否可以通过清洁解决问题。我坚信,这将对那些没有清洁的人有所帮助。
– JuliusScript
2015年10月13日在22:00
这两个对我都没有帮助-但是重新启动AS终于成功了:)
– Maciej Boguta
15年11月20日在17:11
这些都不对我有帮助,但是重新启动AS后它开始工作
– Maciej Boguta
15年11月20日在17:17
我还建议您在使用此解决方案之前先查看下方的A Grandt答案(stackoverflow.com/a/33690032/1617737)。
– ban-geoengineering
2015年12月24日0:00