博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试Tip:Android优化之APK瘦身
阅读量:6452 次
发布时间:2019-06-23

本文共 2164 字,大约阅读时间需要 7 分钟。

每到夏日我们就因为增长的体重而拼命瘦身,那么在面对越发庞大的APK,你又是如何进行APK瘦身呢?

APK文件结构


  1. META-INF\(Jar文件中常可以看到)

  2. res\(存放资源文件的目录)

  3. AndroidManifest.xml(程序全局配置文件)

  4. classes.dex(Dalvik字节码)

  5. resources.arsc(编译后的二进制资源文件)

AndroidStudio分析APK文件大小


使用AS的Build-Analyze APK

查看APK包内各个文字资源大小

APK瘦身思路


1.图片处理

1)使用一套图

一般市场上使用一套图就能够适应大部分需求,使用720dp分辨率,放置于xhdpi

2)使用TinyPng压缩图片

图片压缩后对视觉影响不大,但体积显著减小

3)使用webp

4)使用jpg替代png

使用jpg替换不需要保留透明区的png

5)使用矢量图

VectorDrawable

AnimatedVectorDrawable

6)使用shape背景

7)使用selector文件

8)使用tintColor

9)使用.9图

2.去除多余资源

1)Andorid Studio Lint

AS的Analyze Run Inspection By Name

输入unused resources查找多余的资源

2)shrinkResources

使用资源缩减器,去除无用资源

buildTypes {     release {     shrinkResources true    minifyEnabled true     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' }复制代码

3)resConfigs

通过resConfig属性指定语言(未指定的语言的任何资源都会被删除)

android {    defaultConfig {         ... resConfigs " zh","en"    }}复制代码

3.缩小资源AndResGuard

微信资源混淆打包工具AndResGuard

“AndResGuard是一个帮助你缩小APK大小的工具,

他的原理类似Java Proguard,但是只针对资源。

它会将原本冗长的资源路径变短,

例如将res/drawable/wechat变为r/d/a”

4.去除多余包依赖

第三方库里包含了你所需的引用包,则无需额外引入

使用Android Studio查看包依赖

android studio 终端terminal输入

gradlew  :Your Module Name:dependencies 复制代码

或者使用

gradlew  :Your Module Name:dependencies --configuration compile(或者implementation)复制代码

可以查看到详细的包依赖关系

5.去除冗余代码

Proguard

ProGuard是一个压缩、优化和混淆Java字节码文件的免费的工具,它可以删除无用的类、字段、方法和属性。

可以删除没用的注释,最大限度地优化字节码文件。

它还可以使用简短的无意义的名称来重命名已经存在的类、字段、方法和属性。

buildTypes {    release {    minifyEnabled true //开启混淆    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//混淆配置文件    }}复制代码

6.APK分割splits

android {    ...    splits {        density {            enable true //打开apk分割功能            exclude "ldpi", "tvdpi", "xxxhdpi" //exclude排除            compatibleScreens 'small', 'normal', 'large', 'xlarge' //将注入到mainfest配置compatible-screens中        }        abi {             enable true            reset() //重置列表,与include搭配使用,指定生成include包含的apk            include 'x86', 'armeabi-v7a', 'mips' //include包括            universalApk false // 不打包一个通用版本(包含所有的ABI)        }}复制代码

7.在线资源&H5

在线资源替代本地资源或者使用h5

--------------我是快乐的分割线--------------

以上就是今天TIP的内容了

愿你的APK瘦瘦瘦,愿你的身材棒棒棒~

本人公众号 不定期更新 欢迎关注与建议

转载地址:http://vxgwo.baihongyu.com/

你可能感兴趣的文章
oracle top pid,Linux Top 命令解析 比较详细
查看>>
grub如何进入linux系统,Linux操作系统启动管理器-GRUB
查看>>
linux pbs 用户时间,【Linux】单计算机安装PBS系统(Torque)与运维
查看>>
linux系统可用内存减少,在Linux中检查可用内存的5种方法
查看>>
linux 脚本map,Linux Shell Map的用法详解
查看>>
如何在linux系统下配置共享文件夹,如何在windows和Linux系统之间共享文件夹.doc
查看>>
thinkpad装linux无线网卡驱动,ThinkPad E530 Fedora 20 下无线网卡驱动的安装
查看>>
linux操作系统加固软件,系统安全:教你Linux操作系统的安全加固
查看>>
linux中yum源安装dhcp,24.Linux系统下动态网络源部署方法(dhcpd)
查看>>
linux屏幕复制显示出来的,linux – stdout到gnu屏幕复制缓冲区
查看>>
一起学Shell(十)之可称植性议题与扩展
查看>>
部署Ganglia监控Hadoop&Hbase
查看>>
gitlab的用户使用手册
查看>>
论Optimizer的工作模式ALL_ROWS&FIRST_ROWS
查看>>
生产环境高并发MySQL SQL语句优化案例
查看>>
Lync 小技巧-24-PDF 加密文件-转-Word-操作手册
查看>>
ASP.NET性能优化之分布式Session
查看>>
TaffyDB Introduction
查看>>
Piwik 1.9.1 发布,网站访问统计系统
查看>>
【转】ie6 png 透明终极解决方案
查看>>