android 安装包过大,如何给我们的应用“减肥”?
随着项目越做越大,时间跨度越久,项目堆积的也越来越大,这导致apk的体积也是越来越大,影响推广运营及用户下载体验。所以我们要定期对apk进行“减肥”,话不多说,看看我们应该怎么做!
1.apk体积过大的原因
有些apk现在动辄几十上百兆,那么是什么导致了apk这么大呢?我分析了一些,大概列出以下几点原因:
1)图片资源
2)本地数据库文件db资源
3)jar包及依赖 so库等
4)代码资源
这其中影响最大的是前三个 图片,db数据库,jar包及so库,长时间的项目开发,导致项目肯定会出现很多无用的图片,jar包 so库等,根本原因就是开发的小伙伴们换了一批又一批,没有整体的项目管理规范等。
2.分析apk
如何查看apk中到底是哪些资源占用了较大的看空间呢?如果还在用eclipse开发的小伙伴只能自己反编译然后排序查看了
如果用android studio的小伙伴就很简单了,点击Build ->Analyze Apk... 可以很直观的分析出到底是哪些资源占用空间较大,及各自所占比例,很直观,如下图:
3.如何瘦身
那么我们分析完之后,到底从哪些方面着手去做呢?我是分析了以下几点
1)删掉所有重复及无用的图片
2)将项目中所有比较大的图尽量处理一下 换成小一点的图
3)将项目中所有的无效代码及引用删除
4)删掉所有无效的依赖和重复功能的依赖以及无效的so文件
5)如果没有极其特殊业务需要不要在本地放db文件,即使需要可以改为 第一次安装下载数据库文件
4.预防肥胖
其实真正在做开发的时候,如果多注意一些,是不会让apk体积越来越肥胖的,即使肥胖也是可以控制肥胖的速度的,如果一个项目过于肥胖绝对是开发人员的锅,那么我们到底怎么预防肥胖呢?
1)添加图片谨慎,添加前一定要确认一下图的大小,我们项目 有一个小红点的icon,7.6M,我看了一下历史15年提交的,这不知道咋想的
2)除了图片大小需要注意,还有就是能用xml自己实现的背景效果,不用用切图。
3)添加jar包需要注意 重复功能的jar包只保留一个 比如图片加载 之前有个项目 picasso glide都有 这完全没有必要的。
4)三方的依赖也是占apk大小的 ,所以在项目开发中谨慎添加。
5) 引用三方sdk的时候,一般都有提供demo,这个demo有些小伙伴就是原模原样的拷贝过来了,很多不用的图片jar包等都没有自己处理,这个时候最容易产生冗余不必要的东西,需要注意。
6)保持良好的编码习惯,尽量让代码简洁,有些同学做了功能,后来改版做新的了,旧的舍不得删,怕以后改回去,就将代码改为 xxx_old.java ...,再加上关联的xml,图片资源等 都不删除,久而久之,这样的代码特别多。实在没有必要...
相关文章
- android开发笔记之 Android代码混淆打包
- strictmode android,Android中的StrictMode
- android 获取收到短信验证码,Android自动获取短信验证码
- Agora SDK 在Android中的使用(在线视频通话)| 掘金技术征文
- android scaleanimation动画,Android 的ScaleAnimation 缩放动画基本运用
- android activitymanager 系统api_Android view
- 【Android 内存优化】Android 原生 API 图片压缩原理 ( 哈夫曼编码开关 | 哈夫曼编码原理 | libjpeg-turbo 函数库 )
- 【Android 安装包优化】WebP 图片格式兼容与性能 ( Android 中的 WebP 图片格式兼容问题 | Android 中的 WebP 图片格式性能 )
- 【Android 安装包优化】WebP 应用 ( Android 中使用 libwebp.so 库解码 WebP 图片 )
- 【Android 安装包优化】7z 文件压缩格式 ( 7z 格式简介 | 7z 命令使用说明 )
- 【Android 安装包优化】Android 应用中 7zr 可执行程序准备 ( Android Studio 导入可执行 7zr 程序 | 从 Assets 资源文件拷贝 7zr 到内置存储 )
- 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )
- 【Android 文件管理】分区存储 ( 修改与删除图片文件 )
- 【Android 插件化】使用 PluginKiller 帮助应用开发者规避发布的 APK 安装包被作为插件的风险 ( 验证应用是否运行在插件化引擎中 )
- 【Android Gradle 插件】build.gradle 中的 android 配置 ( 配置项 | compileSdkVersion 配置 | buildToolsVersion 配置 )
- 【错误记录】未安装该应用 ( 在 Android 12 之后 组件设置 android:exported=“false“ 属性 )
- 【Android Gradle 插件】ProductFlavor 配置 ( ProductFlavor#buildConfigField 方法 | 单独编译生成 BuildConfig 类的任务 )
- 【错误记录】Android Studio 集成 ARoute 编译报错 ( 兼容 support 库和 androidx 库 | add ‘tools:replace=“android:appCo )
- Android开发中遇到的问题(三)——eclipse创建android项目无法正常预览布局文件详解手机开发
- Android开发中遇到的问题(二)——新建android工程的时候eclipse没有生成MainActivity和layout布局详解手机开发
- android如何设置开机后屏幕亮度默认值为自动调节