Android Gradle高级生成插件:无法调用canRead()?
我正在尝试在我的应用程序中使用。我按照GitHub页面中的描述做了:Android Gradle高级生成插件:无法调用canRead()?,android,android-studio,gradle,android-gradle-plugin,Android,Android Studio,Gradle,Android Gradle Plugin,我正在尝试在我的应用程序中使用。我按照GitHub页面中的描述做了: 我在应用程序的build.gradle中添加了以下代码: buildscript { repositories { jcenter() } dependencies { classpath 'org.moallemi.gradle.advanced-build-version:gradle-plugin:1.5.0' } } apply plugin: 'org.moallemi.ad
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.
这是在Android Studio 1.3上,带有gradle插件1.2.3。我尝试将步骤1中的代码移动到项目的build.gradle,但仍然出现相同的错误 这似乎是一个导致
NullPointerException
的简单错误
VersionCodeOptions
类的versionPropsFile
属性仅在getVersionCode
getter中初始化
但是插件在调用getVersionCode
之前会尝试访问此属性,因此会收到一个空文件引用,当它检查canRead()
时会崩溃
解决方法非常简单:您只需在配置插件后立即对getVersionCode
getter进行虚拟调用,如下所示:
advancedVersioning {
outputOptions {
renameOutput true
nameFormat '${projectName}-${buildType}-${versionName}'
}
}
在项目的构建中。gradle:
advancedVersioning {
nameOptions {
}
codeOptions {
versionCodeType VersionCodeType.AUTO_INCREMENT_ONE_STEP
dependsOnTasks 'release'
}
}
println advancedVersioning.versionCode
通过打印版本代码,我调用getter,从而创建file对象。1.5.1版修复了这个问题issue@moallemi我在1.5.1I中遇到了同样的问题,我想补充一点,如果您也更改了版本代码的行为方式,那么您应该已经使用类似于
def appVersionCode=advancedVersioning.versionCode
,然后设置versionCode appVersionCode
,在这种情况下,println
语句中不需要