利用Android Gradle进行自动化设置资源名命名规则

本文介绍了如何通过Gradle任务自动化设置Android模块资源的前缀,避免资源冲突。首先,创建一个Task生成JSON文件存储模块名和前缀,然后在Gradle构建周期中动态设置每个Module的resourcePrefix属性,简化了大量手动配置的工作。这种方法虽然目前代码写在app的build.gradle中,但未来计划优化为独立的.gradle文件,以提高代码组织性和复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景描述:

    公司再不断推进组件化,多个Module开发。随着Module越来越多,当然也存在许多需要注意的问题。是无法保证多个Module中的资源命名完全不同,就可能会出现资源引用问题,造成资源冲突。

二、思路分析

     用Gradle配置,在android 中设置 resourcePrefix 属性,前缀字符串根据实际情况自定义。
     但是因为Module太多,每添加一个模块就需要在Modulebuild.gradle里进行配置, 这样太繁琐,不够智能,那么怎么解决呢,思路如下:

     1、写一个Task,生成一个json文件,里面以key->value的形式存储模块名和其对应的前缀。

     2、将json文件中前缀value进行修改,每次task执行更新不会覆盖之前修改过的value,默认前缀名是模块名。

     3、在所有模块Gradle都配置完之后,给每个模块设置一下修改后的前缀属性

效果展示:

    编译器会这样提示,但是编译的时候不会报错在这里插入图片描述

三、问题解决与实现

步骤1:写一个更新/生成命名json文件的task
    这个task我们暂时写到 appbuild.gradle文件中,写在别的.gradle文件中也可以

task moduleNameToJson() {
   

    doLast {
   
        def jsonFile = file('./ResourceNameRule.json')
        def mapResult = new HashMap<String, String>()
        // 每次新建的module不会覆盖之前修改过的value
        if (jsonFile.exists()){
   
            def parsedJson = new JsonSlurper().parseText(jsonFile.text)
            parsedJson.each {
   
                mapResult.put(it.key.toString(), it.value.toString())
            }
            mapResult = loopGetName(mapResult, rootProject)
        }else{
   
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值