com.android.build.transform.api.TransformException


158

Tôi đang cố gắng tích hợp Google đăng nhập, trong ứng dụng của mình, tôi đã thêm các thư viện này:

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

Ngoài ra, thêm điều này vào lớp xây dựng dự án:

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

Đồng thời thêm plugin để xây dựng ứng dụng gradle:

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

sau đó thêm quyền yêu cầu nhưng khi tôi thử chạy ứng dụng của mình thì nhận được lỗi này:

    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

Câu trả lời:


312

Hãy thử thêm multiDexEnabled truevào tệp build.gradle ứng dụng của bạn .

 defaultConfig {
    multiDexEnabled true
}

BIÊN TẬP:

Hãy thử câu trả lời của Steve trước. Trong trường hợp nó xảy ra thường xuyên hoặc bước đầu tiên không giúp đỡ multiDexEnabledcó thể giúp đỡ. Đối với những người thích tìm hiểu sâu hơn ở đây là một số vấn đề tương tự (có nhiều câu trả lời hơn):

: app: dexDebug ExecException kết thúc với giá trị thoát khác không 2

Lỗi: Thực thi không thành công cho nhiệm vụ ': app: dexDebug'. com.android.ide.common. Process.ProcessException


3
Không làm việc cho tôi. Câu trả lời của Steve - Dọn dẹp đã làm mánh khóe. Tôi vừa nâng cấp lên AS1.5 Preview
Scott

6
Để công bằng, bạn nên luôn luôn kiểm tra xem một vấn đề có thể được giải quyết bằng cách làm sạch. Tôi tin rằng điều này sẽ giúp cho những người mà việc dọn dẹp không thực hiện được mánh khóe.
JuliusScript

cả hai điều này đều không giúp ích gì cho tôi - nhưng khởi động lại AS cuối cùng cũng đã thực hiện được mánh khóe :)
Maciej Boguta

không ai trong số này giúp tôi, nhưng nó đã bắt đầu hoạt động sau khi tôi khởi động lại AS
Maciej Boguta

1
Tôi cũng sẽ khuyên bạn nên kiểm tra câu trả lời của A Grandt, bên dưới ( stackoverflow.com/a/33690032/1617737 ) trước khi bạn bắt đầu với giải pháp này.
ban-geengineering

146

Một điều khác để xem, là bạn không sử dụng

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

Điều đó sẽ nhập TẤT CẢ các dịch vụ chơi và sẽ chỉ mất ít hơn một thế giới xin chào để vượt quá giới hạn phương thức 65535 của một APK dex duy nhất.

Luôn luôn chỉ định các dịch vụ bạn cần, ví dụ:

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
Bạn là nhất! Điều này đã giải quyết vấn đề của tôi. Xây dựng lại không giúp ích gì trong trường hợp của tôi như đã đề cập trong nhiều giải pháp. Như bạn đã đề cập, thư viện Google Play Services có rất nhiều thành phần phụ và chúng nên được nhập giống như bạn đã nói - từng cái một. Rất cám ơn, một lần nữa!
Ivan Caravanio

2
Tôi đã có vấn đề này trong vài ngày qua. Tôi nghĩ rằng tôi đã chỉ chọn những gì tôi cần. Nhưng, thấp và kìa, sau nhiều giờ tìm kiếm, tôi đã nhập tất cả các dịch vụ chơi khi tất cả những gì tôi muốn là quảng cáo dịch vụ chơi. Chắc chắn kiểm tra người phụ thuộc lớp của bạn!
MCLLC

@ A.Grandt bạn có thể thêm liên kết mà Ivan đã đưa vào câu trả lời của bạn không? Nó chứa một danh sách tên của tất cả các thành phần con và nó sẽ là một phần của câu trả lời, bởi vì đó là bước tiếp theo mà mọi người phải thực hiện.
Murmel

137

Tôi chỉ phải làm sạch dự án của mình và sau đó nó được xây dựng thành công.


4
Cảm ơn! Nó hoạt động hoàn hảo! Câu trả lời được chấp nhận sẽ là kỳ lạ vì dự án của tôi còn lâu mới đạt đến giới hạn phương pháp 65K (sẽ cần multidex).
Louis CAD

4
Đúng, làm sạch là cách để đi. AS 1.4
Felipe Caldas

Nếu bạn có các mô-đun thư viện thì hãy dọn sạch tất cả các mô-đun trong dự án để nó hoạt động. Chỉ làm sạch các mô-đun cá nhân không làm việc cho tôi. Làm sạch dự án ENTIRE.
Akh

Ai đó có thể cho tôi biết làm thế nào để tôi làm sạch dự án? Tôi đã thử rất nhiều "kết hợp" và không có gì hoạt động. Tôi thấy mọi người nói "sạch", nhưng không biết làm thế nào. Cám ơn.
Alberto Rubio

