Android-Resource-Usage-Count
插件地址: Jetbrains Plugin Page
Github 地址: Android-Resource-Usage-Count
插件说明
使用 IntelliJ IDEA
或者 Android Studio
打开 Android 项目的资源文件时, 会自动对文件中的资源标签统计其被引用次数, 展示在标签的前面, 统计结果会过滤 build
路径和 bin
路径的引用.
支持的标签:
array
attr
bool
color
declare-styleable
dimen
drawable
eat-comment
fraction
integer
integer-array
item
plurals
string
string-array
style
颜色说明:
- 0 - 灰色
- 1 - 蓝色
- 其他 - 红色
- 可以在
Preferences
-Other Settings
-Android Resource Usage Count
中自定义颜色
开发背景
在 Android 项目开发过程中, 我一直都是把各种 string
color
等资源定义在资源文件中, 再在代码中引用它. 如果有新的 string
或者 color
, 我会先对比一下是否存在, 如果存在直接使用, 不存在才创建新的资源文件.
但是资源文件可能会改动, 经常产品需要改动一个 string
, 或者设计需要改动一个 color
, 我都要先手动在那个资源文件上右键 - Find Usage , 引用次数为1就直接改动这个标签内容, 否则要新建一个标签. 但是觉得每次都要搜索很繁琐, 所以才产生了开发这个插件的想法, 直接显示每个资源文件的引用次数.
开发过程
其实插件开发的文档还是比较少的, 官网 提供的只是一个通用的开发过程, 按照文档你可以顺利创建项目, 然后就懵 B 了.
不过这里也是因为不同的插件需求不同, 所以还是建议想清楚自己想实现的功能和展示方式, 再多参考一下已有的系统功能怎么实现的, 已有的开源库怎么实现的, 最后当然是善用搜索.
说说我自己的开发过程, 我前期想实现的效果是
- 打开资源文件时自动对每个标签统计引用次数. (功能)
- 在标签上以 hint 的形式展示其引用次数. (展示形式)
先说功能这块:
开发的时候我也是先从一个大多数例子都会提到的
Action
开始, 可是我怎么也找不到自己想要的Action
(打开某个资源文件). 最后只好随便建一个Action
作为触发按钮, 先实现 FindUsage 的功能.然后在实现 FindUsage 的功能时, 直接参考系统的
FindUsageAction
类, 还可以通过 debug 模式直接断点代码, 简直不能更爽. 根据FindUsageAction
类的实现过程, 把核心代码复制到自己的工具类, 简单修改后就实现了功能. 这里要说明的是, 尽量使用老版本的代码, 新版本的代码可能会在老版本上找不到方法而报错.
然后是展示形式:
- 一开始我是希望像 Methods Count 这样
不过我找不到它是怎么实现的…尴尬 - 后面翻到了
LineMarkerProvider
这个类, 感觉这也是一种实现形式, 查看一下实现后也很简单, 最重要的是LineMarkerProvider
是通过打开文件触发, 我还不用去找Action
了.
最后是设置界面:
- 主要参考了 Android Studio插件开发实践–从创建到发布 这篇文章的设置代码.
打包发布
- 打包主要按照 官网 操作.
- 发布时, 在提交页面提交 jar 包后会进去编辑页面, 在
Supported products
模块去掉勾选Determine supported products by dependencies in plugin.xml
, 改为自定义支持所需平台就好. 我发布时发现plugin.xml
无法解析com.intellij.modules.androidstudio
, 不知道是我的问题还是写法不对.
已知问题
- 插件是由
LineMarkerProvider
来实现的, 打开文件会自动触发搜索统计操作. 但是有时候统计结果显示比较慢, 如果没有显示, 可以尝试重新打开文件/编辑文件/等待.
写在最后
因为自己在开发插件方面的经历实在有限, 这个插件也是根据自己的需求而实现的. 一方面是想看看大家是否也会有这样的需求, 另一方面也是希望大家可以多帮忙看看代码, 有没有更好的实现或者插件本身有值得改进的地方, 博客通知不及时, 如果遇到问题多多去 Github 上提 Issues 交流吧~