我正在尝试整合谷歌登录,在我的应用程序中,我添加了这些库:
compile 'com.google.android.gms:play-services-identity:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'
还将此添加到项目构建gradle:
classpath 'com.google.gms:google-services:1.4.0-beta3'
还为app build 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
答案 0 :(得分:314)
尝试将multiDexEnabled true
添加到您的应用 build.gradle 文件中。
defaultConfig {
multiDexEnabled true
}
修改强>
首先尝试史蒂夫的answer。万一它经常发生或第一步没有帮助multiDexEnabled
可能有所帮助。对于那些喜欢深入挖掘的人来说,有几个相似的问题(有更多的答案):
:app:dexDebug ExecException finished with non-zero exit value 2
Error:Execution failed for task ':app:dexDebug'. com.android.ide.common.process.ProcessException
答案 1 :(得分:146)
另一件需要注意的事情是,你不能使用
compile 'com.google.android.gms:play-services:8.3.0'
这将导入所有播放服务,并且它只需要比hello世界多一点,超过单个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'
答案 2 :(得分:137)
我只需要清理我的项目,然后在之后成功构建。
答案 3 :(得分:23)
当我向项目添加一些新方法时,这个错误开始出现了。我知道我没有接近65k方法限制,如果我能帮助它,我不想为我的项目启用multiDex支持。
我通过增加:app:transformClassesForDexForDebug
任务可用的内存来解决它。我是通过在gradle.build
中指定 javaMaxHeapSize 来完成此操作。
<强> gradle.build 强>
android {
...
dexOptions {
javaMaxHeapSize "4g" //specify the heap size for the dex process
}
}
在尝试解决此问题的其他常见解决方案后,我尝试了这一点:
clean
/app/build
和/build
目录错误强>
错误:任务执行失败 &GT; &#39;:应用程序:transformClassesWithDexForDebug&#39 ;. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:进程&#39;命令 &#39; /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java'&#39; 完成非零退出值1
注意:增加DEX任务可用的内存可能会导致内存较低的系统出现性能问题 - link。
答案 4 :(得分:8)
我在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控制台中提供了大量的注释,使得在构建期间找到其他实际问题感到困惑
答案 5 :(得分:4)
您可以看到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>
答案 6 :(得分:3)
我使用AS 1.5.1并遇到了同样的问题。但只是清理项目就不行了,所以我尝试了一些东西。
这对我有用,所以我希望这有帮助。
答案 7 :(得分:3)
在我的案例中,从&#34; 24&#34;更改buildToolsVersion到&#34; 23.0.2&#34;,解决问题。
答案 8 :(得分:2)
在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的执行失败。 检查build.gradle与javaMaxHeapSize“2g”,local.properties org.gradle.jvmargs = -Xmx2048m是2千兆字节。
答案 9 :(得分:2)
在我的情况下发生了异常,因为所有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'
答案 10 :(得分:1)
如果以上所有内容都不适合您,那么这是一个有用的答案。
转到您的应用gradle文件,
检查所有依赖项版本均带有正确的版本代码 ,而不是诸如(com.example.demo:+)之类的任何相对值
上一个-实现'com.google.api-client:google-api-client-android:+'
之后-实施'com.google.api-client:google-api-client-android:1.30.0'
答案 11 :(得分:1)
我通过更改使用最新的buildToolsVersion
android {
//...
buildToolsVersion '26.0.2' // change from '23.0.2'
//...
}
答案 12 :(得分:1)
首先删除中间文件 您的APP文件夹\ app \ build \ intermediates 要么 清理您的项目,然后重建。
Thent add
multiDexEnabled true
即。
defaultConfig {
multiDexEnabled true
}
这对我有用
答案 13 :(得分:1)
当我通过git回滚到旧版本时,我遇到了同样的问题,那个版本有一个第三方api的以前的.jar库,并且出于某种原因结果发现两个相同的sdk,只是不同版本的jar / libs文件夹。
答案 14 :(得分:0)
我在gradle中更改了几个png和内部版本号,现在我知道了。没有多少清洁和重新启动有帮助。禁用即时运行为我修复了它。 YMMV
答案 15 :(得分:0)
我有相同的选项,只要我关闭即时运行,它在我的API16设备上工作正常,但在API24设备上它可以正常运行。
希望这有助于有同样问题的人
答案 16 :(得分:0)
由于Eclipse内存泄漏,它发生在我身上。我不得不重新启动计算机。
答案 17 :(得分:0)
只需转到Build - Edit Build Types - Properties选项卡 - Build Type Version并将其降级到ver 23.0.1。点击确定。 这适用于android studio 1.5。 它对我有用。
答案 18 :(得分:0)
写回答是 gradle put defaultConfig { multiDexEnabled是的 } 然后清单中的应用程序名称 机器人:名字= “android.support.multidex.MultiDexApplication” 希望这个答案对某些人来说是个不错的
答案 19 :(得分:0)
如果不同的依赖项具有相同的jar也会导致此构建错误。
例如:
compile('com.a.b:library1');
compile('com.c.d:library2');
如果&#34; library1&#34;和&#34; library2&#34;有一个名为xxx.jar
的jar,这会产生这样的错误。
答案 20 :(得分:0)
如果您需要为cordova插件添加此参考,请在plugin.xml文件中添加下一行。
<framework src="com.android.support:support-v4:+" />
答案 21 :(得分:0)
此代码解决了问题
public class AppDbInitializer : CreateDatabaseIfNotExists<AppDbContext>
{
protected override void Seed(AppDbContext context)
{
var jsonImporter = new JsonImporter();
List<DataLoader.Entities.Version> versions = (jsonImporter.ImportFromJson<List<DataLoader.Entities.Version>>("Versions.json"));
context.Versions.AddRange(versions);
context.SaveChanges(); // you don't need this, it's automatically called after `Seed` call
}
}
要以最简单的方式实施Google登录访问: google sign in android
也可以尝试
defaultConfig {
multiDexEnabled true
}
同时为不同的服务保留相同的版本号。
答案 22 :(得分:0)
我通过添加以下内容解决了这个问题:
在build.gradle
:
defaultConfig {
multiDexEnabled true
}
<{1>}中的,
local.properties
提及依赖:
org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m
清洁和重建。
答案 23 :(得分:0)
如果启用了“即时运行”,则只需禁用它即可。
答案 24 :(得分:0)
如果您使用的是最新的gradle版本,即classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3'
,请尝试从SDK管理器更新最新的支持存储库并重建整个项目。