Android 性能优化 (一)APK高效瘦身
http://blog.csdn.net/whb20081815/article/details/70140063
Android 性能优化 (二)数据库优化 秒变大神
http://blog.csdn.net/whb20081815/article/details/70142033
Android 性能优化(三)布局优化 秒变大神
http://blog.csdn.net/whb20081815/article/details/70147958
Android 性能优化(四)内存优化OOM 秒变大神
http://blog.csdn.net/whb20081815/article/details/70243105
Android 性能优化(五)ANR 秒变大神
http://blog.csdn.net/whb20081815/article/details/70245594
Android 性能优化(六) RelativeLayout和LinearLayout性能比较
http://blog.csdn.net/whb20081815/article/details/74465870
Android 性能优化<七>自定义view绘制优化
http://blog.csdn.net/whb20081815/article/details/74474736
Android 性能优化<八> 多线程优化和线程管理
https://blog.csdn.net/WHB20081815/article/details/77775444
Android 性能优化 <九>RecyclerView替代Listview用法
https://blog.csdn.net/WHB20081815/article/details/76221998
https://blog.csdn.net/WHB20081815/article/details/88595045
众所周知,APP包体的大小,会影响推广的难度,用户不太喜欢下载太大的APP,同类型同等功能的APP中往往是包体小的更受用户的青睐,所以降低包体是一项非常必要的事情!
一. 压缩图片
国外的网址:无损压缩
https://www.tinypng.com/
缺点:上传任何未发布产品的内容到外部网络,都有可能引起数据泄漏,
二.使用Android Lint分析去除无用资源
备注:删除的如果是有用到的,Studio会提示
删除的一些无用的,有时候也会导致问题,xml不报错,编译的时候会报错
1. Analyze - -> Run Inspection by Name --> 输入 unused resource 之后敲下回车Android Lint就会开始分析项目中哪里存在着无用资源
2. 根据Android Lint给出的分析结果,确认资源的使用情况,确认为无用资源后(一般来说全局搜索下资源名,除了在R.Java中外其他地方都没引用就是无用资源)删除即可
三:开启minifyEnabled混淆代码
buildTypes {
release {
//是否进行混淆
minifyEnabled true
// 移除无用的resource文件g
shrinkResources true
//混淆规则文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
// buildConfigField 自定义配置默认值
signingConfig signingConfigs.debug
debuggable true
}
}
四:在gradle使用shrinkResources去除无用资源,效果非常好。
buildTypes {
release {
//是否进行混淆
minifyEnabled true
// 移除无用的resource文件g
shrinkResources true
//混淆规则文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
五:用极限压缩工具
或者:使用AndResGuard
AndResGuard是微信开源出来的一个打包工具
原理:
1. 资源(png, xml, jpg等)名称混淆,资源路径名称混淆以及名称长度压缩;
2. 原来以STORED形式存储到zip中的png文件被改成了DEFLATED(普通压缩存储)方式;
3. 意外发现resources.arsc, META-INF/*.SF 以及 META-INF/*.MF变小了,而且是解压之后的文件大小也变小了。
六:使用SVG图片格式
用 SVG 的优势在于:
1.SVG 可被非常多的工具读取和修改(比如记事本),由于使用xml格式定义,所以可以直接被当作文本文件打开,看里面的数据;
2.SVG 与 JPEG 和 GIF 图像比起来,尺寸更小,且可压缩性更强,SVG 图就相当于保存了关键的数据点,比如要显示一个圆,需要知道圆心和半径,那么SVG 就只保存圆心坐标和半径数据,而平常我们用的位图都是以像素点的形式根据图片大小保存对应个数的像素点,因而SVG尺寸更小;
3.SVG 是可伸缩的,平常使用的位图拉伸会发虚,压缩会变形,而SVG格式图片保存数据进行运算展示,不管多大多少,可以不失真显示;
4.SVG 图像可在任何的分辨率下被高质量地打印;
5.SVG 可在图像质量不下降的情况下被放大;
6.SVG 图像中的文本是可选的,同时也是可搜索的(很适合制作地图);
7.SVG 可以与 Java 技术一起运行;
8.SVG 是开放的标准;
9.SVG 文件是纯粹的 XML;
七:支持插件化
插件化:支持动态的加载代码和动态的加载资源,把APP的一部分分离出来了,对于业务庞大的项目来说非常有用,极大的分解了APP大小。因为插件化技术需要一定的技术保障和服务端系统支持