Gradle 高级构建插件:无法调用 canRead()?
Gradle Advanced Build Plugin: Cannot invoke canRead()?
我正在尝试在我的应用程序中使用 Gradle Advanced Build Version Plugin。我按照 GitHub 页面中的描述进行了操作:
我在我的应用中添加了这段代码 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.
这是在 Android Studio 1.3 上使用 gradle 插件 1.2.3。我尝试将步骤 #1 中的代码移至项目的 build.gradle,但我仍然遇到相同的错误。
这似乎是一个导致 NullPointerException
.
的简单错误
VersionCodeOptions
class的versionPropsFile
属性只在getVersionCode
getter.
初始化
但插件在调用 getVersionCode
之前尝试访问此 属性,因此收到一个空文件引用,当它检查是否 canRead()
.
解决方法非常简单:您需要做的就是在配置插件后立即对 getVersionCode
getter 进行虚拟调用,如下所示:
项目中的build.gradle:
advancedVersioning {
nameOptions {
}
codeOptions {
versionCodeType VersionCodeType.AUTO_INCREMENT_ONE_STEP
dependsOnTasks 'release'
}
}
println advancedVersioning.versionCode
通过打印版本代码,我正在调用 getter,从而创建文件对象。
我正在尝试在我的应用程序中使用 Gradle Advanced Build Version Plugin。我按照 GitHub 页面中的描述进行了操作:
我在我的应用中添加了这段代码 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.
这是在 Android Studio 1.3 上使用 gradle 插件 1.2.3。我尝试将步骤 #1 中的代码移至项目的 build.gradle,但我仍然遇到相同的错误。
这似乎是一个导致 NullPointerException
.
VersionCodeOptions
class的versionPropsFile
属性只在getVersionCode
getter.
但插件在调用 getVersionCode
之前尝试访问此 属性,因此收到一个空文件引用,当它检查是否 canRead()
.
解决方法非常简单:您需要做的就是在配置插件后立即对 getVersionCode
getter 进行虚拟调用,如下所示:
项目中的build.gradle:
advancedVersioning {
nameOptions {
}
codeOptions {
versionCodeType VersionCodeType.AUTO_INCREMENT_ONE_STEP
dependsOnTasks 'release'
}
}
println advancedVersioning.versionCode
通过打印版本代码,我正在调用 getter,从而创建文件对象。