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.
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
major = 0
minor = 4
patch = 0
build = 1
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:
ext {
//Version
versionCode = getVersionCode()
versionName = getVersionName()
and I have added in the Fastfile the lane:
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:
* Where:
Build file '/MyProject/build.gradle' line: 155
the line 155 is when I do build = build+1
in the incrementBuildNumber
Any idea why ? I try builld++
but same issue.
Thanks
1条答案
按热度按时间tsm1rwdh1#
因为
version
对象为空,因此您将在155处获得NullPointerException(null+1)。您可以调用之前编写的
readVersion()
函数来创建版本对象(或使用versionFile从FileInputStream加载)解决方案如下