如何根据Gradle活跃构建变体动态引入对应Security依赖?
解决方案
你可以通过遍历项目的构建变体,根据变体名称动态匹配依赖,替代原来逐个手动声明的方式,扩展性更强:
android { // 保留你的其他Android配置... applicationVariants.all { variant -> def targetDependency = variant.name.contains('pentest') ? 'com.demirci:security-pentest:1.0.1' : 'com.demirci:security:1.0.1' variant.dependencies.add('implementation', targetDependency) } }
代码说明
applicationVariants.all会遍历所有生成的应用构建变体(包含你定义的pentest、release、uat)- 通过
variant.name.contains('pentest')判断当前变体名称是否包含目标标识,动态选择对应的依赖坐标 - 调用
variant.dependencies.add为当前变体添加指定的implementation依赖
如果你的项目是库模块(而非应用模块),只需把applicationVariants替换为libraryVariants即可:
android { // 保留你的其他Android配置... libraryVariants.all { variant -> def targetDependency = variant.name.contains('pentest') ? 'com.demirci:security-pentest:1.0.1' : 'com.demirci:security:1.0.1' variant.dependencies.add('implementation', targetDependency) } }
这种方式的优势在于后续新增其他变体时,只要名称规则不变,无需修改依赖配置就能自动匹配正确的依赖。
内容的提问来源于stack exchange,提问作者Ali Demirci
相关产品推荐
相关产品推荐

