能否为不同Gradle构建类型动态修改applicationId?
能否为不同Gradle构建类型动态修改applicationId?
当然可以啦!这在Android开发里是非常常见的需求,刚好适配你现在的场景——用不同的applicationId对应不同的Firebase项目,我给你捋捋具体怎么操作:
先明确你的现有情况:
- 你有两个Firebase项目,对应的applicationId仅中间一个字母大小写不同:
- com.xyZ.myproject(生产环境)
- com.xyz.myproject(开发环境)
- 目前有三个Gradle构建类型:默认的debug、release,还有你新增的staging
你只需要在app模块的build.gradle(Groovy格式)中,给每个构建类型直接指定对应的applicationId就可以实现动态切换,具体配置如下:
android { defaultConfig { // 可以先设置一个基础applicationId,也可以直接在buildTypes里覆盖 applicationId "com.xy.myproject" } buildTypes { debug { // debug构建绑定开发环境的Firebase项目 applicationId "com.xyz.myproject" minifyEnabled false debuggable true } release { // release构建绑定生产环境的Firebase项目 applicationId "com.xyZ.myproject" minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } staging { // 给staging构建设置对应的applicationId,你可以根据需求选和debug/release一致,或者用单独的Firebase项目ID applicationId "com.xyStaging.myproject" minifyEnabled false debuggable true } } }
如果你的项目用的是KTS格式的Gradle配置,代码逻辑是一样的,只是语法稍有调整:
android { defaultConfig { applicationId = "com.xy.myproject" } buildTypes { getByName("debug") { applicationId = "com.xyz.myproject" isMinifyEnabled = false isDebuggable = true } getByName("release") { applicationId = "com.xyZ.myproject" isMinifyEnabled = true proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } create("staging") { applicationId = "com.xyStaging.myproject" isMinifyEnabled = false isDebuggable = true } } }
这样配置之后,每次编译不同的构建类型时,Gradle会自动使用你指定的applicationId,完美和对应的Firebase项目绑定。之后要是想新增构建类型,直接在buildTypes块里加配置就行,灵活性拉满。
备注:内容来源于stack exchange,提问作者Vivek Gupta
相关产品推荐
相关产品推荐

