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

标签 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 中增加了版本代码,并发布了应用程序,但使用的是旧版本代码。

我想,我应该在 increaseVersionCode 之后运行“Sync Project”。但我不知道如何用 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,回答

我们需要将命令拆分为两个 bash 命令:

./gradlew increaseVersionCode && ./gradlew assembleRelease crashlyticsUploadDistributionRelease

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

最佳答案

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

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

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

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

  • gradlew increaseVersionCode
  • rem 第二次调用 gradlew 应该重新编译构建脚本
  • gradlew clean assembleRelease crashlyticsUploadDistributionRelease

关于android - 如何通过gradle任务同步Android项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45848521/

相关文章:

android - 程序类型已经存在 : org. apache.commons.codec.Decoder

Android Studio 在启动时不断崩溃

java - IntelliJ 无法解析 gradle java 跨模块测试依赖

android - 单元测试 Bolts Tasks With Continuations (Android)

android - com.android.tools.r8.errors.CompilationError : Program type already present: androidx. annotation.AnimRes

android - 适用于SDK版本19的Android Studio编译

java - Gradle 无法将项目依赖项添加到自身,因为它无法将 jar 文件添加到自身

android - 在 DialogFragment 中创建完全自定义的 AlertDialog

android - Eclipse 中未生成 MainActivity 类?

android - 通过蓝牙串口与 Python 通信