我试图在我的应用中使用Gradle Advanced Build Version Plugin。我按照GitHub页面中的描述进行了操作:
我在我的app的build.gradle中添加了这段代码:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.moallemi.gradle.advanced-build-version:gradle-plugin:1.5.0'
}
}
apply plugin: 'org.moallemi.advanced-build-version'
然后,在同一个文件的末尾,我像这样配置advancedVersioning
:
advancedVersioning {
outputOptions {
renameOutput true
nameFormat '${projectName}-${buildType}-${versionName}'
}
}
但是,当我Generate a Signed APK
时,我在执行:app:assembleRelease
任务时遇到错误:
Error:
02:06:47.075 [ERROR] [org.gradle.BuildExceptionReporter]
02:06:47.076 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE:
Build failed with an exception.
02:06:47.076 [ERROR] [org.gradle.BuildExceptionReporter]
02:06:47.077 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
02:06:47.077 [ERROR] [org.gradle.BuildExceptionReporter] A problem occurred
configuring project ':app'.
02:06:47.077 [ERROR] [org.gradle.BuildExceptionReporter]
Cannot invoke method canRead() on null object
02:06:47.078 [ERROR] [org.gradle.BuildExceptionReporter]
02:06:47.078 [ERROR] [org.gradle.BuildExceptionReporter] * Try:
02:06:47.078 [ERROR] [org.gradle.BuildExceptionReporter] Run with --stacktrace option to
get the stack trace.
这是在带有gradle插件1.2.3的Android Studio 1.3上。我尝试将步骤#1中的代码移动到Project的build.gradle中,但我仍然得到相同的错误。
答案 0 :(得分:2)
这似乎是导致NullPointerException
的简单错误。
versionPropsFile
类的VersionCodeOptions
属性仅在getVersionCode
getter中初始化。
但是插件在调用getVersionCode
之前尝试访问此属性,从而接收到空文件引用,当它检查canRead()
时是否会崩溃。
解决方法非常简单:您需要做的就是在配置插件后立即对getVersionCode
getter进行虚拟调用,如下所示:
在项目的build.gradle中:
advancedVersioning {
nameOptions {
}
codeOptions {
versionCodeType VersionCodeType.AUTO_INCREMENT_ONE_STEP
dependsOnTasks 'release'
}
}
println advancedVersioning.versionCode
通过打印版本代码,我正在调用getter,从而创建文件对象。