如何从build.gradle的productFlavours替换string.xml值

时间:2015-10-05 11:28:16

标签: android xml

在strings.xml中

<resources>
<string>name="app_name">App_Name</string>
<string>name="app_port">https://example.com</string>
<string>name="app_key">App_Key</string>
</resources>

在build.gradle中

productFlavors {
    production {
        applicationId = "com.example.production"
    }
    staging {
        applicationId = "com.example.staging"
        //code to manipulate strings.xml value because for production and staging app_name, app_port and key are different
    }
}

我需要一个代码来处理build.gradle文件的productFlavours中的strings.xml,而不是为staging和production创建单独的文件夹。

1 个答案:

答案 0 :(得分:2)

我找到了答案。在gradle中使用 resValue ,如下所示

vector<shared_ptr<A> > alpha;
// in struct A
static shared_ptr<A> create()
{
   shared_ptr<A> pointer = make_shared<A>();
   alpha.push_back(pointer);
   return pointer;
}

它将在build目录中创建generated.xml文件。 要获取代码中的值,请使用生成的资源,如下所示,

productFlavors {
production {
    applicationId = "com.example.production"
    resValue 'string', 'APP_NAME', 'app_name'
}
staging {
    applicationId = "com.example.staging"
    resValue 'string', 'APP_NAME', 'app_name_stage'
}