irpas技术客

Android Studio 下对资源进行更好地分包方案_willwaywang6_android 资源分包

网络投稿 5916

目录 1. 前言2. 正文2.1 第一种解决方案2.2 第一种解决方案的不足之处2.3 第二种解决方案 3. 最后参考

1. 前言

我们知道,Android Studio 默认是要我们把资源放在 res 目录下面的。 如果资源较少,那么把资源放在 res 下面是没有问题的。

但是,假如我们的资源非常多,还会没有问题吗?

每个分辨率的 drawable 目录下都有 300 张图片,如何快速地找到对应功能页面的图片吗?如何快速地把一个功能的代码及其资源迁移到一个新的项目中呢?

相信大家开发中也遇到过类似的困惑,接着看第二部分吧。

2. 正文 2.1 第一种解决方案

查看到 Android Studio 下对资源进行分包 这篇文章,方案如下: 第一步,新增了 res_core 和 res_sub 两个资源包; 第二步,在 app 模块的 build.gradle 文件中添加:

android { ... sourceSets { main { res.srcDirs('src/main/res', 'src/main/res_core', 'src/main/res_sub') } } }

这个方案实现了对资源进行分包处理,避免所有的资源都在一个目录下,不清晰的问题。

2.2 第一种解决方案的不足之处

但是,这种方案还是有点不尽如人意。项目中有很多模块时,就需要建立多个 res_xxx 的目录,如下图: 在 build.gradle 中需要添加:

android { ... sourceSets { main { res.srcDirs('src/main/res', 'src/main/res_home','src/main/res_hot','src/main/res_ringtone', 'src/main/res_search','src/main/res_settings','src/main/res_video','src/main/res_videoedit') } } }

不足的地方有:

现在想找 home 包对应的资源,不得不向下移动屏幕,找到 red_home;在 build.gradle 中添加的内容有些繁琐。

期望的是,属于哪个包的资源就和哪个包的代码放在一起。

2.3 第二种解决方案

属于哪个包的资源就和哪个包的代码放在一起,看效果图: 哪个包的资源就放在那个包下的 res 目录里面即可。

在 app 的 build.gradle 文件中配置:

def srcDirs = [ 'com/example/approach2/ui/home', 'com/example/approach2/ui/hot', 'com/example/approach2/ui/ringtone', 'com/example/approach2/ui/search', 'com/example/approach2/ui/settings', 'com/example/approach2/ui/video', 'com/example/approach2/ui/videoedit', ] android { sourceSets { main { srcDirs.forEach { main.res.srcDirs += 'src/main/java/' + it + '/res' } } } } 3. 最后

本文提供一种优化后的资源分包方案,希望能够帮助到大家。代码在这里。

参考 Android Studio 下对资源进行分包


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #Android #资源分包 #我们知道Android #Studio #默认是要我们把资源放在 #res #目录下面的 #如果资源较少那么把资源放在