在Android的实际开发中,由于我们的产品慢慢的成熟,第三方和各种资源的不断增加,也导致我们的apk的体积也是慢慢的增长。那如何解决这些问题呢?这里我总结了几点:

Code:

-保持良好的编程习惯,不要重复或者不用的代码,谨慎添加libs,移除使用不到的libs。
-使用proguard混淆代码,它会对不用的代码做优化,并且混淆后也能够减少安装包的大小。
-native code的部分,大多数情况下只需要支持armabi与x86的架构即可。如果非必须,可以考虑拿掉x86的部分。

Resources:

-使用Lint工具查找没有使用到的资源。去除不使用的图片,String,XML等等。
-assets目录下的资源请确保没有用不上的文件。
-生成APK的时候,aapt工具本身会对png做优化,但是在此之前还可以使用其他工具如tinypng(https://tinypng.com/)对图片进行进一步的压缩预处理。
-jpeg还是png,根据需要做选择,在某些时候jpeg可以减少图片的体积。
-对于9.png的图片,可拉伸区域尽量切小,另外可以通过使用9.png拉伸达到大图效果的时候尽量不要使用整张大图。

Drawables:

-有选择性的提供hdpi,xhdpi,xxhdpi的图片资源。建议优先提供xhdpi的图片,对于mdpi,ldpi与xxxhdpi根据需要提供有差异的部分即可。
-尽可能的重用已有的图片资源。例如对称的图片,只需要提供一张,另外一张图片可以通过代码旋转的方式实现。
-能用代码绘制实现的功能,尽量不要使用大量的图片。例如减少使用多张图片组成animate-list的AnimationDrawable,这种方式提供了多张图片很占空间。

更多相关文章

  1. Android相机、相册获取图片显示并保存到SD卡
  2. Android(安卓)JNI处理图片实现黑白滤镜的方法
  3. Android有效的治疗方法Bitmap,减少内存
  4. react native学习篇之图片学习
  5. Android中基类BaseActivity的设计与实现
  6. Android下的配置管理之道之gerrit代码服务器搭建
  7. Kotlin For Android(安卓)示例代码实战
  8. Flutter:使用平台通道编写平台特定的代码
  9. Android(安卓)studio代码混淆

随机推荐

  1. Oracle的用户权限及其管理操作
  2. 带你一起了解PHP的错误类型和错误级别
  3. 为什么使用PreparedStatement?
  4. 使用面向对象方法实现用户信息增删改查
  5. 在服务器上排除问题的头 5 分钟
  6. 初探MySQL Innodb集群
  7. 关于数据库的一些常识
  8. 数据库--存储过程详解
  9. 关键字--where与having的区别
  10. PHP基础:PHP抽象类和接口、类的重载和方法