@AlbertoRubio, trong Build> Clean Project trên thanh công cụ AS.
Chantell Osejo

23

Lỗi này bắt đầu xuất hiện với tôi khi tôi thêm một số phương thức mới vào dự án của mình. Tôi biết rằng tôi không ở gần giới hạn phương thức 65 nghìn và không muốn kích hoạt hỗ trợ multiDex cho dự án của mình nếu tôi có thể giúp đỡ.

Tôi đã giải quyết nó bằng cách tăng bộ nhớ có sẵn cho :app:transformClassesForDexForDebugnhiệm vụ. Tôi đã làm điều này bằng cách xác định javaMaxHeapSize trong gradle.build.

gradle.build

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

Tôi đã thử điều này sau khi không có thành công với các giải pháp phổ biến khác cho vấn đề này:

  • Điều hành một dự án clean
  • Xóa thủ công /app/build/buildthư mục khỏi dự án của tôi
  • Vô hiệu hóa Gradle Cache và khởi động lại Android Studio

lỗi

Lỗi: Thực thi không thành công cho tác vụ> ': app: TransformClassWithDexForDebug'. com.android.build.api.transform.TransformException: com.android.ide.common. Process.ProcessException: org.gradle. Process.i INTERNal.ExecException: Process 'lệnh' /L Library / Java / JavaVirtualMachines / jd1. jdk / Nội dung / Trang chủ / bin / java '' đã hoàn thành với giá trị thoát khác không 1

Lưu ý: việc tăng bộ nhớ khả dụng cho tác vụ DEX có thể gây ra sự cố về hiệu suất trên các hệ thống có liên kết bộ nhớ thấp hơn .


Điều này làm việc cho tôi, chỉ cần xác định kích thước heap tối đa sẽ giải quyết vấn đề, cảm ơn bạn Maurice
Zeyad Assem

8

Tôi cũng gặp phải vấn đề tương tự trong Android Studio 1.5.1 và gradle 1.5.0. Tôi chỉ phải xóa các thư viện không mong muốn khỏi các phụ thuộc có thể được tự động thêm vào tệp build.gradle của ứng dụng. Một là: biên dịch 'com.google.android.gms: play-services: 8.4.0'. Vì vậy, đối với các thực tiễn tốt nhất, hãy cố gắng chỉ bao gồm thư viện dịch vụ chơi cụ thể như đối với quảng cáo chỉ bao gồm

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

Mặc du

defaultConfig {
    multiDexEnabled true
}

điều này cũng sẽ giải quyết vấn đề, nhưng cung cấp rất nhiều Ghi chú trong bảng điều khiển lớp, khiến việc tìm ra các vấn đề thực sự khác trong quá trình xây dựng trở nên khó hiểu


Thu hẹp việc sử dụng google api của tôi để chỉ chơi bản đồ-dịch vụ đã thực hiện thủ thuật này. Dưới đây là phân tích chính thức của Google về các thành phần khác nhau trong API dịch vụ chơi: developers.google.com/android/guides/
mẹo

4

bạn có thể xem tài liệu của 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

Tôi đang sử dụng AS 1.5.1 và gặp phải vấn đề tương tự. Nhưng chỉ cần làm sạch dự án sẽ không làm, vì vậy tôi đã thử một cái gì đó.

  • dự án sạch
  • khởi động lại AS
  • Dự án đồng bộ hóa

Điều này đã làm việc với tôi, vì vậy tôi hy vọng điều này sẽ giúp.


3
Điều này sẽ là vô nghĩa đối với các dự án đã vượt quá giới hạn phương pháp Dex 64k.
IgorGanapolsky

3

Trong trường hợp của tôi, thay đổi buildToolsVersion từ "24" thành "23.0.2", giải quyết vấn đề.


2

Trong trường hợp của tôi, Ngoại lệ xảy ra do tất cả các tiện ích mở rộng dịch vụ google play không có cùng phiên bản như sau

 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'

Nó hoạt động khi tôi thay đổi điều này thành

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
Tôi đã không duyệt tất cả các câu trả lời và tôi đã không thấy câu trả lời của bạn, vì vậy ... Tôi phát hiện ra rằng đây là trường hợp của tôi khoảng một giờ sau: /
denispyr

2

Tôi đã giải quyết nó bằng cách tiếp theo:

Tôi đã cấu hình multidex

Trong build.gradle bạn cần thêm cái tiếp theo.

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

Thêm cái tiếp theo trong local.properies

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

Sau đó vào lớp Ứng dụng, bạn cũng cần thêm 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);
   }
}

Đừng quên thêm mã dòng vào Manifest.xml

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

