• Android gradle动态配置不同打包环境参数值


    一、背景

            在android开发中,包的构建通过gradle脚本来完成的,这个脚本也提供了很多东西来配合我们开发。最常见的类似渠道和不同版本包。

    打包的配置常见的是buildTypes节点,通过buildTypes设置不同的action完成不同包的输出

    二、gradle的Java类

            gradle虽然是插件,但是最终还是通过执行脚本翻译成DSL,通过DSL构造出。gradle的基础抽象类是BaseExtension,这个不属于Android aosp中的代码,是通过gradle包导入执行的。这些都是属于gradle的Api,如需了解可以电极节点快捷导入代码或者查看gradle包下节点。

    三、buildTypes

    buildTypes数据android{}节点下,android{}指向project.java类,buildTypes属于BaseExtension.java类中。

    在gradle中,设置的这些阶段,最终在执行gradle build的时候,都会被转换成代码。每个节点都会对应一个方法,模块名就是方法名。

    BuildType之方法介绍

    1.buildConfigField
    public void buildConfigField(@NonNull String type,@NonNull String name,@NonNull String value)

    设置配置变量值,类型,变量名,值

    内部是通过Map mBuildConfigFields存储的。

    buildConfigField("Boolean", 'isDebug', "true") buildConfigField("String", 'name', "zhangshan") buildConfigField("int", 'name', "10")

    如果在不同的{}内定义相同的,打不同的包将会覆盖,形成渠道信息差异化

    2.manifestPlaceholders
    manifestPlaceholders是map类型,直接服务在manifest文件中

    插件中的map:=[key:value,key:value,key:value]

    manifestPlaceholders=["name":"zhangshan","sex":true,"age":100]
    使用方法:

    AndroidManifest.xml中

    这里设置一个元素名为zhangshan,值引用了manifestPlaceholders中的key,这里引用站位与kotlin写法一样。

    这种配置在build文件中一般和ext{}扩展进行配合使用。

    四、关于gradle中ext扩展

    ext是gradle中project.java类中的,可以自由扩展。格式

    ext{

    //扩展体

    }

    ext内部常用的就是申明数组和定义变量

    1. ext{
    2. //定义了一个map队列
    3. map=[name:"zhangshan",sex:false,age:12]
    4. //定义一个变量name
    5. def name="张珊"
    6. def age=12
    7. def sex=false
    8. def list=[11,34,45,66,77,8]
    9. }

    buildConfigField
  • 相关阅读:
    (超详细)语音信号处理之特征提取
    数字货币风暴:比特币价格突破历史新高,引发金融市场震荡
    Android Aidl跨进程通讯(三)--进阶使用
    .NET6打包部署到Windows Service
    Go 语言 Strconv 库常用方法
    40_内部类
    大数据时代下统计数据质量的影响因素
    Web3开发者技术选型:前端视角(next.js)
    安徽怀宁领导一行莅临蓝海彤翔集团参观考察
    milvus数据管理-删除数据
  • 原文地址:https://blog.csdn.net/qq36246172/article/details/133920377