com.android.build.transform.api.TransformException


158

Googleサインインをアプリに統合しようとしていますが、次のライブラリを追加しました。

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

回答:


312

multiDexEnabled trueアプリのbuild.gradleファイルに追加してみてください。

 defaultConfig {
    multiDexEnabled true
}

編集:

まずスティーブの答えを試してください。それが頻繁に発生する場合、または最初のステップが役に立たなかった場合に役立つmultiDexEnabled可能性があります。ここでさらに掘り下げるのが大好きな人のために、いくつかの同様の問題があります(より多くの答えがあります):

:app:dexDebug ExecExceptionがゼロ以外の終了値2で終了しました

エラー:タスク ':app:dexDebug'の実行に失敗しました。com.android.ide.common.process.ProcessException


3
うまくいきませんでした。スティーブの答え-クリーニングでうまくいった。AS1.5プレビューにアップグレードしました
スコット

6
公平を期すために、クリーニングによって問題を解決できるかどうかを常に確認する必要があります。これは、掃除がうまくいかなかった人々に役立つと確信しています。
JuliusScript、2015年

これらはどちらも私には役に立ちませんでした-しかし、ASを再起動するとやっとうまく
いきました


1
また、このソリューションを使用する前に、Aグラントの回答(stackoverflow.com/a/33690032/1617737)を確認することをお勧めします。
ban-geoengineering 2015

146

もう一つ注意すべきことは、あなたが使用しないことです

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

これですべてのPlayサービスがインポートされ、Hello Worldが1つの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'

10
あなたは最高です!これは私の問題を解決しました。私の場合、多くのソリューションで言及されているように、再構築は役に立ちません。あなたが言及したように、Google Play Servicesライブラリには多くのサブコンポーネントがあり、それらはあなたが言ったように-一つずつインポートされるべきです。本当にありがとうございました!
Ivan Caravanio 2015年

2
この問題はここ数日で発生しました。必要なものだけを選んだと思った。しかし、目を見張るように、何時間も調べた後、play-services-adsだけが必要なときに、すべてのplay-servicesをインポートしていました。あなたのgradle依存関係の人々を確実にチェックしてください!
MCLLC、2015

@ A.Grandt Ivanがあなたに与えたリンクをあなたの答えに追加していただけませんか?すべてのサブコンポーネントの名前のリストが含まれています。これは答えの一部になるはずです。これは、誰もが実行する必要がある次のステップであるためです。
Murmel、2016年

137

私は自分のプロジェクトをクリーンアップする必要があり、その後それはその後正常にビルドされました。


4
ありがとう!完璧に動作します!私のプロジェクトが65Kメソッドの制限(multidexを必要とする)に達するにはほど遠いので、受け入れられる答えは奇妙です。
Louis CAD

4
うん、掃除は行くべき道でした。AS 1.4
フェリペカルダス

ライブラリモジュールがある場合は、プロジェクト全体のすべてのモジュールをクリーンアップして機能させます。個々のモジュールだけをクリーニングしてもうまくいきませんでした。プロジェクト全体をクリーンアップします。
Akh

プロジェクトをクリーンアップする方法を教えてもらえますか?私は多くの「組み合わせ」を試みてきましたが、何も機能しません。誰もが「きれい」と言っているのを見ていますが、方法がわかりません。どうも。
Alberto Rubio 2016

@ AlbertoRubio、ASツールバーの[ビルド]> [プロジェクトのクリーン]。
Chantell Osejo 2016年

23

このエラーは、プロジェクトにいくつかの新しいメソッドを追加したときに表示され始めました。私は65kメソッドの制限に近づいていないことを知っていて、私がそれを助けることができれば、プロジェクトでmultiDexサポートを有効にしたくありませんでした。

:app:transformClassesForDexForDebugタスクで使用できるメモリを増やすことで解決しました。これを行うには、javaMaxHeapSizeをで指定しgradle.buildます。

gradle.build

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

この問題の他の一般的な解決策で成功しなかった後、私はこれを試しました:

  • プロジェクトを実行する clean
  • プロジェクトから/app/build/buildディレクトリを手動で削除する
  • Gradleキャッシュの無効化とAndroid Studioの再起動

エラー

エラー:タスク> ':app:transformClassesWithDexForDebug'の実行に失敗しました。com.android.build.api.transform.TransformException: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 ''がゼロ以外の終了値1で終了しました

注:DEXタスクで使用可能なメモリを増やすと、メモリリンクが低いシステムでパフォーマンスの問題が発生する可能性があります。


