com.android.build.transform.api.TransformException

158

Saya mencoba mengintegrasikan masuk Google, di aplikasi saya, saya menambahkan perpustakaan ini:

compile 'com.google.android.gms:play-services-identity:8.1.0'
compile 'com.google.android.gms:play-services-plus:8.1.0'

Juga tambahkan ini ke proyek build gradle:

classpath 'com.google.gms:google-services:1.4.0-beta3'

Tambahkan juga plugin ke aplikasi build gradle:

apply plugin: 'com.google.gms.google-services'

lalu tambahkan izin yang diperlukan tetapi ketika saya mencoba menjalankan aplikasi saya, menerima kesalahan ini:

    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
saeed shahini
sumber

Jawaban:

312

Coba tambahkan multiDexEnabled trueke file build.gradle aplikasi Anda .

 defaultConfig {
    multiDexEnabled true
}

EDIT:

Coba dulu jawaban Steve . Jika itu sering terjadi atau langkah pertama tidak membantu multiDexEnabledmungkin membantu. Bagi mereka yang suka menggali lebih dalam di sini ada beberapa masalah serupa (dengan lebih banyak jawaban):

: app: dexDebug ExecException selesai dengan nilai keluar bukan nol 2

Kesalahan: Eksekusi gagal untuk tugas ': app: dexDebug'. com.android.ide.common.process.ProcessException

JuliusScript
sumber
3
Tidak bekerja untuk saya. Jawaban Steve - Pembersihan melakukan trik. Saya baru saja memutakhirkan ke AS1.5 Pratinjau
Scott
6
Agar adil, Anda harus selalu memeriksa apakah suatu masalah dapat diselesaikan dengan membersihkan. Saya yakin ini akan membantu mereka yang tidak melakukan pembersihan.
JuliusScript
kedua hal ini tidak membantu saya - tetapi memulai kembali AS akhirnya berhasil :)
Maciej Boguta
tidak ada yang membantu saya, tetapi mulai bekerja setelah saya memulai kembali AS
Maciej Boguta
1
Saya juga menyarankan memeriksa jawaban A Grandt, di bawah ini ( stackoverflow.com/a/33690032/1617737 ) sebelum Anda terjun dengan solusi ini.
larangan geoengineering
146

Hal lain yang harus diperhatikan, adalah Anda tidak menggunakannya

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

Itu akan mengimpor SEMUA layanan bermain, dan itu hanya akan membutuhkan sedikit lebih dari dunia halo untuk melampaui batas metode 65535 dari satu APK dex.

Selalu tentukan hanya layanan yang Anda butuhkan, misalnya:

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'
A.Grandt
sumber
10
Kamu yang terbaik! Ini menyelesaikan masalah saya. Membangun kembali tidak membantu dalam kasus saya seperti yang disebutkan dalam banyak solusi. Seperti yang Anda sebutkan perpustakaan Google Play Services memiliki banyak subkomponen dan mereka harus diimpor seperti yang Anda katakan - satu per satu. Sekali lagi terima kasih banyak!
Ivan Caravanio
2
Saya memiliki masalah ini dalam beberapa hari terakhir. Saya pikir saya hanya memilih apa yang saya butuhkan. Tapi, rendah dan lihatlah, setelah berjam-jam mencari saya mengimpor semua layanan bermain ketika yang saya inginkan adalah layanan bermain-iklan. Pasti memeriksa dependensi gradle Anda, orang!
MCLLC
@ A.Grandt dapatkah Anda menambahkan tautan yang diberikan Ivan ke dalam jawaban Anda? Ini berisi daftar nama semua subkomponen dan itu harus menjadi bagian dari jawabannya, karena itu adalah langkah selanjutnya yang harus diambil setiap orang.
Murmel
137

Saya hanya perlu Bersihkan proyek saya dan kemudian berhasil dibangun setelahnya.

Steve Ganem
sumber
4
Terima kasih! Ini bekerja dengan sempurna! Jawaban yang diterima akan aneh karena proyek saya jauh dari mencapai batas metode 65K (yang akan membutuhkan multidex).
Louis CAD
4
Yap, membersihkan adalah cara untuk pergi. AS 1.4
Felipe Caldas
Jika Anda memiliki modul pustaka, maka bersihkan semua modul di seluruh proyek agar berfungsi. Hanya membersihkan modul individual tidak bekerja untuk saya. Bersihkan proyek SELURUH.
Akh
Adakah yang bisa memberitahu saya bagaimana cara membersihkan proyek? Saya sudah mencoba banyak "kombinasi" dan tidak ada yang berhasil. Saya melihat semua orang mengatakan "bersih", tetapi tidak tahu caranya. Terima kasih.
Alberto Rubio
@AlbertoRubio, di bawah Bangun> Bersihkan Proyek di bilah alat AS.
Chantell Osejo
23

