com.android.build.transform.api.TransformException


158

Google oturum açmayı entegre etmeye çalışıyorum, uygulamamda şu kütüphaneleri ekledim:

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

Ayrıca proje derleme sınıfına ekleyin:

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

Ayrıca uygulama oluşturma derecesine eklenti ekleyin:

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

daha sonra gerekli izinleri ekleyin, ancak uygulamamı çalıştırmaya çalıştığımda bu hatayı aldı:

    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

Yanıtlar:


312

multiDexEnabled trueUygulama derlemesi.gradle dosyanıza eklemeyi deneyin .

 defaultConfig {
    multiDexEnabled true
}

DÜZENLE:

Önce Steve'in cevabını dene . Sık sık meydana gelmesi veya ilk adımın yardımcı olmaması durumunda yardımcı multiDexEnabledolabilir. Burada daha derin kazmayı sevenler için birkaç benzer sorun var (daha fazla cevapla):

: app: dexDebug ExecException sıfır olmayan çıkış değeri 2 ile tamamlandı

Hata: ': app: dexDebug' görevi için yürütme başarısız oldu. com.android.ide.common.process.ProcessException


3
Benim için çalışmadı. Steve'in cevabı - Temizlik hile yaptı. Ben sadece AS1.5 Önizleme yükseltme
Scott

6
Adil olmak gerekirse, bir sorunun temizlenerek çözülüp çözülemeyeceğini her zaman kontrol etmelisiniz. Bunun temizlik hile yapmayanlara yardım edeceğine inanıyorum.
JuliusScript

her ikisi de bana yardım etmedi - ama AS yeniden başlatmak sonunda hile yaptı :)
Maciej Boguta

Bunların
hiçbiri

1
Ayrıca , bu çözüme geçmeden önce A grandt'ın cevabını ( stackoverflow.com/a/33690032/1617737 ) kontrol etmenizi de tavsiye ederim.
ban-geoengineering

146

İzlenmesi gereken bir başka şey de,

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

Bu TÜM oyun hizmetlerini içe aktaracak ve tek bir dex APK'sının 65535 yöntem sınırını aşması sadece merhaba bir dünyadan biraz daha fazla sürecek.

Her zaman yalnızca ihtiyacınız olan hizmetleri belirtin, örneğin:

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
Sen en iyisin! Bu benim sorunumu çözdü. Yeniden oluşturma, birçok çözümde belirtildiği gibi benim durumumda yardımcı olmaz. Bahsettiğiniz gibi Google Play Hizmetleri kitaplığında çok sayıda alt bileşen var ve bunların söylediğiniz gibi içe aktarılması gerekiyor - tek tek. Tekrar çok teşekkürler!
Ivan Caravanio

2
Son birkaç gündür bu sorunu yaşadım. Sadece ihtiyacým olaný seçtiđimi sanýyordum. Ancak, düşük ve bakın, saatlerce baktıktan sonra, tüm istediğim oyun hizmetleri reklamları olduğunda tüm oyun hizmetlerini içe aktarıyordum. Kesinlikle bağımlılık insanlar kontrol edin!
MCLLC

@ A.Grandt Ivan'ın verdiği bağlantıya cevabınızı ekleyebilir misiniz ? Tüm alt bileşenlerin adlarının bir listesini içerir ve cevabın bir parçası olmalıdır, çünkü herkesin atması gereken bir sonraki adımdır.
Murmel

137

Sadece projemi temizlemek zorunda kaldım ve daha sonra başarıyla inşa edildi.


