你好,欢迎进入江苏优软数字科技有限公司官网!

诚信、勤奋、创新、卓越

友好定价、专业客服支持、正版软件一站式服务提供

13262879759

工作日:9:00-22:00

intellij idea gradle Gradle虽流行但优势未完全发挥,可自动生成BuildConfig类

发布时间:2025-05-22

浏览次数:0

尽管它比其他同类工具更早问世,然而,直到它被正式确认为官方集成开发环境,才开始逐渐受到广泛欢迎。但问题是,我们是否已经将这个功能强大的自动化构建工具的潜力完全挖掘出来了呢?

项目与build的特定全局变量

利用可自动生成的类别,这些类别能够创建额外的属性。这一特性对于设置服务器地址等任务极为便利,同时,借助它也能方便地控制功能的启停。

defaultConfig {
构建配置字段,类型为字符串,命名为"TWITTER_TOKEN",其值为"SDASJHDKAJSK"。
}
buildTypes {
    debug {
构建配置字段时,指定类型为字符串,字段名为"API_URL",并赋予其值为"http://api.dev.com/"。
构建配置字段时,指定类型为布尔值,字段名为"REPORT_CRASHES",并设置为"true"。
    }
    release {
构建配置字段,类型为字符串,命名为"API_URL",赋值为"http://api.prod.com/"。
配置构建字段为"boolean"类型,字段名为"REPORT_CRASHES",其值为"false"。
    }
}

可以从的final类.,

进行访问时,与对象之间的交互,具体表现会因后两个对象的build类属性不同而有所区别。

每个的名字、版本与app id都不同

如此一来,用户便能够同时部署发布版和调试版(请注意,在安卓操作系统中,同名应用无法同时安装)。在崩溃报告工具中,用户可以依据不同的版本名称来筛选问题及崩溃信息。通过查看应用名称intellij idea gradle,用户能够轻松识别当前正在运行的版本。

android {
    buildTypes {
        debug {
 applicationIdSuffix ".debug"
 versionNameSuffix "-debug"
resValue 为 "string",对应 "app_name" 的值为 "CoolApp (调试版)"。
设置签名配置为调试模式的配置项
        }
        release {
resValue 定义为 "string",对应 "app_name" 的值为 "CoolApp"。
执行签名配置,选取signingConfigs中的release配置项。
        }
    }

隐私信息

在系统内部,每一款应用在安装前都必须完成证书的数字签名验证,这样系统才能确认应用的开发者身份。同时,部分应用中包含着敏感数据,这些信息是不应该被他人随意查阅的。

用户绝不应将此类数据存入版本控制系统。

有人认为,每个人理应拥有专属的本地配置文档,甚至可以采用全局的`~/./build.`路径,然而,若需进行持续集成(CI)操作或部署任务,尤其是当缺乏个人CI服务器支持时,则不宜在CVS系统中存储任何形式的纯文本凭证。

signingConfigs {
    release {
将系统环境变量中的COOL_APP_PRIVATE_KEY值存储至文件。
keyAlias 设置为 "${系统环境变量中的 COOL_APP 别名}"。
将系统环境变量中存储的COOL_APP_STORE_PW密码值赋值给storePassword变量。
设置密钥密码为系统环境变量中定义的COOL_APP_PW值。
    }
}

因此,我们可以利用环境变量来向持续集成服务器提供敏感数据,这样做就无需担忧将任何可能造成风险的信息提交到公司内部。

自动生成版本名称()与版本号()

将各个版本内容进行分解,各自独立进行管理。无需再关注版本编号的准确性intellij idea gradle,亦无需担忧版本名称的适当性。

def versionMajor = 1
def versionMinor = 0
def versionPatch = 0
android {
    defaultConfig {
版本代码为版本主码乘以一万,再加上版本次码乘以一百,最后加上版本补丁。
版本名称设定为"${versionMajor}.${versionMinor}.${versionPatch}"格式。
    }
}

给增加git hash与build时间

定义变量gitSha,其值为执行命令'git rev-parse --short HEAD'在项目根目录下运行的结果,并去除文本两端空白字符。
设定时间格式为“yyyy-MM-dd'T'HH:mm:ss'Z'”,并基于UTC时区创建新的日期对象。
android {
    defaultConfig {
构建配置字段时,指定类型为字符串,字段名为"GIT_SHA",其值为字符串常量"\"${gitSha}\""。
配置字段为 "String" 类型的 "BUILD_TIME",其值为 "${buildTime}" 字符串。
    }
}

目前存在两个可用的符号,分别是点和点,它们非常适合用于将日志记录与提交内容或构建时间进行关联。

扣紧安全带

为了迅速完成部署任务,只需建立dev模式的配置,并将该模式设定为21。然而,需注意,采取此方法将无法获取到与实际情况相符的适配。因此,显而易见,这一做法仅适用于日常的工作场景,而不适用于发布阶段。如此一来,安卓插件能够将应用程序的各个模块分别构建成独立的dex文件(即pre-dex),并且能够生成适用于包括及以上版本的系统进行测试的APK包,从而无需再投入大量时间进行dex文件的合并操作。

android {
    productFlavors 
        dev {
 minSdkVersion 21
        }
        prod {
该应用的实际最小支持SDK版本。
 minSdkVersion 14
        }
    }

直接将单元测试结果输出到中

使用这个小技巧,我们可以实时看到安卓单元测试的记录结果。

android {
  ...
  testOptions.unitTests.all {
    testLogging {
事件包括:'通过'、'跳过'、'失败'、'标准输出'、'标准错误'。
当outputs的upToDateWhen属性值为false时,。
      showStandardStreams = true
    }
  }
}

现在运行测试时,输出结果如下:

,tell me I’m

全部放在一起的话,顺序如下:

android {
    ...
    buildTypes {
        def BOOLEAN = "boolean"
        def TRUE = "true"
        def FALSE = "false"
定义常量LOG_HTTP_REQUESTS,其值为"LOG_HTTP_REQUESTS"。
定义常量REPORT_CRASHES为"REPORT_CRASHES"
定义DEBUG_IMAGES常量为"DEBUG_IMAGES"。
        debug {
 ...
构建配置字段为布尔类型,记录HTTP请求日志,启用状态为是。
构建配置字段为布尔类型,启用报告崩溃功能,设置为否。
构建配置字段布尔值,启用调试图像,设定为真。
        }
        release {
 ...
构建配置字段为布尔类型,记录HTTP请求日志,默认值为否。
构建配置字段为布尔类型,记录崩溃报告,设定为真值。
构建配置字段为布尔类型,启用调试图像功能,设置为否。
        }
    }
}

作者:César ,软件工程师

翻译:孙薇

审校:唐小引

迅速获取前沿的移动应用开发资讯与技能,敬请关注我们的官方微信公众号(ID:)。

如有侵权请联系删除!

13262879759

微信二维码