我正在尝试根据构建风格在 Assets 中复制数据库文件,为此,我在build.gradle中创建了一个任务(应用程序级别)

 flavorDimensions("default")

    productFlavors {
        dev {
            applicationIdSuffix ".dev"
            buildConfigField("String", "DB_FILE_DIR", '"stage/"')

            delete"$rootProject.projectDir/app/src/main/assets/app_db.db"

        }
        stage {
            applicationIdSuffix ".stage"
            buildConfigField("String", "DB_FILE_DIR", '"stage/"')

            delete "$rootProject.projectDir/app/src/main/assets/app_db.db"

        }
        production {
            applicationIdSuffix ".production"
          delete"$rootProject.projectDir/app/src/main/assets/app_db.db"
        }
    }

    variantFilter { variant ->
        if (variant.buildType.name.equals('release') || variant.buildType.name.equals('debug')) {
            variant.setIgnore(true)
        }
    }

复制数据库文件的任务。
task copyProductionDB(type: Copy) {
    from file("$rootProject.projectDir/production/app_db.db")
    into "$rootProject.projectDir/app/src/main/assets/"
    println("Production DB copied")
}
task copyStageDB(type: Copy) {
    from file("$rootProject.projectDir/stage/app_db.db")
    into "$rootProject.projectDir/app/src/main/assets/"
    println("Stage DB copied")
}

我的问题是从一种口味切换到另一种口味,我必须将db文件替换为 Assets 文件夹。我该如何实现。请帮我。提前致谢。

最佳答案

您可以检查应用程序变体并获取其目录:

android.applicationVariants.all { variant ->
    // get directory
    variant.dirName // it returns debug/dev or relese/dev , debug/stage or relese/stage
}

关于android - 如何用产品口味调用任务,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53275135/

10-13 03:06