[关闭]
@zyl06 2017-03-09T19:28:23.000000Z 字数 2073 阅读 1511

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

Android


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 控制台输出文本示例:

  1. [Ljava.lang.String;@22bdb9f8
  2. Updating a9b339b..321f2ff
  3. Fast-forward
  4. android/mipmap-xhdpi/coupon/sem_circle.png | Bin 0 -> 14966 bytes
  5. android/mipmap-xxhdpi/coupon/semi_circle.png | Bin 0 -> 15004 bytes
  6. 2 files changed, 0 insertions(+), 0 deletions(-)
  7. create mode 100644 android/mipmap-xhdpi/coupon/sem_circle.png
  8. From git.mail.netease.com:yanxuan_gui/yanxuan_gui
  9. create mode 100644 android/mipmap-xxhdpi/coupon/semi_circle.png
  10. a9b339b..321f2ff dev -> origin/dev
  11. ===================
  12. Wed Feb 22 19:04:30 CST 2017
  13. add /Users/.../yanxuan_gui/android/mipmap-xhdpi/coupon/sem_circle.png to /Users/.../YanXuan/app/src/main/res/mipmap-xhdpi/coupon_sem_circle.png
  14. 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

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

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注