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

简介: 【Android 安装包优化】移除无用资源 ( 自动移除无用资源 | 直接引用资源 | 动态获取资源 id | Lint 检查资源 )(一)

文章目录

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

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

1、直接引用资源

2、动态获取资源 id

三、Lint 检查资源

四、参考资料





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


自动移除无用资源 :


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


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

image.png



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

image.png




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


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






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




1、直接引用资源


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


Java 代码中使用 :
// 动态获取图片
var drawable: Drawable = resources.getDrawable(R.drawable.ic_plane)


布局文件中使用 :

 

<ImageView
        android: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 类型 ;


   

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






三、Lint 检查资源


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



image.png


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

image.png



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


image.png

目录
相关文章
|
3月前
|
Android开发
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
|
3月前
|
Android开发
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
|
5月前
|
Java 开发工具 Android开发
Android Studio利用Build.gradle导入Git commit ID、Git Branch、User等版本信息
本文介绍了在Android Studio项目中通过修改`build.gradle`脚本来自动获取并添加Git的commit ID、branch名称和用户信息到BuildConfig类中,从而实现在编译时将这些版本信息加入到APK中的方法。
130 0
|
5月前
|
IDE 开发工具 Android开发
Android c++ core guideline checker 应用问题之clang-tidy 检查后发现的问题如何解决
Android c++ core guideline checker 应用问题之clang-tidy 检查后发现的问题如何解决
|
5月前
|
监控 Java 开发工具
### 绝招揭秘!Android平台GB28181设备接入端如何实现资源占用和性能消耗的极限瘦身?
【8月更文挑战第14天】本文介绍在Android平台优化GB28181标准下设备接入的性能方法,涵盖环境搭建、SDK集成与初始化。重点讲解内存管理技巧如软引用、按需加载资源,以及通过硬件加速解码视频数据和图像缩放来减轻CPU与GPU负担。同时采用线程池异步处理视频流,确保UI流畅性。这些策略有助于提高应用效率和用户体验。
64 0
|
7月前
|
Android开发
Android中如何动态的调整Dialog的背景深暗
在Android开发中,Dialog和DialogFragment可通过设置`Window`的`backgroundDimAmount`来控制背景变暗,突出对话框。在DialogFragment的`onCreateDialog`或`onViewCreated`中,获取`Dialog`的`Window`,设置`LayoutParams.dimAmount`(例如0.5f)并添加`FLAG_DIM_BEHIND`标志。要动态调整,可保存`LayoutParams`并在需要时更新。对于Dialog,创建时直接设置同样属性。还可以通过定义主题样式设置背景模糊程度。
177 7
|
7月前
|
Android开发
Android studio 出现Plugin [id: ‘com.android.application‘, version: ‘8.1.0‘, apply: false] 问题解决办法
Android studio 出现Plugin [id: ‘com.android.application‘, version: ‘8.1.0‘, apply: false] 问题解决办法
2135 1
|
7月前
|
XML Java Android开发
Android RecyclerView用代码动态设置item的selector
Android RecyclerView用代码动态设置item的selector
53 0
|
8月前
|
Java 测试技术 开发工具
Android 笔记:AndroidTrain , Lint , build(1),只需一篇文章吃透Android多线程技术
Android 笔记:AndroidTrain , Lint , build(1),只需一篇文章吃透Android多线程技术
|
7月前
|
存储 API 开发工具
kotlin安卓开发,如何获取设备的唯一id, 有哪些开源库
在Kotlin的Android开发中,获取设备唯一ID的方法包括不稳定的ANDROID_ID、需要权限的IMEI、使用UUID与SharedPreference结合,以及考虑隐私的Firebase Installations ID和Advertising ID。由于隐私问题和Google Play政策,IMEI和ANDROID_ID不推荐作为长期唯一标识。推荐使用UUID(首次安装时生成并存储),或在涉及广告时使用Advertising ID(需用户同意),而Firebase Installations ID则提供了一种合规的设备标识选项。在选择方法时,必须遵守隐私指南和政策。

热门文章

最新文章