2016-03-23 26 views
7

Tôi đang cố gắng thêm tập lệnh trình bao trước khi xây dựng vào bản trình bày gradle/Android-Studio của mình. Tôi đã thêm phần sau đây để app/build.gradle:Không thể tìm thấy phương thức commandLine()

task prePreBuild << { 
    commandLine 'ls' 
} 
preBuild.dependsOn prePreBuild 

Khi tôi gọi xây dựng của tôi với ./gradlew assembleDebug tôi nhận được lỗi sau:

Could not find method commandLine() for arguments [ls] on project ':app' 

Nếu tôi thay thế dòng commandLine với một cái gì đó giống như println 'Hello' sau đó nó hoạt động tốt và tôi có thể thấy kết quả từ nhiệm vụ mới của mình.

Tôi đã tìm kiếm các đề cập khác về "Không thể tìm thấy phương thức commandLine" và không tìm thấy gì. Cách chính xác để gọi một kịch bản lệnh shell từ nhiệm vụ gradle này là gì?

+0

phiên bản gradle bạn sử dụng? – Blackbelt

+0

@Blackbelt './gradlew -v' nói Gradle 2.4 –

+0

@Blackbelt Tôi nhận được khá nhiều lỗi tương tự với thay đổi đó:"> Không thể tìm thấy phương thức thực thi() cho đối số [ls] trên dự án ': app'. " –

Trả lời

13

Bạn cần phải ghi rõ loại công việc hoặc sử dụng exec khối:

task execute(type: Exec) { 

} 

hoặc

exec { 

} 

Bạn có thể tìm thêm thông tin trên https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Exec.html

+1

Cảm ơn! Thay đổi dòng đầu tiên của ví dụ của tôi thành 'task prePreBuild (type: Exec) {' đã sửa lỗi. –

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