2017-08-23 34 views
1

我想要在Android Studio中點擊發布應用程序如何通過gradle任務同步Android項目?

而且我有3項任務:增量版本,內置的應用程序和發佈應用內:

increaseVersionCode assembleRelease crashlyticsUploadDistributionRelease 

任務increaseVersionCode(我自己),只是增加的versionCode在build.gradle,但在那之後的任務assembleRelease運行與之前的versionCode值(不增加)。最後(畢竟3個任務),我已經增加了build.gradle中的versionCode,併發布了應用程序,但是使用了舊的versionCode。

我想,我應該在increaseVersionCode之後運行「Sync Project」。但我不知道如何用gradle來做。

是否有可能通過gradle任務運行Android Studio的「Sync Project」?

來源increaseVersionCode

import java.util.regex.Pattern 
task('increaseVersionCode') << { 
    def buildFile = file("build.gradle") 
    def pattern = Pattern.compile("versionCode\\s+(\\d+)") 
    def manifestText = buildFile.getText() 
    def matcher = pattern.matcher(manifestText) 
    matcher.find() 
    def versionCode = Integer.parseInt(matcher.group(1)) 
    def manifestContent = matcher.replaceAll("versionCode " + ++versionCode) 
    buildFile.write(manifestContent) 
} 

UPD,ANSWER

我們需要命令分成兩個的bash命令:

./gradlew increaseVersionCode && ./gradlew assembleRelease crashlyticsUploadDistributionRelease 

使用Android的Studio插件BashSupport我們可以給從工作室運行bash腳本。因此,我們需要將此命令存檔,並使用Android-Studio運行。感謝@ k3b。

+0

如何增加版本代碼,以及如何在構建任務中使用它? –

+0

@ lu.koerfer它只是簡單的用正則表達式替換。我附上了任務的源代碼。 – comm1x

回答

1

注意:gradle-scripts被編譯而不被解釋。

gradle編譯所有構建文件,然後執行構建。它沒有注意到它的一個自己的構建文件在構建編譯後發生了變化,因此應用程序是使用舊版本信息構建的。

我DONOT知道是否可以告訴gradle這個重建構建腳本或者用新編譯的構建腳本執行副gradle這個

也許你可以創建您可以從Android的工作室和執行批處理文件不依賴於Android的stuidio,建那麼你DONOT有「告訴機器人工作室」的問題:

  • gradlew increaseVersionCode
  • REM第二個電話來gradlew應該重新編譯構建腳本
  • gradlew clean assembleRelease crashlyticsUploadDistributionRelease
+0

是的,你是對的。將命令分成兩個命令可以正常工作:'./gradlew increaseVersionCode && ./gradlew assembleRelease crashlyticsUploadDistributionRelease'。我們只需要將此命令綁定到熱鍵或其他東西。謝謝。 – comm1x