Android APP瘦身shrinkResources使用问题详解

 更新时间:2022年11月11日 08:39:22   作者:Coolbreeze  
这篇文章主要为大家介绍了Android APP瘦身shrinkResources使用问题详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、背景

对于缩小APk大小,除了开启混淆

minifyEnabled true

还有使用

shrinkResources true

说下这两者的区别

  • minifyEnabled 这个是用来开启删除无用代码,比如没有引用到的代码
  • shrinkResources 用来开启删除无用资源,也就是没有被引用的文件(经过实测是drawable,layout,实际并不是彻底删除,而是保留文件名,但是没有内容,等等),但是因为需要知道是否被引用所以需要配合mififyEnable使用,只有当两者都为true的时候才会起到真正的删除无效代码和无引用资源的目的

二、shrinkResources 作用

    android {
        buildTypes {
             debug {
                    minifyEnabled false
                    shrinkResources false
                }
                release {
                    minifyEnabled true
                    shrinkResources true
                }
        }
    }

shrinkResources = true作用是删除无用的Resource,是与minifyEnabled 一起使用,minifyEnabled =true是开启混淆。

三、实站演练

同样的资源代码

1.只有minififyEnable false 或者 minififyEnable false && shrinkResources true

APK大小为1.39M

资源文件和layout都存在且是有内容的

2.只有minifyEnable true

866K

资源文件和layout都存在且是有内容的

3.minifyEnable true && shrinkResources true

资源文件在但是没有内容大小都变成67字节,layout文件内容被清空

4.minifyEnable true && shrinkResources true 在res/raw/keep.xml(避免被误删除)写了配置的

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
           tools:keep="@layout/activity_four,@drawable/no_reference_but_keep"/>

没有在配置文件中声明保存的文件没有内容,声明保存的文件有内容(资源文件和layout文件)

注意:string.xml中没有被引用的怎么设置都不会被删除

可以通过gradlew clean assembleRelease - info来获得APK缩减资源的概览

当您压缩资源时,Gradle Console 会显示它从应用软件包中移除的资源的摘要。例如:

:android:shrinkDebugResources
Removed unused resources: Binary resource data reduced from 2570KB to 1711KB: Removed 33%
:android:validateDebugSigning

四、使用shrinkResources 出现的问题

android 使用了shrinkResources = true后,有时候会出现问题。 最近项目集成阿里百川的意见反馈,添加的安全图片只是做验证,项目里面未引用。debug模式自然是没问题,因为shrinkResources 设置的是false,但在release 模式下,当shrinkResources = true的时候,集成的意见反馈出问题。

解决办法

新增res/raw/keep.xml文件,在里面把需要保留的资源文件列举出

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@drawable/yw_1222"/>

如此问题就解决了。如果项目中需要keep多个资源可以tools:keep="@drawable/a,@layout/b,@layout/c"。意思就是在混淆的时候这些。

文末

移动端产品功能的逐渐增加,apk包会越来越臃肿,这里面会存在大量的情况。,APP 的体积也不可避免地呈现上升趋势,如果不加以重视,几个版本迭代下来,可能你的 APP 体积会达到用户不能忍受的程度。比如冗余的代码、无用的资源、未合理化处理的图片等等。 所以Android APP瘦身是开发者必学的技术之一

以上就是Android APP瘦身shrinkResources使用问题详解的详细内容,更多关于Android APP瘦身shrinkResources的资料请关注脚本之家其它相关文章!

相关文章

  • Android自制九宫格解锁控件

    Android自制九宫格解锁控件

    这篇文章主要为大家详细介绍了Android自制九宫格解锁控件的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Android中正确使用字体图标(iconfont)的方法

    Android中正确使用字体图标(iconfont)的方法

    IconFont字体不仅仅流行于Web开发,在移动开发中也渐渐的使用的范围更广泛。这篇文章主要介绍了在Android开发中使用icon font的代码和方法。对大家学习使用iconfont有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • Android ListView UI组件使用说明

    Android ListView UI组件使用说明

    这篇文章主要介绍了Android ListView UI组件使用说明,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Android实现图片高斯模糊

    Android实现图片高斯模糊

    这篇文章主要为大家详细介绍了Android实现图片高斯模糊,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Android实现的状态栏定制和修改方法

    Android实现的状态栏定制和修改方法

    这篇文章主要介绍了Android实现的状态栏定制和修改方法,涉及Android针对状态栏属性设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android仿微信选择图片和拍照功能

    Android仿微信选择图片和拍照功能

    这篇文章主要为大家详细介绍了Android仿微信选择图片和拍照功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Android实现水波纹控件的方法

    Android实现水波纹控件的方法

    这篇文章主要为大家详细介绍了Android实现水波纹控件的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android滑动拼图验证码控件使用方法详解

    Android滑动拼图验证码控件使用方法详解

    这篇文章主要为大家详细介绍了Android滑动拼图验证码控件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Android如何实现设备的异显功能详解

    Android如何实现设备的异显功能详解

    这篇文章主要给大家介绍了关于Android如何实现设备的异显功能的相关资料,这篇文章通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友可以参考下
    2022-02-02
  • PopupWindow RecyclerView实现下拉选择Spinner示例解析

    PopupWindow RecyclerView实现下拉选择Spinner示例解析

    这篇文章主要介绍了PopupWindow RecyclerView实现下拉选择Spinner示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07

最新评论