如何通过gradle任务同步Android项目?

时间:2017-08-23 20:12:16

标签: android android-studio gradle

我想在Android Studio中一键发布应用

我有3个任务:increment-version,build-app和publish-app:

increaseVersionCode assembleRelease crashlyticsUploadDistributionRelease

任务increaseVersionCode(我自己的)只是在build.gradle中增加了versionCode,但之后任务assembleRelease以之前的versionCode值运行(未递增)。最后(在完成所有3个任务之后),我在build.gradle中增加了versionCode,并发布了应用程序,但使用的是旧版本。

我想,我应该在increaseVersionCode之后运行“同步项目”。但我不知道如何用gradle做到这一点。

是否有可能通过gradle任务运行Android Studio的“同步项目”?

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我们可以从studio运行bash脚本。因此,我们需要将此命令放入文件中,然后使用Android-Studio运行它。感谢@ k3b。

1 个答案:

答案 0 :(得分:1)

注意:gradle-scripts是编译的而不是解释的。

gradle编译所有构建文件,然后执行构建。在构建编译之后,它没有注意到它自己的构建文件之一已经发生了变化,因此应用程序是使用旧版本信息构建的。

我不知道是否可以告诉gradle重建构建脚本或使用新编译的构建脚本执行子gradle

也许你可以创建一个批处理文件,你可以从android studio执行,这不依赖于android-stuidio-build,所以你不会有“告诉android studio”问题:

  • gradlew increaseVersionCode
  • 再次调用gradlew应该重新编译构建脚本
  • gradlew clean assemble释放crashlyticsUploadDistributionRelease