Android系统优化实操总结

内核优化

DTS优化

删除不需要的节点

内核编译配置优化

参考《kernel .config优化》 https://blog.csdn.net/mcsbary/article/details/90264591

配置、服务、framework优化

native service优化

开机启动后,查看/目录下的rc文件,确定不需要的服务,然后在源码中删除,再编译系统,验证系统的稳定性和在/目录下的rc文件中确认要删除的服务已不再

注意: 一些服务和其他模块有关联性,删除一个服务可能需要在其他模块中同步删除对已删除服务的依赖。

system_server中服务优化
  1. 可以使用属性关闭一些不需要的服务
config.disable_location=true
config.disable_searchmanager=true
config.disable_samplingprof=true
config.disable_location=true
  1. 通过配置feature关闭服务。参考文章:https://blog.csdn.net/mcsbary/article/details/104499750
    注意: 删除system_server中一些服务后,一些原生的apk需要删掉或者需要修改,否则有太多异常。个人认为,异常太多对系统也是一种扰乱,或许得不偿失。
类预加载优化

预加载类的作用

  1. 减少内存的占用。当一个类被多个进程使用时,预加载可以共享一份加载,否则每个进程会加载一份
  2. 加速应用的启动。当应用启动时需要的类都已加载内存,app启动会快一些,app需要的类很多时,效果更明显

因此,预加载优化是一个双刃剑,优化的多了,开机速度会增大,但是会影响一些依赖已删除类的app的启动,且每一个app都会加载一份已删除的类,增加内存占用。

当我们使用Android开发的产品,仅在特定的场景使用,一些类就不需要加载,如蓝牙等模块。优化预加载衡量好性能的需求。

步骤如下:

  1. 编辑frameworks/base/preloaded-classes文件,删除不需要预加载的类
  2. 编译代码烧录验证,有些核心类被删除后,系统无法正常启动

除了直接修改预加载类文件,还可以修改生成预加载类的代码,重新生成预加载类文件

优秀博客:https://blog.csdn.net/u014029448/article/details/81129382

资源预加载优化

类和资源预加载优化:https://blog.csdn.net/jinron10/article/details/89315392
android启动速度优化:https://blog.csdn.net/chenyong19870904/article/details/12912093
Android开机速度优化简单回顾:https://blog.csdn.net/freshui/article/details/53700771

一个开源项目:
https://gitee.com/luckybilly/PreLoader

字库优化

参考《内存优化–减少字库缓存》https://blog.csdn.net/mcsbary/article/details/89363082

内存优化

预加载优化

预加载优化和内存优化存在一定的冲突,选在了快速启动,开机后进程加载的资源就会多份。需要合理衡量需求。

应用合理布局

合理设计布局和严格按照分辨率设计图片。

防止内存泄漏

java层:不合理引用导致内存泄漏
C++层:分配内存没有释放

这是比较常见的两种内存泄漏,都可以通过煲机,分析PSS、RSS等分析出来内存是否泄漏。在长时间,大数据下,一点泄漏会被放大。

使用内存压缩

内存压缩,增加了内存的使用率,但是一定成都上增加了kernel的负载,在cpu资源方面的占用会有一定成都的增加,如果cpu性能不是特别强劲,会影响运行性能,影响体验感。

该策略或许可以在高性能cpu配低内存情况下使用,不影响性能,还可以节省内存。
关闭内存压缩

  1. 删除分区表中压缩缓存分区
  2. 关闭kernel中ZRAM配置
使用Android ION分配内存

在Android 7.1已使用,在kernel中关闭ION,开机系统会起不来

关闭jit

在Android运行时,jit会对运行性能,根据实际运行情况,做一些优化。关闭git在一定成都上节省内存,在性能不强劲的cpu下,性能会有很大影响

build/target/product/runtime_libart.mk:60:    dalvik.vm.usejit=false \
build/target/product/runtime_libart.mk:61:    dalvik.vm.usejitprofiles=false \
配置系统使用low_mem

配置系统属性使用low_mem,会关闭系统一些feature

ro.config.low_ram=true
定时释放kernel缓存

linux 临时释放缓存:https://blog.csdn.net/killvoon/article/details/73557939
该策略,在释放缓存的瞬间,对系统性能有一定的影响,若影响有限,可以接受;谨慎使用
脚本资源:https://download.csdn.net/download/mcsbary/12200703

lowMemKiller

打开kernel的lowMemKiller机制

Android lmkd:https://blog.csdn.net/mcsbary/article/details/89323232


实测

曾经做裁剪的测试记录,按照现在深入的理解,有一些不准确,参考还是可以的。
在这里插入图片描述

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值