4
Teşekkürler! Kusursuz çalışır! Projem 65K yöntem sınırına (multidex'e ihtiyaç duyacaktır) ulaşmaktan uzak olduğu için kabul edilen cevap garip olurdu.
Louis CAD

4
Evet, temizlik yoluydu. AS 1.4
Felipe Caldas

Kütüphane modülleriniz varsa, projenin çalışması için tüm modülleri temizleyin. Sadece tek tek modülleri temizlemek benim için çalışmadı. ENTIRE projesini temizleyin.
Akh

Birisi bana projeyi nasıl temizlediğimi söyleyebilir mi? Ben çok "kombinasyonları" deniyorum ve hiçbir şey işe yaramıyor. Herkesin "temiz" dediğini görüyorum, ama nasıl olduğunu bilmiyorum. Teşekkürler.
Alberto Rubio

@AlbertoRubio, AS araç çubuğundaki Oluştur> Projeyi Temizle altında.
Chantell Osejo

23

Projeme yeni yöntemler eklediğimde bu hata benim için görünmeye başladı. 65k yöntem sınırının yakınında hiçbir yerde olmadığımı biliyordum ve eğer yardımcı olabilirsem projem için multiDex desteğini etkinleştirmek istemiyordum.

:app:transformClassesForDexForDebugGörev için kullanılabilir belleği artırarak çözdüm. Ben belirterek bunu javaMaxHeapSize içinde gradle.build.

gradle.build

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

Bu sorunla ilgili diğer ortak çözümlerle başarılı olamadan sonra bunu denedim:

  • Proje yürütme clean
  • /app/buildVe /builddizinleri projemden elle silme
  • Gradle Cache'i geçersiz kılma ve Android Studio'yu yeniden başlatma

Hata

Hata: Görev> ': app: transformClassesWithDexForDebug' için yürütme başarısız oldu. com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: 'Komut' / 'Kütüphane' / Java/JavaVirtualMachines/jdk1.8.0_45. jdk / İçindekiler / Ana Sayfa / bin / java '' sıfırdan farklı çıkış değeri ile tamamlandı 1

Not: DEX görevi için kullanılabilir belleği artırmak, düşük bellek bağlantısı olan sistemlerde performans sorunlarına neden olabilir .


Bu benim için çalıştı, sadece maksimum yığın boyutu sorunu çözecek belirtmek için, teşekkür ederim Maurice
Zeyad Assem

8

Android Studio 1.5.1 ve gradle 1.5.0'da da benzer bir sorunla karşılaştım. Uygulamamın build.gradle dosyasına otomatik olarak eklenebilecek bağımlılıklardan istenmeyen kütüphaneleri kaldırmam gerekiyor. Bunlardan biri: 'com.google.android.gms: play-services: 8.4.0' derlemesiydi. Bu nedenle, en iyi uygulamalar için yalnızca reklamlar gibi belirli oyun hizmetleri kitaplığını dahil etmeye çalışın

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

olmasına rağmen

defaultConfig {
    multiDexEnabled true
}

bu da sorunu çözecektir, ancak sürüm konsolunda çok sayıda Not sağlar ve derleme sırasında diğer gerçek sorunları bulmayı kafa karıştırıcı hale getirir


Google API kullanımımı sadece oyun hizmetleri haritalarına daraltmak hile yaptı. İşte Google'ın oyun hizmetleri API'sındaki çeşitli bileşenlerin resmi dökümü: developers.google.com/android/guides/…
jperl

4

Android'in belgelerini görebilirsiniz

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 kullanıyorum ve aynı sorunla karşılaştım. Ama sadece projeyi temizlemek işe yaramaz, bu yüzden bir şey denedim.

  • temiz proje
  • AS'yi yeniden başlat
  • Senkronizasyon Projesi

Bu benimle çalıştı, umarım bu yardımcı olur.


3
64k Dex yöntem sınırını aşan projeler için bu anlamsız olacaktır.
IgorGanapolsky

3

Benim durumumda buildToolsVersion'ı "24" ten "23.0.2" ye değiştir, sorunu çöz.


2

Benim durumumda, tüm google play hizmet uzantıları aşağıdaki sürümle aynı olmadığı için İstisna oluştu

 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'

Bunu değiştirdiğimde işe yaradı

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
Bütün cevaplara göz atmak vermedi ve ben seninkini görmedim, bu yüzden ... Ben keşfetti bu yaklaşık bir saat sonra benim hikayemde olduğu: /
denispyr

2

Bir sonraki ile çözdüm:

Multidex yapılandırdım

Build.gradle'da bir sonrakini eklemeniz gerekir.

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

Sonrakini local.properties içine ekleyin

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

Bundan sonra Uygulama sınıfına Multidex'i de eklemeniz gerekir.

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

Satır kodunu Manifest.xml dosyasına eklemeyi unutmayın

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

Bu kadarıyla hatayı gidermek için yeterliydi: Yürütme görev için başarısız oldu: app: transformClassesWithDexForDebug. JavaMaxHeapSize "2g" ile build.gradle'a çok iyi kontrol edin ve local.properties org.gradle.jvmargs = -Xmx2048m 2 gigabayttır.


2
Lütfen yalnızca İngilizce olarak yayınlayın. Bu iyi bir yanıt gibi görünüyor, İngilizce olmadığı için silinmesi utanç verici olurdu.
Tunaki

1

Git üzerinden eski sürüme geri döndüğümde aynı sorun vardı ve bu sürüm bir 3. parti api önceki .jar kütüphanesi vardı ve bazı nedenlerden dolayı aynı sdk her iki kavanoz, sadece farklı sürümleri / libs klasöründe olduğu ortaya çıktı .


1

Önce Ara dosyaları silin APP FOLDER \ app \ build \ aramaddeleri VEYA Projenizi temizleyin ve ardından yeniden oluşturun.

Ekleme

multiDexEnabled true

yani

defaultConfig {
        multiDexEnabled true
}

Benim için iş


1

En son kullanım için değişiklik yaparak bu sorunu çözdüm buildToolsVersion

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

1

Yukarıdakilerin hepsi sizin için işe yaramadıysa yararlı bir cevap.

Uygulama derecelendirme dosyanıza gidin,

Tüm bağımlılık sürümlerinin (com.example.demo: +) gibi göreli bir değer yerine uygun sürüm koduyla belirtildiğinden emin olun.

Önceki - 'com.google.api-client: google-api-client-android: +' uygulaması

Uygulamadan sonra 'com.google.api-client: google-api-client-android: 1.30.0'


0

En son sınıf sürümünü kullanıyorsanız, yani classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3'SDK yöneticisinden en son destek deposunu güncellemeyi deneyin ve projenin tamamını yeniden oluşturun.


0

Bu referansı cordova eklentisi için eklemeniz gerekiyorsa plugin.xml dosyanıza sonraki satırı ekleyin.

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

0

Farklı bağımlılıklar aynı kavanoza sahipse, bu derleme hatasına neden olur.

Örneğin:

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

"Library1" ve "library2" adında aynı kavanoz varsa xxx.jar, bu böyle bir hata yapar.


0

Eclipse bellek sızıntısı yüzünden başıma geldi. Bilgisayarımı yeniden başlatmam gerekiyordu.


0

Birkaç png'yi ve gruptaki derleme numarasını değiştirdim ve şimdi anladım. Hiçbir temizlik ve yeniden başlatma miktarı yardımcı olmadı. Anında Çalıştır'ı devre dışı bırakmak benim için düzeltti. YMMV


0

Aynı seçeneğe sahiptim ve Anında çalışmayı kapatır kapatmaz, API16 cihazımda iyi çalıştı, ancak API24 cihazında Anında çalıştırma ile iyi çalıştı.

Umarım bu aynı sorunu yaşayan birine yardımcı olur


0

Derleme - Derleme Türlerini Düzenle - Özellikler Sekmesi - Derleme Türü Sürümü'ne gidin ve sürüm 23.0.1'e düşürün. Tamam'ı tıklayın. Bu android stüdyo 1.5 için çalışır. Benim için çalıştı.


0

yazma cevap içindedir gradle ardından koymak defaultConfig {gerçek multiDexEnabled} Manifestte uygulama adına android: name = Bu yanıt diliyorum "android.support.multidex.MultiDexApplication" Bazı birine hellpful olduğunu


0

bu kod çözüldü problem

defaultConfig {
        multiDexEnabled true
}

Google oturum açma uygulamasını uygulamanın en kolay yolu için: google oturum açma android

Ayrıca denemek

dexOptions {
        javaMaxHeapSize "4g" 
    }

Ayrıca farklı hizmetler için aynı sürüm numarasını saklayın.


0

Bu sorunu ekleyerek çözdüm: In build.gradle:

defaultConfig {
    multiDexEnabled true
}

içinde local.properties,

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

bağımlılıktan söz et:

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

Temizleyin ve yeniden oluşturun.


0

Incase 'Instant Run' etkinleştirilir, ardından devre dışı bırakılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.