文章目录

  • 一、自动移除无用资源 ( 不推荐使用 )
  • 二、直接引用资源与动态获取资源
    • 1、直接引用资源
    • 2、动态获取资源 id
  • 三、Lint 检查资源
  • 四、参考资料

一、自动移除无用资源 ( 不推荐使用 )


自动移除无用资源 :

Android Studio 重构工具中 , 给出了一个自动移除无用资源的工具 , 可以一键移除没有被引用的资源 ;

" 菜单栏 / Refactor / Remove Unused Resources " 选项 ,

点击后弹出如下对话框 , 选择 " Refactor " 按钮 , 即可一键移除无用资源 ;

这种方法只能移除没有直接使用的资源 , 使用 R.xxx.xxx 等方式引用了该资源 , 表示该资源被直接使用了 ;

动态引用的资源不包括在上述情况中 , 如果移除了动态引用资源 , 运行时会崩溃 ;

二、直接引用资源与动态获取资源


1、直接引用资源

直接引用图片示例 : 只要使用 R.drawable.ic_plane , 就算直接使用 ;

  • Java 代码中使用 :
// 动态获取图片
var drawable: Drawable = resources.getDrawable(R.drawable.ic_plane)
  • 布局文件中使用 :
    <ImageViewandroid:id="@+id/first_image"android:layout_width="100dip"android:layout_height="100dip"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:layout_constraintVertical_bias="0"app:srcCompat="@drawable/ic_plane"/>

2、动态获取资源 id

动态获取图片资源示例 : 该获取的资源值就是 R.drawable.ic_plane 值 , 是 int 类型 ;

        // 动态获取图片资源 intvar drawable2: Int = resources.getIdentifier("ic_plane","drawable","kim.hsl.svg");

三、Lint 检查资源


选择 " 菜单栏 / Analyze / Run Inspection by Name … " 选项 ,

执行指定名称的 Lint 检查 , 在弹出的输入框中输入 " unused resources " , 执行该 Lint 检查 ,

按下回车键 , 即可执行 Lint 检查 , 弹出如下对话框 ,

选择检查范围 , 只检查 app 模块 , 选择 " Module ‘SVG.app’ " 范围 , 点击 OK 按钮 ,

如果没有检查出来 , 在右下角弹出提示 , " No suspicious code found. 37 files processed in ‘Project ‘SVG’’. " ;

如果检查出来未使用的资源 , 则显示在 " Inspection Result " 面板中 ,

面板右侧可以选择对该未引用的资源处理 , 此处可以对不同的资源进行不同处理 , 如果确定某个资源没有使用过 , 可以是手动删除该资源 ;

对应不确定的资源 , 可以选择全局搜索 , 使用 Ctrl + Shift + F 快捷键 , 或选择 " 菜单栏 / Edit / Find / Find in Path " 选项 ,

全局搜索对话框 : 逐个搜索未引用的资源 , 如果确实没有用到的资源 , 直接删除 ;

四、参考资料


博客资源 :

  • GitHub 项目源码 : https://github.com/han1202012/SVG

  • 下载地址 :

