[英]Issue on build.gradle and custom task
In order to manage my build pipeline for Android app, I have added a task and custom functions in build.gradle
to I can trigger an increment of the build version.为了管理 Android 应用程序的构建管道,我在
build.gradle
中添加了一个任务和自定义函数,以触发构建版本的增量。
For now, I have this file version.properties
in the root project dir and I have added at the end of the build.gradle
in the project dir, the below code:现在,我在根项目目录中有这个文件
version.properties
,我在项目目录中的build.gradle
末尾添加了以下代码:
Version.properties版本.properties
major = 0
minor = 4
patch = 0
build = 1
build.gradle build.gradle
def readVersion() {
def versionFile = new File(project.rootDir, 'version.properties')
def version = new Properties()
def stream
try {
stream = new FileInputStream(versionFile)
version.load(stream)
} catch (FileNotFoundException ignore) {
} finally {
if (stream != null) stream.close()
}
if(!version['major']) version ['major'] = "0"
if(!version['minor']) version ['minor'] = "0"
if(!version['patch']) version ['patch'] = "0"
if(!version['build']) version ['build'] = "0"
return version
}
def getVersionCode() {
def version = readVersion()
def major = version['major']
def minor = version['minor']
def patch = version['patch']
def build = version['build']
return major * 1000000 + minor * 10000 + patch * 100 + build
}
def getVersionName() {
def version = readVersion()
return "v${version['major']}" +
".${version['minor']}" +
".${version['patch']}" +
"-rc${version['build']}"
}
def incrementBuildNumber() {
def versionFile = new File(project.rootDir, 'version.properties')
def version = new Properties()
def build = version['build']
build = build+1
version['build'] = build.toString
def stream = new FileOutputStream(versionFile)
try {
version.store(stream, null)
} finally {
if (stream != null) stream.close()
}
//return build
}
task doBuildNumberIncrement() {
incrementBuildNumber()
}
in the same build.gradle, I have:在同一个 build.gradle 中,我有:
ext {
//Version
versionCode = getVersionCode()
versionName = getVersionName()
and I have added in the Fastfile the lane:我在 Fastfile 中添加了车道:
desc "Build and release on firebase"
lane :build_and_release_to_firebase do
increment_version()
develop_build(flavor: "MyFlavor")
desc "Manage build version"
lane :increment_version do
gradle(task: "doBuildNumberIncrement")
end
When I running locally the command with the cmd line fastlane build_and_release_to_firebase
I am having the error below:当我在本地运行带有 cmd 行
fastlane build_and_release_to_firebase
的命令时,出现以下错误:
* Where:
Build file '/MyProject/build.gradle' line: 155
the line 155 is when I do build = build+1
in the incrementBuildNumber
第 155 行是我在
incrementBuildNumber
中执行build = build+1
Any idea why?知道为什么吗? I try
builld++
but same issue.我尝试
builld++
但同样的问题。
Thanks谢谢
because version
object is empty and you'll get NullPointerException (null+1) at 155 because of that.因为
version
object 是空的,因此你会在 155 处得到 NullPointerException (null+1)。
you can call readVersion()
function that you wrote before to create the version object ( or load from FileInputStream by using versionFile)您可以调用之前编写的
readVersion()
function 来创建版本 object(或使用 versionFile 从 FileInputStream 加载)
solution as below解决方案如下
def incrementBuildNumber() {
def versionFile = new File(project.rootDir, 'version.properties')
def version = readVersion()
def build = version['build']
build = build + 1
version['build'] = build.toString()
def stream = new FileOutputStream(versionFile)
try {
version.store(stream, null)
} finally {
if (stream != null) stream.close()
}
//return build
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.