转换异常

我正在尝试将谷歌登录整合进我的应用程序中,我添加了这些库:

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'

还要在应用程序编译级别中添加插件:

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
241945 次浏览

尝试将 multiDexEnabled true添加到应用程序 建造,分级文件中。

 defaultConfig {
multiDexEnabled true
}

编辑:

先试试史蒂夫的 回答。如果这种情况经常发生或第一步没有帮助 multiDexEnabled可能会有所帮助。对于那些喜欢在这里深入挖掘的人来说,有几个类似的问题(有更多的答案) :

: app: dexDebug Exeception 以非零退出值2 结束

错误: 任务执行失败: app: dexDebug & # 39; . com.android.ide.common.process. ProcessException

我只需要清理我的项目,然后它成功地建成后。

另一件值得注意的事情是,你不使用

compile 'com.google.android.gms:play-services:8.3.0'

这将导入所有的播放服务,只需要一个 hello world 就可以超过一个 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'

如果您正在使用最新的分级版本即 classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3',那么尝试从 SDK 管理器更新最新的支持存储库并重新构建整个项目。

我在 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,这使得在构建过程中找到其他真正的问题变得很困惑

我正在使用 AS1.5.1,遇到了同样的问题。但是仅仅清理项目是不行的,所以我尝试了一些东西。

  • 清洁工程
  • 重新启动
  • 同步项目

这对我有用,所以我希望这能帮上忙。

当我向项目中添加一些新方法时,这个错误开始出现。我知道我没有接近65k 的方法限制,不想启用 multiDex 支持我的项目,如果我可以帮助它。

我通过增加 :app:transformClassesForDexForDebug任务的可用内存来解决这个问题,我通过在 gradle.build中指定 大小来解决这个问题。

格拉德,建造

android {
...
dexOptions {
javaMaxHeapSize "4g" //specify the heap size for the dex process
}
}

我尝试了这个方法,但没有找到解决这个问题的其他常见方法:

  • 运行项目 clean
  • 从我的项目中手动删除 /app/build/build目录
  • 使 Gradle Cache 失效并重启 Android Studio

错误

错误: 任务执行失败 >’: app: formClassesWithDexForDebug’。 转换异常: 异常: 异常: Process‘ command ’/Library/Java/JavaVirtualMachines/jdk1.8.0 _ 45. jdk/content/Home/bin/Java” 以非零退出值1结束

注意: 增加 DEX 任务的可用内存可能会导致内存较低的系统的性能问题-链接

您可以看到 仿生人的文档

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'
}

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>

当我通过 git 回滚到旧版本时,我遇到了同样的问题,而且那个版本之前有过。一个第三方 API 的 jar 库,由于某种原因,发现同一个 sdk 的两个 jar,只是/libs 文件夹中有不同的版本。

如果您需要为 cordova 插件添加此引用,请在 plugin.xml 文件中添加下一行。

<framework src="com.android.support:support-v4:+" />

如果不同的依赖项具有相同的 jar 也会导致此构建错误。

例如:

compile('com.a.b:library1');
compile('com.c.d:library2');

如果“ library ary1”和“ library ary2”具有同一个名为 xxx.jar的 jar,则会产生这样的错误。

因为 Eclipse 内存泄漏,我不得不重新启动计算机。

我修改了几个 png 和梯级上的构造数,现在我得到了这个。再多的清理和重新启动都没有用。禁用即时运行为我修复它。YMMV

在我的情况下,将 buildToolsVersion 从“24”改为“23.0.2”,解决这个问题。

我也有同样的选项,只要我关闭 Instant run,它就能在我的 API16设备上正常工作,但在 API24设备上,它能在 Instant run 上正常工作。

希望这对有同样问题的人有所帮助

首先删除中间文件 你的应用程序文件夹应用程序构建中间件 或者 清理您的项目,然后重新构建。

那就加上

multiDexEnabled true

也就是说。

defaultConfig {
multiDexEnabled true
}

这是我的工作

只需进入 Build-Edit Build Types-Properties Tab-Build Type Version 并将其降级到 ver23.0.1。点击确定。 这是为安卓工作室1.5工作的。 这招对我很管用。

写的答案是用 格莱德写的 默认配置{ MultiDexEnable 真 } 然后是 清单中的应用程序名称 Name = “ android.support. multidex. MultiDexApplication” 希望这个答案对某人有帮助

在我的情况下,异常发生,因为所有的谷歌播放服务扩展不具有相同的版本如下

 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'

我用下一句话解决了这个问题:

我配置好了 多指数

在 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

之后,到应用程序类,您需要添加 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: formClassesWithDexForDebug。 使用 javaMaxHeapSize“2g”非常好地检入 build.gradle,local.properties org.gradle.jvmargs =-Xmx2048m 为2GB。

这个代码解决了问题

defaultConfig {
multiDexEnabled true
}

对于最简单的方式实现访问谷歌签名: 谷歌在安卓系统中的登录

也试试

dexOptions {
javaMaxHeapSize "4g"
}

还要为不同的服务保留相同的版本号。

我通过添加以下内容解决了这个问题: 在 build.gradle:

defaultConfig {
multiDexEnabled true
}

local.properties,

org.gradle.jvmargs=-XX\:MaxHeapSize\=512m -Xmx512m

提到依赖性:

compile 'com.android.support:multidex:1.0.1'

清洁及重建。

我通过改用最新的 buildToolsVersion解决了这个问题

android {
//...
buildToolsVersion '26.0.2' // change from '23.0.2'
//...
}

如果启用了“即时运行”,那么就禁用它。

如果以上所有对你都不起作用,这是一个有用的答案。

打开你的应用程序分级文件,

检查所有依赖版本是否使用正确的版本代码 而不是任何相对值(com.example.demo: +)

上一个实现“ com.google.api-client: google-api-client-android: +”

实现后“ com.google.api-client: google-api-client-android: 1.30.0”