我正在尝试使用 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}' } }
但是,当我生成签名 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 中的代码移至项目的 build.gradle,但我仍然遇到相同的错误。
最佳答案
这似乎是一个导致 NullPointerException
的简单错误。
VersionCodeOptions
类的 versionPropsFile
属性仅在 getVersionCode
getter 中初始化。
但插件会在调用 getVersionCode
之前尝试访问此属性,因此会收到一个空文件引用,当它检查它是否 canRead()
时会崩溃。
解决方法非常简单:您需要做的就是在配置插件后立即对 getVersionCode
getter 进行虚拟调用,如下所示:
在项目的build.gradle中:
advancedVersioning {
nameOptions {
}
codeOptions {
versionCodeType VersionCodeType.AUTO_INCREMENT_ONE_STEP
dependsOnTasks 'release'
}
}
println advancedVersioning.versionCode
通过打印版本代码,我调用了 getter,从而创建了文件对象。
关于android - Gradle 高级构建插件 : Cannot invoke canRead()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31867408/