Kesalahan ini mulai muncul untuk saya ketika saya menambahkan beberapa metode baru ke proyek saya. Saya tahu bahwa saya tidak berada di dekat batas metode 65k dan tidak ingin mengaktifkan dukungan multiDex untuk proyek saya jika saya dapat membantu.

Saya mengatasinya dengan meningkatkan memori yang tersedia untuk :app:transformClassesForDexForDebugtugas itu. Saya melakukan ini dengan menentukan javaMaxHeapSize di gradle.build.

gradle.build

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

Saya mencoba ini setelah tidak berhasil dengan solusi umum lainnya untuk masalah ini:

  • Menjalankan proyek clean
  • Menghapus secara manual /app/builddan /builddirektori dari proyek saya
  • Memvalidasi Cache Gradle dan memulai ulang Android Studio

Kesalahan

Kesalahan: Eksekusi gagal untuk tugas> ': app: transformClassesWithDexForDebug'. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.Exeception: Proses 'command' /Library/Java/JavaVirtualMachines/jdk1.8.0_45. jdk / Contents / Home / bin / java '' selesai dengan nilai keluar bukan nol 1

Catatan: menambah memori yang tersedia untuk tugas DEX dapat menyebabkan masalah kinerja pada sistem dengan tautan memori yang lebih rendah .

Maurice Gavin
sumber
Ini bekerja untuk saya, hanya untuk menentukan ukuran tumpukan maksimum akan menyelesaikan masalah, terima kasih Maurice
Zeyad Assem
8

Saya juga menghadapi masalah serupa di Android Studio 1.5.1 dan gradle 1.5.0. Saya hanya perlu menghapus pustaka yang tidak diinginkan dari dependensi yang dapat secara otomatis ditambahkan dalam file build.gradle aplikasi saya. Salah satunya adalah: kompilasi 'com.google.android.gms: play-services: 8.4.0'. Jadi untuk praktik terbaik, coba sertakan hanya perpustakaan layanan putar khusus seperti hanya untuk iklan

dependencies {
    compile 'com.google.android.gms:play-services-ads:8.4.0'
}

Meskipun

defaultConfig {
    multiDexEnabled true
}

ini juga akan menyelesaikan masalah, tetapi menyediakan banyak Notes di konsol gradle, membuatnya membingungkan untuk menemukan masalah nyata lainnya selama pembuatan

raul
sumber
Mempersempit penggunaan google api saya untuk hanya memutar-layanan-peta berhasil. Berikut adalah rincian resmi Google dari berbagai komponen dalam API layanan-putar: developers.google.com/android/guides/…
jperl
4

Anda dapat melihat dokumentasi 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>
David Hackro
sumber
3

Saya menggunakan AS 1.5.1 dan mengalami masalah yang sama. Tetapi hanya membersihkan proyek saja tidak akan dilakukan, jadi saya mencoba sesuatu.

  • proyek bersih
  • restart AS
  • Sinkronkan Proyek

Ini bekerja dengan saya, jadi saya harap ini membantu.

kcNeko
sumber
3
Ini tidak ada gunanya untuk proyek yang telah melampaui batas metode Dex 64k.
IgorGanapolsky
3

Pada kasus saya, ubah buildToolsVersion dari "24" menjadi "23.0.2", selesaikan masalahnya.

Ayman Mahgoub
sumber
2

Dalam kasus saya Pengecualian terjadi karena semua ekstensi layanan google play tidak dengan versi yang sama seperti berikut

 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'

Ini berhasil ketika saya mengubah ini menjadi

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'
Uma Achanta
sumber
1
Saya tidak melihat semua jawaban dan saya tidak melihat jawaban Anda, jadi ... Saya menemukan bahwa ini adalah kasus saya sekitar satu jam kemudian: /
denispyr
2

Saya mengatasinya dengan yang berikut:

Saya mengkonfigurasi multidex

Di build.gradle Anda perlu menambahkan yang berikutnya.

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

Tambahkan yang berikutnya di local.properties

org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

Setelah itu ke dalam kelas Aplikasi Anda perlu menambahkan Multidex juga.

 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);
   }
}

Jangan lupa tambahkan kode baris ke Manifest.xml

<application
    ...
    android:name=".MyApplication"
    ...
/>

