我想在 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/