我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android APP瘦身shrinkResources使用问题详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android APP瘦身shrinkResources使用问题详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android APP瘦身shrinkResources使用问题详解

这篇文章主要为大家介绍了Android APP瘦身shrinkResources使用问题详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2022-11-13

Android APP瘦身(清除工程中没用到的资源)详解

清除Android工程中没用到的资源 项目需求一改再改,UI一调再调,结果就是项目中一堆已经用不到但却没有清理的垃圾资源,不说工程大小问题,对新进入项目的人或看其他模块的代码的人来说,这些没清理的资源可能也可能会带来困扰,所以最好还是清理掉
2022-06-06

详解Android App中ViewPager使用PagerAdapter的方法

PageAdapter是一个抽象类,直接继承于Object,导入包android.support.v4.view.PagerAdapter即可使用。 要使用PagerAdapter, 首先要继承PagerAdapter类,至少覆盖以下方法:
2022-06-06

使用Chrome浏览器调试Android App详解

个人一直对Chrome情有独钟,Chrome除了更快之外,对开发者的支持更友好。内置强大的Developer Tools,相信Web开发简直爱不释手!而且Chrome Store里提供各种各样的插件,没有你用不到,只有你想不到。现在任何事基
2022-06-06

Android中使用Theme来解决启动app时出现的空白屏问题

相信大多数人一开始都会对启动app的时候出现先白瓶或者黑屏然后才进入第一个界面,例如:SplashActivity。那这是什么原因造成的呢?