2017-03-07 69 views
1

我已經在我的Android的build.gradle文件,該文件複製了我的內置APK文件中的下列任務對我來說:到V2.3.0安卓休息插件搖籃更新複製任務

/** 
* Copies the final release APK into the project root folder. 
*/ 
task copyRelease(type: Copy) { 
    // define output files exactly to work around a file locking issue 
    outputs.files.setFrom(file("../app-release.apk")) 

    from "build/outputs/apk/app-release.apk" 
    into ".." 
} 

此已經工作了很長一段時間今天爆出的Android做工作室的建議更新時間:

    (從V2.2.3)
  • 搖籃V3.3(從v2.14.1)
  • Android的搖籃插件V2.3.0

運行甲級現在構建提供了以下錯誤就行了outputs.files.setfrom(...)

No signature of method: org.gradle.api.internal.tasks.DefaultTaskOutputs$TaskOutputUnionFileCollection.setFrom() is applicable for argument types: (java.io.File) values: [..\app-release.apk] 
Possible solutions: sort() 

總之,好像TaskOutputUnionFileCollection.setFrom()不再需要File參數。

但我不知道如何將此代碼遷移到新版本,並且look through the source class沒有幫助我。


我已經在Android Gradle plugin Known Issues page看着還有Gradle 3.3. Release Notes,發現沒有直接提到這一點。

+0

,強制斷行中的「文件鎖定問題」是類似的[在這個鏈接查看詳細](HTTPS ://discuss.gradle.org/t/build-failure-with-failed-to-capture-snapshot-of-input-files-for-task-war-during-up-to-date-check/9132/8 )。項目的根文件夾包含'.gradle'文件夾。 –

+0

我也遇到過這個問題,在任何文檔中都找不到它。你能找到解決方法嗎? – user1088166

+0

@ user1088166我已經添加了我最終使用的解決方法。做我需要的,但如果你找到一個更好的解決方案隨時發佈。 –

回答

0

我找不到直接&上述代碼的準確翻譯而未實施解決方法。問題在於使用項目的根文件夾作爲複製命令的目標。

的解決方法是創建一個單獨的文件夾..\release然後將下面的代碼工作正常:

/** 
* Copies the final release APK into the project root folder. 
*/ 
task copyRelease(type: Copy) { 
    from "build/outputs/apk" 
    into "../release" 
    include "app-release.apk" 
}