代码审查

Android 项目图片资源管理的那点小事

2017-02-25  本文已影响223人  zyl06

0 背景

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

image

常规图片管理使用流程

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

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

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

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

1 实践

2 优化

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

  1. 脚本程序拷贝出来的文件,程序员需要人肉选择出里面需要的图片,并移动到工程中

  2. 视觉删除的不用的图片,开发需要根据 git 记录人肉地删除工程中的文件

  3. 由于存在人肉才做难免还是会出现图片 git 仓库和工程中的图片存在不一致的情况,如项目工程中存在冗余图片未删除的情况

对于上述问题,我们开发了个小插件,将人肉的步骤改成了程序执行

image

插件安装界面

image

插件操作示例

程序流程:

  1. 指定图片仓库目录(mac git 路径默认指定,window 设置 git 环境变量也能默认指定)

  2. 拉取图片仓库最新资源

  3. 遍历仓库文件,若工程中不存在对应文件,执行拷贝操作,记录 add 操作到本地文件

  4. 遍历仓库文件,若工程中存在对应文件,但 md5 不相等,先删除工程文件,再执行拷贝,记录 replace 操作到本地文件

  5. 遍历工程图片文件,若仓库中不存在对应图片,删除工程文件,记录 delete 操作到本地文件

  6. 当程序执行某个文件操作失败,Android Studio 中会弹出错误提示对话框,并提示哪个文件执行什么操作失败了,并立即中止执行

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 新的管理流程

image

以上流程,相比原有的图片管理方式,更加简单高效且易于维护。同样被图片资源管理困扰的同事们可以看看,一起探讨下。

上一篇 下一篇

猜你喜欢

热点阅读