安卓APK瘦身
之前打包的时候直接就用eclipse或者android studio直接生成签名文件,并没有关心大小问题,近期有人问我有没有对APK进行瘦身。对这方面内容一致没有关注过,今天试用了各种方式把项目签名apk降低了1/4大小。这样对用户节省了流量。
1、APK文件分析
APK是Android的安装包。
APK文件事实上是zip格式,可是后缀被改动为apk,我们能够直接解压文件夹例如以下:
分析一下各个内容的作用
查看文件/文件夹大小主要针对assets、classes.dex、lib、res内容进行精简。
2、assets精简
存放在assets下的文件不会生成ID,存放的文件形式能够是多样的比方音频、图片、html相关的等等,精简体积也就是精简这些内容。
(1)音频:主要用在铃声和通知方面,体积不要太大,使用压缩格式的音频
(2)图片:在不降低图片效果、保证APK显示效果的前提下缩小图片文件大小。
a、使用tinypng优化大部分图片资源
tinypng的缺点是在压缩某些带有过渡效果(带alpha值)的图片时,图片会失真。这样的图片能够採用webP格式。保证图片质量前提下大幅降低图片的大小。
b、使用webP图片格式
webP是一种支持有损和无损压缩的网络图片格式,假设在 App 中使用 WebP,除了 Android4.0 以上提供的原生支持外,其他版本号以能够使用官方提供的解析库webp-android-backport编译成so使用。通常UI提供的图片都是png或者jpg格式。我们能够通过智图或者isparta将其他格式的图片转换成webP格式。isparta可实现批量转换。
智图:
(3)Html相关的
html主要涉及js和css这两部内容採用压缩格式降低体积
3、classes.dex
(1)尽量使用系统提供的字符串、ID、图片资源等
(2)优化代码结构,降低冗余代码
(3)使用shape来替换图片。能用代码实现的图片样式都用代码实现
(4)使用Proguard对代码进行混淆、优化和压缩,它有一个专门用来降低apk文件大小的功能叫做 tree-shaking。Proguard 会遍历你的全部代码然后找出无用处的代码。全部这些不可达(或者不须要)的代码都会在生成终于的apk文件之前被清除掉。
Proguard 也会重命名你的类属性,类和接口,然整个代码尽可能地保持轻量级水平。
(5)静态代码分析工具。无需执行,无需測试用例 扫描整个项目,分析以下潜在的问题,分类指出问题描写叙述、问题位置,并提供合理的改动建议
4、res
通过AndroidUnusedResources来检查安卓应用程序中未使用的资源,用法例如以下:
把下载下来的jar放到项目文件夹以下,在控制台中输入:
找到用不到的资源删除掉
5、lib
在手机上一般仅仅要支持armabi就能够了对于x86的不须要,所以引入第三方库的时候把用不到的so删除掉。
參考:
1、Android代码优化——使用Android lint工具
2、android 混淆文件proguard.cfg具体解释
4、给Apk瘦身
6、使用到的工具
安卓APK瘦身的更多相关文章
- APK瘦身记,如何实现高达53%的压缩效果
作者:非戈@阿里移动安全 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式,关于这个话题其实是一个老生常谈的题目,不论是公司内部,还是外部网络,前人前辈已经总结出很多方法和规律. ...
- APK瘦身记,怎样实现高达53%的压缩效果
作者:非戈@阿里移动安全,很多其它技术干货.请訪问阿里聚安全博客 1.我是怎么思考这件事情的 APK是Android系统安装包的文件格式.关于这个话题事实上是一个老生常谈的题目.不论是公司内部.还是外 ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- APK瘦身实践
首发地址:http://www.jayfeng.com/2015/12/29/APK%E7%98%A6%E8%BA%AB%E5%AE%9E%E8%B7%B5/ 因为推广的需要,公司需要把APK的大小再 ...
- APK瘦身
APK瘦身 主要从一下三方面来瘦身: 1. Java 源代码 1) ,这方面主要是通过最简洁的代码实现最直接的功能,还有就是提出上线前不必要的java代码,可以使用UCDector进行分析,从而对代码 ...
- Android APK 瘦身 - JOOX Music项目实战
导语 JOOX Music是腾讯海外布局的一个音乐产品,2014年发布以来已经成为5个国家和地区排名第一的音乐App.东南亚是JOOX Music的主要发行地区,由于JOOX Music所面对的市场存 ...
- Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- Android性能优化系列之apk瘦身
Android性能优化系列之布局优化 Android性能优化系列之内存优化 为什么APK要瘦身.APK越大,在下载安装过程中.他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率 ...
- 39、apk瘦身(转载)
本文转自::Android开发中文站 » 关于APK瘦身值得分享的一些经验 从APK的文件结构说起 APK在安装和更新之前都需要经过网络将其下载到手机,如果APK越大消耗的流量就会越多,特别是对于使用 ...
随机推荐
- 图论:POJ2186-Popular Cows (求强连通分量)
Popular Cows Description Every cow's dream is to become the most popular cow in the herd. In a herd ...
- Java-替换字符串中的子字符串
自顶一个repace方法 package com.tj; public class MyClass implements Cloneable { public static void main(Str ...
- 【01】markdown语法
[02]段落和换行 一个 Markdown 段落是由一个或多个连续的文本行组成,它的前后要有一个以上的空行(空行的定义是显示上看起来像是空的,便会被视为空行.比方说,若某一行只包含空格和制表符,则该行 ...
- oracle11g rac 个性归档模式
关闭数据库并将一节点启动到mount状态 [root@QSZAAS-XYORC02 ~]# su - grid[grid@QSZAAS-XYORC02 ~]$ srvctl stop database ...
- POJ 2396 Budget ——有上下界的网络流
给定矩阵的每行每列的和,和一些大于小于等于的限制.然后需要求出一组可行解. 上下界网络流. 大概的思想就是计算出每一个点他需要强行流入或者流出的量,然后建出超级源点和汇点,然后删除下界,就可以判断是否 ...
- 【2018.8.10】四连测day4 题解
T1:给出一棵 $n$ 个节点的无根树,其中 $m$ 个节点是特殊节点,求对于任意 $i ∈ [0, m]$,包含 $i$ 个特殊节点的联通块个数$\mod 998244353$. $1<=n, ...
- 做运动(Dijkstra+并查集+MST)
上面的题解是这样,这道题我真的脑残,其实打代码的时候就意识到了许多,可以用Dfs+Dij+二分,这样还可以卡一卡 但是我打了spfa+spfa+二分,这个显然很慢,类似的题目我好像还做过一道的,就是在 ...
- Chrome中输入框默认样式移除
Chrome中输入框默认样式移除 在chrome浏览器中会默认给页面上的输入框如input.textarea等渲染浏览器自带的边框效果 IE8中效果如下: Chrome中效果如下: 这在我们未给输 ...
- raspberrypi树莓派liunx下安装golang1.9环境(debian)
直接安装go1.6以上版本会出现提示 Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4. Go1.9的构建过程需要用于引导的 Go1.4二 ...
- 下载安装webstrom及激活
太久没在新电脑上安装websrtom,又有点忘了咋激活. 一.安装 1.直接在浏览器搜索webstrom,打开官网,直接点击download.如下图 2.打开安装包,开始安装,直接点击 next 3. ...