Android Gradle Plugin 笔记

记录一些常用的 Android Gradle Plugin 中的DSL对应的java类

defaultConfig {}

对应的类是 DefaultConfig → BaseFlavor → DefaultProductFlavor → BaseConfigImpl

productFlavors {}

productFlavors 里面包含的元素对应的类是 ProductFlavor → BaseFlavor → DefaultProductFlavor → BaseConfigImpl
从上述继承关系可以看出 productFlavors 里面的每一个风味的产品属性跟 DefaultConfig 里的属性基本一致

applicationVariants.all { variant ->
        // 这里获取到构建变体的产品风味,它里面的可用属性跟defaultConfig/productFlavors里面的基本一致
        def mergedFlavor = variant.getMergedFlavor()
        variant.outputs.all { output ->
                output.outputFileName = apkName//这里可以自定义生成的apk名称使用上面的 mergedFlavor 基本可以满足需求
            }
        }
    }

applicationVariants.all 遍历的元素 variant 的类型是 ApplicationVariantImpl → ApkVariantImpl → InstallableVariantImpl → AndroidArtifactVariantImpl → BaseVariantImpl

这里着重说一下这个variant(变体) ,他本身的可用属性有 name → 风味名称+构建类型 flavorName → 风味名称 buildType → 构建类型 productFlavors → 风味集合 对应上面的 productFlavors mergedFlavor → defaultConfig 与 productFlavors 里的元素混合后的风味 applicationId → 包名 versionName → 版本名 versionCode → 版本号 ,所以一般没有特殊需求,自定义生成apk名称使用variant的属性就足够用

variant.outputs.all 遍历的元素是 ApkVariantOutputImpl → BaseVariantOutputImpl
特别说明一点,如果你在 productFlavors 或 defaultConfig 里面用

resValue 'string', 'app_name', '****'

更换了app名称,而在applicationVariants.all中想要获取这个app名称,这在多渠道打包时生成不同包名和app名称时非常常见,
这时需要下述操作就可以获取app名称

def appname = mergedFlavor.getResValues()['app_name'].value

查看依赖冲突用到的gradle命令

gradlew {这里填上moudle名称}:dependencies --configuration archives
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值