【Android 安装包优化】移除无用资源 ( 自动移除无用资源 | 直接引用资源 | 动态获取资源 id | Lint 检查资源 )相关推荐

  1. 【Android 安装包优化】开启资源压缩 ( 资源压缩配置 | 启用严格模式的资源引用检查 | 自定义保留/移除资源配置 | 资源压缩效果 )

    文章目录 一.开启资源压缩 二.启用严格模式的资源引用检查 三.自定义保留/移除资源配置 四.资源压缩效果 五.完整配置 1.keep.xml 配置 2.build.gradle 构建脚本 六.参考资 ...

  2. 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表文件格式 | 头文件 数据格式 | 全局字符串池 数据格式 | 包数据 数据格式 | 包头 数据格式 )

    文章目录 一.resources.arsc 资源映射表文件格式 二.头文件 数据格式 三.全局字符串池 数据格式 四.包数据 数据格式 1.包头 数据格式 2.资源类型字符串池 数据格式 3.资源名称 ...

  3. 【Android 安装包优化】资源混淆 ( resources.arsc 资源映射表混淆 | resources.arsc 资源映射表二进制格式分析 | 混淆全局字符串池和资源名称字符串池 )

    文章目录 一.resources.arsc 资源映射表 混淆 二.resources.arsc 资源映射表二进制格式分析 三.参考资料 资源混淆时 , 需要修改混淆 resources.arsc 资源 ...

  4. 【Android 安装包优化】资源混淆 ( AAPT2 资源编译工具 | resources.arsc 资源映射表 工作机制 )

    文章目录 一.AAPT2 资源编译工具 二.resources.arsc 资源映射表 工作机制 三.参考资料 一.AAPT2 资源编译工具 资源的编译 , 生成 R.java 文件 , 都是通过 AA ...

  5. 【Android 安装包优化】Android 应用中 7zr 可执行程序准备 ( Android Studio 导入可执行 7zr 程序 | 从 Assets 资源文件拷贝 7zr 到内置存储 )

    文章目录 一.Android Studio 导入可执行 7zr 程序 二.从 Assets 资源文件拷贝 7zr 到内置存储空间 三.参考资料 一.Android Studio 导入可执行 7zr 程 ...

  6. 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )

    文章目录 一.Android 5.0 以下的矢量图方案 二.矢量图生成为 PNG 图片 三.完整的 build.gradle 构建脚本 四.编译效果 五.参考资料 一.Android 5.0 以下的矢 ...

  7. 【Android 安装包优化】使用 lib7zr.a 静态库处理压缩文件 ( 交叉编译 lib7zr.a 静态库 | 安卓工程导入静态库 | 配置 CMakeLists.txt 构建脚本 )

    文章目录 一.修改 7zr 交叉编译脚本 Android.mk 二.完整的 7zr 交叉编译脚本 Android.mk 三.交叉编译 lib7zr.a 静态库 四.Android Studio 导入 ...

  8. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( jni 中 main 函数声明 | 命令行处理 | jni 调用 lib7zr.so 函数库处理压缩文件完整代码 )

    文章目录 一.JNI 中 main 函数声明 二.命令字符串切割并传入 main 函数 三.完整代码示例 1.完整 jni 代码 2.完整 java 代码 3.执行结果 四.参考资料 前置博客 : [ ...

  9. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 测试 lib7zr.so 动态库调用 )

    文章目录 一.拷贝 p7zip 源码中的头文件到 Android Studio 项目中 二.完整代码示例 1.Java 层代码 2.JNI 层代码 3.日志头文件 4.执行结果 四.参考资料 前置博客 ...

  10. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库头文件到 Android 工程中 | 配置 CMakeLists.txt 构建脚本 )

    文章目录 一.拷贝 p7zip 源码中的头文件到 Android Studio 项目中 二.配置 CMakeLists.txt 构建脚本 1.导入动态库 2.导入头文件 三.完整 CMakeLists ...

最新文章

  1. python2x NameError: name ‘abc‘ is not defined
  2. pycharm新建django模板!DOCTYPE html划红线
  3. C# 使用正则表达式去掉字符串中的数字
  4. Fiddler 抓包高级进阶篇-天罗地网抓包大法
  5. Kubernetes 稳定性保障手册 -- 可观测性专题
  6. 官宣:神策数据证券行业解决方案,全新上线官网!
  7. php下intval()和(int)转换使用与区别
  8. C++笔记——有关内存对齐
  9. wgs utm java,Java,将经纬度转换为UTM
  10. MemoryInjector 无痕注入
  11. Java Web模块——验证码模块
  12. 磕头如捣的拼音及解释
  13. 数据结构笔记(十三)-- 串的堆分配存储表示
  14. 拓端tecdat|R语言markov switching model马尔可夫转换分析研究水资源
  15. sts4linux,STS3下载和安装,STS4升级
  16. 调和方程(拉普拉斯方程)基本解和边界元方法的积分计算
  17. 一切成功源于积累——20140928 认识货币——英镑
  18. java模拟简单的qq聊天_初学java之模拟QQ聊天软件(简单实现)
  19. 自学转行前端找到第一份前端工作,做得很吃力,被劝退怎么办?
  20. 重读《从菜鸟到测试架构师》-- 测试专家的第一步

热门文章

  1. Oracle存储过程(增、删、改)写法
  2. Codeforces 920D Tanks (看题解)
  3. mpvue 小程序开发爬坑汇总
  4. django之视图系统 views.py--主要内容(FBV和CBV、dispath、request对象和request.FILES、JsonResponse)...
  5. EOS开发基础之五:使用cleos命令行客户端操作EOS——智能合约之Exchange
  6. g711u与g729比较编码格式
  7. web项目开启日志打印
  8. Windows - cd 命令
  9. C#读取Excel显示到repeater中
  10. PHP魔术方法__call()篇