Android项目中 layout目录臃肿的问题解决方案

感谢大神https://www.jianshu.com/p/fcc831e87b3d的思路。

引子

当项目越来越大,某些资源文件,比如layout,会十分臃肿。

就像这样。

你往下拖,还能拖好一会才见底。
所以,查了一下资源文件的分包方式。
试验成功,能够成功编译。

解决方案

OK,下面是详细配置步骤:


1)原先在res下面有一个layout文件,先改成layouts
2)在layouts下面创建自己的分包,比如你想把所有的fragment都放在一起,则,在layouts下面创建一个frag目录,然后!重点来了,在frag下,再创建一个layout目录

3)把你的所有fragment的布局文件都拖到这里面layouts/frag/layout去吧
4)是时候动一动module的gradle文件了;打开 build.gradle,加上如下代码:

def listSubFile = {
    def resFolder = 'src/main/res/layouts'
    def files = file(resFolder).listFiles()
    def folders = []
    files.each {
        item -> folders.add(item.absolutePath)
    }
    folders.add(file(resFolder).parentFile.absolutePath)
    return folders
}

sourceSets {
    main {
        res.srcDirs = listSubFile()
    }
}

 

稍微解释一下,这段代码放在android{}内部。
gradle文件内部都是用grovvy语言写的(网上很多grovvy资料,可查)
第一段的意思大概是,给listSubFile(它是一个数组)赋值,将src/main/res/layouts的子目录全部转换为绝对路径 然后加到数组中去。
第二段设置是资源文件的目录。


5)改过gradle之后最好是手动同步一下,

 

OK,按照这个思路,所有的布局文件xml都可以分包存放了。

 

缺陷

在AndroidStudio3.2.1之下,你有可能会看不到layouts下的分包文件!这是as本身的问题,你可以尝试按照下面的方式。。。。试试看。

 

 

另外:

这里其实还可以继续优化。虽然解决了目录臃肿的问题,但是,这是强制分包。。。也就是说。

你放在layouts下面的资源文件是不会被识别的,你必须把所有的layout xml放进子目录。

所以,gradle的这段配置其实还可以优化,有时间再自己研究吧。

posted @ 2018-12-13 15:34  波澜不惊x  阅读(871)  评论(0编辑  收藏  举报