公司的apk越做越大。。。
作为一个有追求的程序员,我觉得有必要给apk瘦身了。。。

优化之前,先来分析一下apk结构,下面附上一张apk结构图:

apk结构.png

由于我这个项目集成了百度地图、百度导航。。。所以assets和lib各自变态的占了12M+,有种蛋蛋的忧伤。。。
百度地图是在官网上按项目需求集成的,不需要的功能都没有集成进来,实在没什么优化的空间。。。

classes.dex文件有6.5MB,这个倒是可以优化。Facebook 开源了一个 Redex,用于 Android 字节码的优化,经过 Redex 转换后的 apk,体积变得更小,运行速度变得更快。不过在Github上看了一下,Redex目前只能在Mac和Linux上使用,Windows上无法使用,公司的电脑还没装虚拟机,只能等下次再用了。。。

至于资源文件,我之前用TinyPNG压缩过图片,所以图中资源文件并不算很大。这里附上TinyPNG的网址:https://tinypng.com/
除了压缩图片,还可以删掉一些没有用到的资源。用Android Studio打开项目,点击Analyze--》Run Inspection by Name--》搜索Unused resources,可以搜索出无用资源,删除无用资源(记得别误删友盟的资源...)。
网上有人说直接点击Refactor--》Remove Unused Resources直接删除无用资源。对于这个方法,我劝大家要慎重,因为我上次用这个方法把友盟的资源给删了,导致出现一大堆问题,后面又不得不把友盟的资源再补回去。。。

apk的其他文件也不算大,瘦身计划告一段落。

除了apk瘦身,性能优化也很重要。这里给大家安利一下阿里云的移动测试,我选择了深度性能测试。不测不知道,一测吓一跳。。。之前没发现的问题,这里都可以测出来,大家可以根据出现的问题修改代码。

apk优化暂告一段落,以后有时间再继续研究。。。

Android之apk优化的更多相关文章

  1. fir.im Weekly - 如何进行 Android App 性能优化

    关于 Android App 的优化,@anly-jun 用 3 个月完成了这一系列文章,从 性能分析工具 到 ANR .Layout .消除卡顿 到 内存优化.内存分析工具大概十五六篇,并对此做一个 ...

  2. Android UI性能优化实战, 识别View中的性能问题

    出自:[张鸿洋的博客]来源:http://blog.csdn.net/lmj623565791/article/details/45556391 1.概述 2015年初google发布了Android ...

  3. 教你使用Android SDK布局优化工具layoutopt

    创建好看的Android布局是个不小的挑战,当你花了数小时调整好它们适应多种设备后,你通常不想再重新调整,但笨重的嵌套布局效率往往非常低下,幸运的是,在Android SDK中有一个工具可以帮助你优化 ...

  4. 谈谈android 布局 的优化

    来自:http://www.cnblogs.com/youxilua/archive/2012/05/08/2489414.html 导言 设配android的屏幕一定是一个噩梦,就好比那些搞网页设计 ...

  5. Android的布局优化之include、merge 、viewstub

    以前在写布局的时候总是喜欢用自己熟悉的方式去写,从来也没有想过优化怎么的,后来又一次在上班的时候老大拿着我写的一个页面说我这个不行.我说这不是和设计图上的一模一样的么?怎么就不行了?然后他就跟我说了一 ...

  6. android应用的优化建议(转载)

    首先,这是我在http://www.oschina.net/translate/40-developer-tips-for-android-optimization看到的一片文章,感觉挺有道理的,所以 ...

  7. Android之ListView优化

    关于ListView几个方面的优化: ListView的大小设定固定值; 复用convertView, 使用ViewHolder提高在容器中查找组件的效率; 使用分页加载; 快速滚动时, item不显 ...

  8. Android APP 性能优化的一些思考

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

  9. Android之——ListView优化

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47209253 作为client.其最基本的任务就是最直观的和用户交互.从serve ...

随机推荐

  1. Redis的appendfsync参数详解

    redis.conf中的appendfysnc是对redis性能有重要影响的参数之一.可取三种值:always.everysec和no. 设置为always时,会极大消弱Redis的性能,因为这种模式 ...

  2. Kafka C++客户端库librdkafka笔记

    目录 目录 1 1. 前言 2 2. 缩略语 2 3. 配置和主题 3 3.1. 配置和主题结构 3 3.1.1. Conf 3 3.1.2. ConfImpl 3 3.1.3. Topic 3 3. ...

  3. JDBC连接SQL Server数据库

    测试环境 数据库:SQL Server 2008 R2,创建数据库名:TestDemo,表:User,字段如下:   字段 字段 id UName UPass sqljdbc.jar下载地址:依赖的J ...

  4. 20145232 韩文浩 《Java程序设计》第2周学习总结

    教材学习内容总结 这周主要学习了注释的使用,运算符的基本使用,认识了类型,变量与常量,以及一些语句语法.复习了进制转换. 整数 Short整数占用2字节,储存整数范围-32768 ~ 32767(2- ...

  5. ES版本控制

    版本控制 ElasticSearch采用了乐观锁来保证数据的一致性,也就是说,当用户对document进行操作时,并不需要对该doucument作加锁和解锁的操作,只需要指定要操作的版本即可.当版本号 ...

  6. POJ 2007 Scrambled Polygon 凸包点排序逆时针输出

    题意:如题 用Graham,直接就能得到逆时针的凸包,找到原点输出就行了,赤果果的水题- 代码: /* * Author: illuz <iilluzen[at]gmail.com> * ...

  7. day06_雷神_面向对象初识

    day_06 递归函数 自己用自己.一般递归100多次,都没有解决的问题,放弃递归. count = 0 def func1(): global count count += 1 print(coun ...

  8. 工作随笔——Java网络代理(http,socks)

    简单说一下Java如何便捷的使用网络代理功能 此方法使用于大部分情况,一些特殊框架(如:mina)无效. // 代码设置http代理 System.setProperty("proxySet ...

  9. SignalR 设计理念(一)

    SignalR 设计理念(一) 实现客户端和服务器端的实时通讯. 问题阐述 客户端提供的方法不确定! 客户端的方法参数不确定! 不同的名称和参数要分别调用指定的方法! 调用客户端方法时,忽略大小写! ...

  10. 重写TreeView,多层级节点下批量显示图片,图片支持缩略图和文件名列表切换,支持调用者动态匹配选中,支持外界拖入图片并添加到对应节点下

    1.先看下整体效果 2.前端代码 <UserControl x:Class="iPIS.UI.Base.Tree.ImageTreeControl" xmlns=" ...