java - 构建应用程序包时 gradle 脚本不起作用
问题描述
我在 app-gradle 文件中有一些代码可以自动增加构建版本号。
当我正在构建单个 apk 文件时它工作正常。
但是当我开始构建 App-Bundle 时它并没有增加任何东西。
我有一些误解,问题出在哪里。('app\src' 文件夹中还有 'version.properties' 文件,其中有单行 - VERSION_BUILD=13)。
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
def versionPropsFile = file('version.properties')
def versionBuild
/*Setting default value for versionBuild which is the last incremented value stored in the file */
if (versionPropsFile.canRead()) {
def Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
versionBuild = versionProps['VERSION_BUILD'].toInteger()
} else {
throw new FileNotFoundException("Could not read version.properties!")
}
/*Wrapping inside a method avoids auto incrementing on every gradle task run. Now it runs only when we build apk*/
ext.autoIncrementBuildNumber = {
if (versionPropsFile.canRead()) {
def Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))
versionBuild = versionProps['VERSION_BUILD'].toInteger() + 1
versionProps['VERSION_BUILD'] = versionBuild.toString()
versionProps.store(versionPropsFile.newWriter(), null)
} else {
throw new FileNotFoundException("Could not read version.properties!")
}
}
// Hook to check if the release/debug task is among the tasks to be executed.
gradle.taskGraph.whenReady {taskGraph ->
if (taskGraph.hasTask(assembleDebug)) {
//autoIncrementBuildNumber()
} else if (taskGraph.hasTask(assembleRelease)) {
autoIncrementBuildNumber()
}
}
defaultConfig {
applicationId "com.example.one"
minSdkVersion 21
targetSdkVersion 28
versionCode versionBuild
versionName "1.0." + versionBuild
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
解决方案
要使用 gradle 构建应用程序包,请使用命令bundle<Variant>
而不是assemble<Variant>
.
这意味着在您的代码中,您还必须检查(或添加)任务bundleRelease
else if (taskGraph.hasTask(bundleRelease)) {
autoIncrementBuildNumber()
推荐阅读
- python - 如何将一个模型的字段值分配给另一个模型的字段?
- xml - 在 Nest.js 中获取 Post 请求正文中的 XML
- javascript - jQuery 表单提交按钮根据选中的复选框转到 URL
- javascript - react-spring:使用 useChain 进行缩放和翻译
- vue.js - Vue2 - 路由级别的延迟加载不起作用?
- r - 如何仅针对每个文件中的某些值组合多个 .RDS 文件?
- c++ - 在 C++ 中运行项目时出现未定义的引用错误
- visual-studio - 您好,我有一个使用 specflow 用 c# 编写的自动化框架
- python - 如何并行计算天体运动?
- c++ - 如何转发声明在单独的头文件中相互引用的结构?