如何在不破坏变体忽略表达式的情况下应用Google Services Plugin
在带多风味的Android项目中集成Firebase的正确姿势
当你给Firebase项目添加新的Android应用时,系统肯定会提醒你要用上Google Services Plugin(GPS插件)。如果你的项目是像Google Samples那样,有mock和prod两种产品风味来方便测试的话,你得(或者说必须)移除mockRelease这个变体——原因其实很直白:mock风味本来就是用来测试的,根本不需要打正式的release包嘛。
下面就是实现这个变体方案并集成Firebase的完整构建文件示例:
android { // 其他基础配置... buildTypes { release { // release构建的相关配置,比如混淆、签名等 minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug { applicationIdSuffix ".debug" // debug构建的其他专属配置 } } flavorDimensions "environment" productFlavors { prod { dimension "environment" // prod风味的配置,比如正式环境API地址等 } mock { dimension "environment" // mock风味的配置,比如本地mock服务地址等 } } // 核心逻辑:移除无用的mockRelease变体 variantFilter { variant -> def flavorNames = variant.flavors*.name if (flavorNames.contains("mock") && variant.buildType.name == "release") { // 标记该变体为忽略,构建时不会生成对应的包 setIgnore(true) } } } // 注意:Google Services插件必须放在build.gradle文件的最后 apply plugin: 'com.google.gms.google-services'
这里要划个重点:variantFilter的作用是遍历所有自动生成的变体组合,把「mock风味+release构建类型」的无用组合直接排除,既避免了无效构建,也能防止Firebase插件在处理变体时出现异常。另外GPS插件一定要放在文件末尾,这是官方推荐的写法,能保证插件正确读取所有变体配置。
内容的提问来源于stack exchange,提问作者Chisko
相关产品推荐
相关产品推荐

