2017-05-18 16 views
9

Tôi đang cố gắng cập nhật dự án lên Android Studio 3.Lớp Plugin Đầu ra 3-alpha1Lỗi gây ra lỗi

Đoạn mã sau không còn được chấp nhận trong tệp build.gradle nữa.

applicationVariants.all { variant -> 

    variant.outputs.each { out -> 

     def oFile =out.outputFile // This line causes failure 

     //... 
    } 
} 

Lỗi này đơn giản là "Không hợp lệ" nhưng tính năng intellisense gợi ý vì nó tự động hoàn thành tốt.

Kiểm tra idea.log cho thấy ngoại lệ sau đây:

Caused by: java.lang.RuntimeException: Not valid. 
at com.android.ide.common.build.ApkData.getMainOutputFile(ApkData.java:136) 
at com.android.build.gradle.internal.api.BaseVariantOutputImpl.getOutputFile(BaseVariantOutputImpl.java:60) 
at com.android.build.gradle.internal.api.ApkVariantOutputImpl_Decorated.getOutputFile(Unknown Source) 
at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.getProperty(BeanDynamicObject.java:228) 
at org.gradle.internal.metaobject.BeanDynamicObject.tryGetProperty(BeanDynamicObject.java:171) 
at org.gradle.internal.metaobject.CompositeDynamicObject.tryGetProperty(CompositeDynamicObject.java:55) 
at org.gradle.internal.metaobject.AbstractDynamicObject.getProperty(AbstractDynamicObject.java:59) 
at com.android.build.gradle.internal.api.ApkVariantOutputImpl_Decorated.getProperty(Unknown Source) 

tôi có thể tìm thấy không có tài liệu về Gradle 4. Điều này có thể là một lỗi hoặc một chức năng mà bị phản đối có lẽ?

Cũng nộp tại địa chỉ: https://issuetracker.google.com/issues/38408231

Trả lời

20

Cập nhật: Fix cho apk đổi tên:

Sử dụng tất cả lặp thay vì mỗi:

android.applicationVariants.all { variant -> 
    variant.outputs.all { 
     outputFileName = "${variant.name}-${variant.versionName}.apk" 
    } 
} 

câu trả lời trước, vẫn có giá trị: Đó là một vấn đề được biết đến với các plugin mới:

build này lỗi xảy ra bởi vì nhiệm vụ biến cụ thể không còn được tạo ra trong giai đoạn cấu hình. Điều này dẫn đến các plugin không biết tất cả các kết quả đầu ra của nó lên phía trước, nhưng nó cũng có nghĩa là thời gian cấu hình nhanh hơn. Thay vào đó, chúng tôi sẽ giới thiệu các API mới để cung cấp chức năng tương tự.

Chúng ta cần đợi một cách khác để thực hiện điều đó, theo Migration Guide.

+0

nhỡ mà ở dưới cùng của trang. Cảm ơn. – Kuffs

+1

Đổi tên APK là có thể. Chúng tôi đã cập nhật trang đó bằng một cách mới để thực hiện điều đó. –

1

Nếu plugin không hỗ trợ của bạn hỗ trợ đặt đường dẫn tệp một cách rõ ràng, nó có thể là một công việc xung quanh.

Tôi gặp sự cố với tác vụ Vải crashlyticsUploadDistributionRelease, cho tôi cùng một dấu vết ngăn xếp như trên. Tôi cố định nó bằng cách thiết lập một cách rõ ràng các tập tin đầu ra tài sản đường dẫn trong app/build.gradle:

ext.betaDistributionApkFilePath = "app/build/outputs/apk/release/app-release.apk"

Các vấn đề liên quan