首页 > 解决方案 > 构建应用程序包时 gradle 脚本不起作用

问题描述

我在 app-gradle 文件中有一些代码可以自动增加构建版本号。
当我正在构建单个 apk 文件时它工作正常。
但是当我开始构建 App-Bundle 时它并没有增加任何东西。
我有一些误解,问题出在哪里。('app\src' 文件夹中还有 'version.properties' 文件,其中有单行 - VERSION_BUILD=13)。

apply plugin: 'com.android.application'

android {

    compileSdkVersion 28


    def versionPropsFile = file('version.properties')
    def versionBuild

    /*Setting default value for versionBuild which is the last incremented value stored in the file */
    if (versionPropsFile.canRead()) {
        def Properties versionProps = new Properties()
        versionProps.load(new FileInputStream(versionPropsFile))
        versionBuild = versionProps['VERSION_BUILD'].toInteger()
    } else {
        throw new FileNotFoundException("Could not read version.properties!")
    }

    /*Wrapping inside a method avoids auto incrementing on every gradle task run. Now it runs only when we build apk*/
    ext.autoIncrementBuildNumber = {
        if (versionPropsFile.canRead()) {
            def Properties versionProps = new Properties()
            versionProps.load(new FileInputStream(versionPropsFile))
            versionBuild = versionProps['VERSION_BUILD'].toInteger() + 1
            versionProps['VERSION_BUILD'] = versionBuild.toString()
            versionProps.store(versionPropsFile.newWriter(), null)
        } else {
            throw new FileNotFoundException("Could not read version.properties!")
        }
    }

    // Hook to check if the release/debug task is among the tasks to be executed.
    gradle.taskGraph.whenReady {taskGraph ->
        if (taskGraph.hasTask(assembleDebug)) {
            //autoIncrementBuildNumber()
        } else if (taskGraph.hasTask(assembleRelease)) {
            autoIncrementBuildNumber()
        }
    }


    defaultConfig {
        applicationId "com.example.one"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode versionBuild
        versionName "1.0." + versionBuild
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

标签: javaandroidgradleandroid-app-bundle

解决方案


要使用 gradle 构建应用程序包,请使用命令bundle<Variant>而不是assemble<Variant>.

这意味着在您的代码中,您还必须检查(或添加)任务bundleRelease

else if (taskGraph.hasTask(bundleRelease)) {
            autoIncrementBuildNumber()

推荐阅读