做组件化开发的时候,我们经常会遇到各个不同的module之间资源文件冲突的问题,运行也不报错,但是会出现覆盖的问题,导致运行之后发送错误的效果。
所以我们需要利用一个gradlke 脚本task,来自动化检查资源文件冲突。
定义一个android gradle脚本,检查各个module之间资源文件冲突(命令重复)的task。
Android基于gradle task检查各个module之间资源文件冲突情况 点击查看原文
下面是一个完整的 Gradle 脚本示例,用于检查不同模块之间的资源文件冲突。这个任务将遍历所有子模块的资源文件,并在发现同名文件时输出冲突信息。脚本中包含了详细的注释,便于理解每个步骤。
1. 根 build.gradle 文件
在项目的根目录下的 build.gradle 文件中定义任务:
groovy复制代码// 根 build.gradle 文件
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.1.1' // 请根据需要调整版本
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
task checkResourceConflicts {
doLast {
def resourceFiles = [:] // 存储资源文件,键是文件名,值是包含文件路径和模块名的 Map
// 遍历所有子模块
subprojects {
subproject ->
// 检查子模块是否有 Android 配置
if (subproject.hasProperty('android')) {
subproject.android.sourceSets.each {
sourceSet ->
sourceSet.res.srcDirs.each {
resDir ->
if (resDir.exists()) {
println("Scanning resources in module: ${subproject.name}, path: ${resDir.absolutePath}")
// 遍历资源目录中的文件
resDir.eachFileRecurse {
file ->
if (file.isFile() && file.name.endsWith(".xml")) {

最低0.47元/天 解锁文章
1026

被折叠的 条评论
为什么被折叠?



