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

  • 相关阅读:
    DIV+CSS 高手也得看的15个CSS常识
    dl,dt,dd标签 VS 传统table实现数据列表
    弥补Web开发缺陷实战 HTML5 中存储API
    50漂亮的后台管理界面模板
    提升你设计水平的CSS3新技术
    300+Jquery, CSS, MooTools 和 JS的导航菜单资源(总有一个适合你!)
    99款高质量免费HTML/CSS模板(看到了还行,推荐给大家)
    DIV+CSS:如何编写代码才能更有效率
    HTML5和CSS3开发工具资源汇总
    43个实例xHTML+CSS(DIV+CSS)网页及导航布局教程
  • 原文地址:https://www.cnblogs.com/hankzhouAndroid/p/10114320.html
Copyright © 2011-2022 走看看