Android的APK极致优化(瘦身与安全)

1.SVG(多密度矢量图形)解决 多套图多套图


Scalable Vector Graphics

官方链接:SVG的Google官方描述     

使用:



双击图标Android提供了很多svg的图标

选择local file时候注意psd文件转换成svg图片的时候不支持 “渐变”和“透明度”的

用法  

//在主项目的defaultConfig下添加

//支持svg

vectorDrawables.useSupportLibrary =true

// 将SVG图片生成制定维度的png图片

vectorDrawables.generatedDensities('xhdpi','xxhdpi','hdpi','xxxhdpi')


<Image

    app:srcCompat="@drawable/ic_mine"

    android:layout_width="100dp"

    android:layout_height="100dp" />

然后编译下打开debug包下drawable下每个适配版本是否有ic_mine.png

上图


hdpi


xhdpi


xxxhdpi


xxhdpi

由此可见 我们只需要UI大汉提供一个.svg的图片就能自动生成需要适配的各种版本的.png图片

如果一个项目有200张图   4套分辨率 就是800张。会用svg一套足矣!

使用SVG的注意事项:1.psd不支持 “渐变”和“透明度”  

                                     2.  5.0以下不支持

福利来了!

批量倒入svg图片https://pan.baidu.com/s/1o0RDRCHwFU0oQAusyuf13A 提取码: 2is7


批量倒入svg

2. Tint(一张图的多种颜色实现)

有图有真像


未添加tint


添加tint

3. 资源打包配置(项目不需要国际化的时候,只配置 “zh”)

由于v7包对国际化做了兼容,所以app打包的string兼容大约30+国家的语言,一般我们一个项目string里面300个参数对应该很正常  若果乘以30+那么打包的时候是不是把多余的冗余资源打包到项目里呢。上图


debug下的string

优化方法


只保留中文

打个debug包看看资源文件

配置中文后资源

4.动态库打包配置(使用了NDK移除不用打cpu)

主要打几款cpu架构

1.armeabiv-v7a: 第7代及以上的 ARM 处理器。2011年15月以后的生产的大部分Android设备都使用它.

2.arm64-v8a: 第8代、64位ARM处理器,很少设备,三星 Galaxy S6是其中之一。

3.armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多。

4.x86: 平板、模拟器用得比较多。

5.x86_64: 64位的平板。

一般打包CPU架构 armeabi(armeabi-v7)这两基本就满足了

做法:在gradle里 添加 ndk{ abiFilters('armeabi','armeabi-v7')}

5.移除无效资源

 Refactor -> Remove Unused Resources

(一个就是double shift后,输入”unused”,可以找到remove unused resources进行删除。)

动态ID资源会有问题,谁用谁知道。物理删除,不推荐使用

Analyze -> Run Inspection by Name,键入Unused resources后,选中并执行搜索后会弹出很多无用的资源。你可以选择删除

6. 开启代码压缩混淆

代码压缩开启 minifyEnabled false 在buildType里面配置( debug情况下会 影响项目的构建速度)

混淆文件写法传送门

7.资源压缩

shrinkResources true资源压缩

shrinkResources true 和minifyEnabled true 区别

minifyEnabled 这个是用来开启删除无用代码,比如没有引用到的代码

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

未完待续。。。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 本文来自尚妆Android团队青峰发表于尚妆博客 APK瘦身探索 最近几周一直在研究如何为APK瘦身,折腾了很久,...
    尚妆产品技术刊读阅读 1,781评论 1 23
  • 1、 前言 如果你对App优化比较敏感,那么Apk安装包的大小就一定不会忽视。关于瘦身的原因,大概有以下几个方面:...
    未来的理想阅读 10,982评论 4 39
  • 最近几周一直在研究如何为APK瘦身,折腾了很久,是时候写篇博客总结一下了,虽然已经准备了下周一要在客户端周会分享用...
    风清袖一阅读 1,049评论 1 10
  • 1.SVG矢量图片5.0svg制定生成维度的png:vectorDrawables.generatedDensit...
    pure粹阅读 335评论 0 0
  • 一一周检视(12月10日至16日) 本周积极记录了每天写各科作业需要的时间,下周就可以实践排程-预估的流程了...
    阿祖8282018阅读 293评论 0 0