Itu saja dengan ini sudah cukup untuk menyelesaikan bug: Eksekusi gagal untuk tugas ': app: transformClassesWithDexForDebug. Periksa dengan sangat baik ke build.gradle dengan javaMaxHeapSize "2g" dan local.properties org.gradle.jvmargs = -Xmx2048m berukuran 2 gigabyte.

Leonardo Pineda
sumber
2
Silakan kirim hanya dalam bahasa Inggris. Ini sepertinya jawaban yang bagus, akan memalukan untuk dihapus karena itu bukan dalam bahasa Inggris.
Tunaki
1

Saya memiliki masalah yang sama ketika saya memutar kembali ke versi lama via git, dan versi itu memiliki perpustakaan .jar sebelumnya dari satu api pihak ke-3, dan untuk beberapa alasan ternyata kedua jar dari sdk yang sama, hanya versi yang berbeda ada di folder / libs .

lxknvlk
sumber
1

Pertama Hapus file perantara FOLDER APLIKASI ANDA \ app \ build \ intermediates ATAU Bersihkan proyek Anda dan kemudian buat kembali.

Lalu tambahkan

multiDexEnabled true

yaitu

defaultConfig {
        multiDexEnabled true
}

Ini bekerja untuk saya

Mohd. Jafar Iqbal khan
sumber
1

Saya memecahkan masalah ini dengan mengubah menggunakan terbaru buildToolsVersion

android {
    //...
    buildToolsVersion '26.0.2' // change from '23.0.2'
    //...
}
Tung Duong
sumber
1

Jawaban yang bermanfaat jika semua hal di atas tidak berhasil untuk Anda.

Buka file gradle aplikasi Anda,

Periksa semua versi dependensi disebutkan dengan kode versi yang tepat daripada nilai relatif seperti (com.example.demo: +)

Sebelumnya - implementasi 'com.google.api-client: google-api-client-android: +'

Setelah - implementasi 'com.google.api-client: google-api-client-android: 1.30.0'

Bishnu Das
sumber
0

Jika Anda menggunakan versi gradle terbaru classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3', maka cobalah memperbarui respositori dukungan terbaru dari manajer SDK dan membangun kembali seluruh proyek.

goonerDroid
sumber
0

Jika Anda perlu menambahkan referensi ini untuk plugin cordova tambahkan baris berikutnya di file plugin.xml Anda.

<framework src="com.android.support:support-v4:+" />
Adexe Rivera
sumber
0

Jika dependensi yang berbeda memiliki stoples yang sama juga menyebabkan kesalahan build ini.

Sebagai contoh:

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

Jika "library1" dan "library2" memiliki nama yang sama xxx.jar, ini akan membuat kesalahan.

wqycsu
sumber
0

Itu terjadi pada saya karena kebocoran memori Eclipse. Saya harus me-restart komputer saya.

Ronen Festinger
sumber
0

Saya mengubah beberapa pngs dan nomor build di gradle dan sekarang saya dapatkan ini. Tidak ada jumlah pembersihan dan restart membantu. Menonaktifkan Instant Run memperbaikinya untuk saya. YMMV

SteelBytes
sumber
0

Saya memiliki opsi yang sama dan segera setelah saya mematikan menjalankan Instan, itu bekerja dengan baik pada perangkat API16 saya, tetapi pada perangkat API24 itu bekerja dengan baik dengan menjalankan Instan.

Semoga ini bisa membantu seseorang yang memiliki masalah yang sama

x10sion
sumber
0

Cukup buka Bangun - Edit Bangun Jenis - Tab Properti - Bangun Jenis Versi dan turunkan ke ver 23.0.1. Klik ok. Ini berfungsi untuk android studio 1.5. Ini berhasil untuk saya.

Dima Rowland
sumber
0

jawaban tulis dalam gradle put defaultConfig {multiDexEnabled true} maka nama aplikasi di manifes android: name = "android.support.multidex.MultiDexApplication" harap jawaban ini bagus untuk seseorang

Mosa
sumber
0

kode ini memecahkan masalah

defaultConfig {
        multiDexEnabled true
}

Untuk cara termudah untuk menerapkan kunjungan masuk google : masuk google di android

Juga coba

dexOptions {
        javaMaxHeapSize "4g" 
    }

Juga simpan nomor versi yang sama untuk layanan yang berbeda.

user6435056
sumber
0

Saya memecahkan masalah ini dengan menambahkan: Di build.gradle:

defaultConfig {
    multiDexEnabled true
}

di local.properties,

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

sebutkan ketergantungan:

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

Bersihkan dan Bangun Kembali.

Crime_Master_GoGo
sumber
0

Jika 'Instant Run' diaktifkan, maka cukup nonaktifkan saja.

Ravid Rinek
sumber