Android 项目图片资源管理优化

0 背景

凡是涉及界面的移动端开发,必要会和各种资源文件打交道,如颜色、文本、尺寸、图片等。对于图片资源,一般的开发流程如下:

ks_manage_res_old_work_flow.png

常规图片管理使用流程

  1. 开发不修改图片文件的命名,全部图片文件完全由视觉定义

    由于图片名称名不能反应该图片在 app 中的位置或功能,因此当项目工程进展到一定程度,图片数量变多,图片的维护就容易变的混乱,如出现重复图片、图片不合理的复用等问题

  2. 开发根据模块、功能等修改图片文件的命名

    开发接收到图片之后,人肉修改图片名,自己维护一份资源,而视觉们也需要维护一份资源,容易造成 2 份资源的不同步

1 实践

  • 保证图片资源只存在一份

    视觉维护一份图片资源,开发不允许人肉重命名。

  • 如何保证视觉后期维护

    为保证视觉保证图片和功能模块对应,则视觉通过文件夹的方式管理图片。相关模块的文件,放置在对应模块名的文件夹下。如地址模块的图片放置在 address 文件夹下,购物车模块的图片放置在 shoppingcart 文件夹下,全局图片放置在 all 文件夹下。另外不同倍率的图片分别放置在 mipmap-xhdpi、mipmap-xxhdpi 等文件夹下。

  • 视觉通过什么途径给开发资源

    为避免单对单的 popo 传输和邮件发送,我们为图片资源建立了 git 仓库,视觉们上传 git,开发拉取图片(不允许上传)。同时,使用 git 仓库,也使得图片的增删改,有记录可查。

  • 开发如何使用图片

    android 工程中,图片资源是平铺放置的,而视觉维护的图片是分别放置在对应模块名的文件夹下(不同文件夹内可能存在同名文件)。然后,我们也规定了不允许人肉修改文件名。那么,开发该如何将图片集成到工程中呢?很简单,写个脚本程序,将文件夹内的图片拼接上文件夹名,再拷贝出来就能解决了,如 address/back.png → address_back.png

2 git 图片同步自动化

到这里,已经基本解决以往图片维护的各种问题了,不过上述流程还是存在不便利的地方:

  1. 脚本程序拷贝出来的文件,程序员需要人肉选择出里面需要的图片,并移动到工程中
  2. 视觉删除的不用的图片,开发需要根据 git 记录人肉地删除工程中的文件
  3. 由于存在人肉才做难免还是会出现图片 git 仓库和工程中的图片存在不一致的情况,如项目工程中存在冗余图片未删除的情况
  4. app 工程中图片资源无历史更新记录
  5. 由于 app 是多分支开发,同时部分分支是在将来的版本上线,而视觉图片仓库是单分支(不指望视觉同学管理 git 仓库分支),此时 app 工程容易出现冗余图片

对于上述问题,我们需要有工具完成以下目标

  1. 自动更新图片 git 仓库
  2. 自动比对 app 工程图片和图片 git 仓库,输出各文件夹的图片信息,并支持预览
  3. 支持开发选择和取消改动的图片操作,并同步到 app 工程
ks_manage_res_work_flow_plugin_new.jpg

插件安装界面

ks_manage_res_work_flow_plugin_demo_new_1.gif

插件操作示例

Android Studio 控制台输出文本示例:

[Ljava.lang.String;@22bdb9f8
Updating a9b339b..321f2ff
Fast-forward
 android/mipmap-xhdpi/coupon/sem_circle.png   | Bin 0 -> 14966 bytes
 android/mipmap-xxhdpi/coupon/semi_circle.png | Bin 0 -> 15004 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 android/mipmap-xhdpi/coupon/sem_circle.png
From git.mail.netease.com:yanxuan_gui/yanxuan_gui
 create mode 100644 android/mipmap-xxhdpi/coupon/semi_circle.png
   a9b339b..321f2ff  dev        -> origin/dev
===================
Wed Feb 22 19:04:30 CST 2017
add /Users/.../yanxuan_gui/android/mipmap-xhdpi/coupon/sem_circle.png to /Users/.../YanXuan/app/src/main/res/mipmap-xhdpi/coupon_sem_circle.png
add /Users/.../yanxuan_gui/android/mipmap-xxhdpi/coupon/semi_circle.png to /Users/.../YanXuan/app/src/main/res/mipmap-xxhdpi/coupon_semi_circle.png

3 新的管理流程

ks_manage_res_new_work_flow.png

以上流程,相比原有的图片管理方式,更加简单高效且易于维护

附上插件源码 https://github.com/bitterbee/AndroidMipmapUpdatePlugin

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,569评论 25 707
  • 最近发现有台linux服务器异常的向外网发送数据,按照网上的帖子安装了 clamav杀毒软件,但在进行病毒库更新时...
    抓兔子的猫阅读 17,104评论 0 4
  • 一、观看了神经系统的视频,来学习神经和脑,了解我们的人脑 1.想象的含义,以及想象的生理机制。 2.在造想象和创造...
    是梦终空空阅读 116评论 0 0
  • 首先看看这个写法,判断对不对: 以及这个: 答案是前者正确,后者错误。原因在于: 当使用构造函数创造正则对象时,需...
    By_syk阅读 552评论 0 1
  • 2017年的上半年已悄然而逝,最难熬的夏天也慢慢到来。 人们总是呆在自己的舒适区,如果是你,你会选择在周末吹着空调...
    大白雪阅读 508评论 0 2