これは私にとっては
うまくいき

8

Android Studio 1.5.1とgradle 1.5.0でも同様の問題が発生しました。アプリのbuild.gradleファイルに自動的に追加される可能性がある不要なライブラリを依存関係から削除する必要があります。1つは、「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コンソールに多くのノートが提供され、ビルド中に他の実際の問題を見つけるのが混乱します


私のgoogle apiの使用法をplay-services-mapsだけに絞り込むとうまくいきました。ここでプレイサービスAPIのさまざまなコンポーネントのGoogleの公式内訳は次のとおりです。developers.google.com/android/guides/...
jperlは

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>

3

AS 1.5.1を使用していますが、同じ問題が発生しました。しかし、プロジェクトをクリーンアップするだけでは十分ではないので、私は何かを試しました。

  • きれいなプロジェクト
  • ASを再起動する
  • プロジェクトを同期

これでうまくいったので、これが役に立てば幸いです。


3
これは、64k Dexメソッドの制限を超えたプロジェクトには無意味です。
IgorGanapolsky 2016


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'

1
私はすべての回答を閲覧しなかったし、あなたの回答も確認しなかったので、私はこれが約1時間後に私のケースであることを発見しました:/
denispyr

2

私はそれを次で解決しました:

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ギガバイトです。


2
英語で投稿してください。これは良い回答のようです。英語ではないため、削除するのは残念です。
Tunaki 2017

1

私がgitを介して古いバージョンにロールバックしたときに同じ問題があり、そのバージョンには1つのサードパーティAPIの以前の.jarライブラリがあり、何らかの理由で同じsdkの両方のjar、異なるバージョンが/ libsフォルダーにあることが判明しました。


1

最初に中間ファイルを削除します。APP FOLDER \ app \ build \ intermediatesまたはプロジェクトをクリーンアップしてから、再ビルドします。

追加しない

multiDexEnabled true

すなわち

defaultConfig {
        multiDexEnabled true
}

それは私にとっては仕事です


1

私は最新のものを使用するように変更することでこの問題を解決しました buildToolsVersion

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

1

上記のすべてがうまくいかなかった場合に役立つ回答。

アプリのgradleファイルに移動し、

(com.example.demo:+)のような相対値ではなく、適切なバージョンコードすべての依存バージョンが言及されていることを確認します

前へ-実装 'com.google.api-client:google-api-client-android:+'

後-実装「com.google.api-client:google-api-client-android:1.30.0」


0

classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3'Gradleの最新バージョンを使用している場合は 、SDKマネージャーから最新のサポートリポジトリを更新して、プロジェクト全体を再ビルドしてください。


0

Cordovaプラグインのこの参照を追加する必要がある場合は、plugin.xmlファイルに次の行を追加します。

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

0

異なる依存関係に同じjarがある場合も、このビルドエラーが発生します。

例えば:

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

「library1」と「library2」に同じ名前のjarがあるxxx.jar場合、このようなエラーが発生します。



0

Gradleでいくつかのpngとビルド番号を変更しましたが、これを取得しました。クリーニングと再起動の量は助けにはなりませんでした。Instant Runを無効にすると、修正されました。YMMV


0

同じオプションがあり、インスタントランをオフにするとすぐに、API16デバイスでは正常に機能しましたが、API24デバイスではインスタントランで正常に機能しました。

これが同じ問題を抱えている人に役立つことを願っています


0

ビルド-ビルドタイプの編集-プロパティタブ-ビルドタイプバージョンに移動し、バージョン23.0.1にダウングレードします。OKをクリックします。これはAndroid Studio 1.5で機能します。それは私のために働いた。


0

書き込み答えはであるのGradleその後、プットdefaultConfig {真multiDexEnabled} マニフェストでアプリケーション名 アンドロイド:名=「android.support.multidex.MultiDexApplication」は、この答えを望むにはいくつかのいずれかにhellpfulです


0

このコードは問題を解決しました

defaultConfig {
        multiDexEnabled true
}

Googleサインインを実装する最も簡単な方法については、GoogleサインインAndroidにアクセスしてください

またお試しください

dexOptions {
        javaMaxHeapSize "4g" 
    }

また、異なるサービスの同じバージョン番号を保持します。


0

私はこの問題を追加して解決しました:In build.gradle

defaultConfig {
    multiDexEnabled true
}

local.properties

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

依存関係について言及する:

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

クリーンと再構築。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.