Đó là với điều này là đủ để giải quyết lỗi: Thực thi không thành công cho nhiệm vụ ': app: TransformClassWithDexForDebug. Kiểm tra rất kỹ vào build.gradle với javaMaxHeapSize "2g" và local.properations org.gradle.jvmargs = -Xmx2048m là 2 gigabyte.


2
Xin vui lòng chỉ đăng bằng tiếng Anh. Đây có vẻ là một câu trả lời hay, thật đáng tiếc khi nó bị xóa vì nó không phải bằng tiếng Anh.
Tunaki

1

Tôi gặp vấn đề tương tự khi tôi quay lại phiên bản cũ thông qua git và phiên bản đó có thư viện .jar trước đây của một api bên thứ 3 và vì một lý do nào đó hóa ra cả hai jar của cùng một sdk, chỉ có các phiên bản khác nhau nằm trong thư mục / libs .


1

Đầu tiên Xóa các tệp trung gian Ứng dụng FILEER \ app \ build \ trung gian HOẶC Làm sạch dự án của bạn và sau đó xây dựng lại.

Thêm

multiDexEnabled true

I E

defaultConfig {
        multiDexEnabled true
}

Nó làm việc cho tôi


1

Tôi đã giải quyết vấn đề này bằng cách thay đổi để sử dụng mới nhất buildToolsVersion

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

1

Một câu trả lời hữu ích nếu tất cả ở trên không làm việc cho bạn.

Chuyển đến tập tin lớp ứng dụng của bạn,

Kiểm tra tất cả các phiên bản phụ thuộc được đề cập với mã phiên bản phù hợp thay vì bất kỳ giá trị tương đối nào như (com.example.demo: +)

Trước đây - triển khai 'com.google.api-client: google-api-client-android: +'

Sau khi - thực hiện 'com.google.api-client: google-api-client-android: 1.30.0'


0

Nếu bạn đang sử dụng phiên bản lớp mới nhất tức là classpath 'com.android.tools.build:gradle:1.5.0' and classpath 'com.google.gms:google-services:1.4.0-beta3', hãy thử cập nhật kho lưu trữ hỗ trợ mới nhất từ ​​trình quản lý SDK và xây dựng lại toàn bộ dự án.


0

Nếu bạn cần thêm tài liệu tham khảo này cho plugin cordova, hãy thêm dòng tiếp theo trong tệp plugin.xml của bạn.

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

0

Nếu các phụ thuộc khác nhau có cùng một jar cũng gây ra lỗi xây dựng này.

Ví dụ:

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

Nếu "library1" và "library2" có cùng một jar được đặt tên xxx.jar, điều này sẽ gây ra lỗi như vậy.


0

Nó xảy ra với tôi vì rò rỉ bộ nhớ Eclipse. Tôi đã phải khởi động lại máy tính của tôi.


0

Tôi đã thay đổi một vài png và số bản dựng trong lớp và bây giờ tôi nhận được cái này. Không có số lượng làm sạch và khởi động lại giúp. Vô hiệu hóa Instant Run đã sửa nó cho tôi. YMMV


0

Tôi có cùng một tùy chọn và ngay khi tôi tắt Instant run, nó hoạt động tốt trên thiết bị API16 của tôi, nhưng trên thiết bị API24 thì nó hoạt động tốt với Instant run.

Hy vọng điều này sẽ giúp ai đó có cùng một vấn đề


0

Đơn giản chỉ cần đi đến Build - Chỉnh sửa Build Build - Tab Properties - Build Type Version và hạ cấp nó xuống ver 23.0.1. Nhấp vào ok. Điều này hoạt động cho studio android 1.5. Nó làm việc cho tôi.


0

câu trả lời viết bằng gradle đặt defaultConfig {multiDexEnables true} sau đó tên ứng dụng trong tệp kê khai android: name = "android.support.multidex.MultiDexApplication" mong muốn câu trả lời này thật tuyệt vời đối với ai đó


0

mã này đã giải quyết vấn đề

defaultConfig {
        multiDexEnabled true
}

Cách dễ nhất để thực hiện đăng nhập google : truy cập google đăng nhập vào Android

Cũng cố gắng

dexOptions {
        javaMaxHeapSize "4g" 
    }

Cũng giữ số phiên bản giống nhau cho các dịch vụ khác nhau.


0

Tôi đã giải quyết vấn đề này bằng cách thêm: Trong build.gradle:

defaultConfig {
    multiDexEnabled true
}

trong local.properties,

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

đề cập đến sự phụ thuộc:

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

Làm sạch và xây dựng lại.


0

Incase 'Instant Run' được kích hoạt, sau đó chỉ cần vô hiệu hóa nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.