我想在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。
答案 0 :(得分:1)
注意:gradle-scripts是编译的而不是解释的。
gradle编译所有构建文件,然后执行构建。在构建编译之后,它没有注意到它自己的构建文件之一已经发生了变化,因此应用程序是使用旧版本信息构建的。
我不知道是否可以告诉gradle重建构建脚本或使用新编译的构建脚本执行子gradle
也许你可以创建一个批处理文件,你可以从android studio执行,这不依赖于android-stuidio-build,所以你不会有“告诉android studio”问题: