gpt4 book ai didi

android - Gradle 高级构建插件 : Cannot invoke canRead()?

转载 作者:太空狗 更新时间:2023-10-29 13:18:37 25 4
gpt4 key购买 nike

我正在尝试使用 Gradle Advanced Build Version Plugin在我的应用程序中。我按照 GitHub 页面中的描述做了:

  1. 我在我的应用程序的 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'
  2. 然后,在同一文件的末尾,我配置了 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com