• 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的这段配置其实还可以优化,有时间再自己研究吧。

  • 相关阅读:
    c# 基础
    摹客插件,自动识别画板大小!
    知道这10点,你才是真正会画线框图
    在线原型实例(可编辑):图片社交-InstagraAPP
    16 种原型设计工具及其使用场景
    微博APP在线原型实例(可编辑)
    5款前端切图工具大比拼:谁是最强切图神器
    你真的了解这4款协作设计吗
    nvm 安装及使用(npm版本管理工具)
    webpack入门四 安装vue,并打包
  • 原文地址:https://www.cnblogs.com/hankzhouAndroid/p/10114320.html
Copyright © 2020-2023  润新知