Android gradle-复制具有不同值的db键,用于调试和发布

Android gradle-复制具有不同值的db键,用于调试和发布,android,gradle,Android,Gradle,--编辑2-- 这个问题问错了,它是基于早期使用Ant的能力推导出的解决方案的机制。gradle提供了对资源风格的直接访问。字符串值取决于,问题应该是 “如何根据生成类型为资源api键值提供差异值?” 使用令牌的复制方法可能在ant中有效,但在gradle环境中似乎有点偏离基准 --仅使用gradle方法解决,而不是重新实现“ant方法” 将密钥放入配置文件 configDbApi=..ovv configDbRest=..eoj configDbApiProd=..prd configDbRe

--编辑2--

这个问题问错了,它是基于早期使用Ant的能力推导出的解决方案的机制。gradle提供了对资源风格的直接访问。字符串值取决于,问题应该是

“如何根据生成类型为资源api键值提供差异值?”

使用令牌的复制方法可能在ant中有效,但在gradle环境中似乎有点偏离基准

--仅使用gradle方法解决,而不是重新实现“ant方法”

将密钥放入配置文件

configDbApi=..ovv
configDbRest=..eoj
configDbApiProd=..prd
configDbRestProd=..prdrest
“build.gradle”类型中的tweek

    defaultConfig {        
     resValue "string", "db_app_id", configDbApiProd
         resValue "string", "db_rest_api_key", configDbRestProd
    }


    buildTypes {

        release {

            buildConfigField "String", "DBAPP", "\"DB APP RELEASE\""
            resValue "string", "db_app_id", configDbApiProd
            buildConfigField "String", "DBREST", "\"DB REST RELEASE\""
            resValue "string", "db_rest_api_key", configDbRestProd          
        } 
   debug{ copy it,pointing to diff config prop values for $debug}
    }
--决断端

--OP--

我有带标记的字符串xml:

<string name="db_app_id">@configApi@</string>
<string name="db_rest_api_key">@configRest@</string>
因此,我希望在“assembleRelease”任务堆栈中的某个地方运行一个
copy
任务

task copyStrings(type: Copy) {
  from('config') {
    include 'strings.xml'
    filter(ReplaceTokens, tokens: [configApi: configDbApiProd, configRest: configDbRestProd])
}
    into 'res/values'
    }

我的问题是如何将此任务作为assembleRelease堆栈的一部分调用

:prepareReleaseDependencies
:compileReleaseAidl
:compileReleaseRenderscript
:generateReleaseBuildConfig
:mergeReleaseAssets
:generateReleaseResValues UP-TO-DATE
:generateReleaseResources
:mergeReleaseResources
:processReleaseManifest
:processReleaseResources
:generateReleaseSources
:compileReleaseJava
:lintVitalRelease
似乎副本应该在
generateReleaseBuildConfig
但是我无法调用任务
copyStrings

我还想在
assembleDebug
步骤中做一个类似的复制,在该步骤中,我使用了dev DB键
gradle.properties
中的不同属性值

--编辑-- 更改build.gradle和在“AssembledBug”之前未运行的任务(copyStrings)

tasks.assembleRelease.dependsOn(copyStrings)
预期结果:copyStrings在assembleRelease之前运行


实际结果:在不调用task=copyStrings的情况下调用assembleRelease,您需要做的是使用
dependsOn
mustRunAfter
创建对任务的依赖关系

generateReleaseBuildConfig.dependsOn(copyStrings)

dependsOn
用于在任务之间建立固定的依赖关系。当
A
任务依赖于
B
任务时,
B
将在
A
之前运行(如果它不是最新的)
mustRunAfter
的工作原理有点不同。我不强制运行任务,但是当
a
必须在
B
之后运行,并且两个任务都添加到gradle调用图中时,可以保证
B
将首先运行

添加了对我的任务“copyStrings”的“assembleRelease”依赖项,并且我的任务未被调用
tasks.assembleRelease.dependsOn(copyStrings)
generateReleaseBuildConfig.dependsOn(copyStrings)