Android系统优化

    • 内核优化
      • DTS优化
      • 内核编译配置优化
    • 配置、服务、framework优化
      • native service优化
      • system_server中服务优化
      • 类预加载优化
      • 资源预加载优化
      • 字库优化
    • 内存优化
      • 预加载优化
      • 应用合理布局
      • 防止内存泄漏
      • 使用内存压缩
      • 使用Android ION分配内存
      • 关闭jit
      • 配置系统使用low_mem
      • 定时释放kernel缓存
      • lowMemKiller
  • 实测

内核优化

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


实测

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

Android系统优化实操总结相关推荐

  1. 记一次聚拢Android线程实操

    背景 公司app线上崩溃70%以上为OOM,创建线程时报出.原因有2, 第一,线程创建太多了,超出了系统限制 线程可以通过as cpu中 threads试图进行分析,也可以自己打印出来上报到日志系统, ...

  2. qtdesigner怎么实现菜单栏跳转_人人都可写代码-Android零基础编程-app 入口菜单栏实操08...

    欢迎来到人人都可写代码,大家好,我是杨晓华,今天我们的课程内容是项目实操,以智者精选项目为例,编写一个Android app的入口关联菜单栏逻辑. 这是要实现的菜单栏组件展示效果,下面就是教大家如何制 ...

  3. Android应用优化之流畅度优化实操

    上一篇流畅度概念向大家详细地描述了VSync机制和Choreographer编舞者的用法.可能所讲解的内容偏向理论概念,因此这篇是流畅度优化实操,整篇主要分三层,UI层.代码逻辑层.IO层来讲述各个优 ...

  4. (Gradle实操)一步步使用Android Studio配置Gradle并运行Github开源源码

    翻了翻博客里的文章,发现小编在CSDN上写博客也有一年的时间了,到目前为止写了十来篇博客,最近些日子也在开始总结自己这一两年来的学习路线,也在开始反思一些问题.我稍稍做了一下总结.首先是产出太少,其次 ...

  5. tengine简单安装_实操丨如何在EAIDK上部署Tengine开发AI应用之物体检测应用入门(C++)...

    前言:近期推出的嵌入式AI系列直播公开课受到广大开发者的喜爱,并收到非常多的反馈信息,其中对如何在EAIDK上面部署Tengine开发AI应用感兴趣的开发者不在少数,我们将分2期以案例实操的形式详细介 ...

  6. 免费下载 |《数据分析从理念到实操》白皮书上线!先收藏!

    今日,神策数据重磅推出<数据分析从理念到实操>白皮书. 该白皮书结合神策数据服务的 1000 多家各行业标杆企业的实践经验,总结了如何构建数据基础.看数据.分析数据.落地数据应用.构建数据 ...

  7. 神策分析 1.16 版本上线场景库,实操方法论融入产品,全方位赋能多角色应用...

    神策数据的产品创新均力求无缝贴合使用者的真实应用场景,有效解决使用者刚需,神策分析 1.16 版本上线,使产品实现了从"功能"向产品个性化.场景化.人性化的智能应用深化升级,从数据 ...

  8. UnrealEngine5实操--基础概念(持续补充)

    UnrealEngine5实操--基础概念 Unreal 术语 UE5 上手指南 关卡快速搭建 视口标准按键操作 Editor 视角移动速度调节 Unreal Editor 快速测距 Actor 操作 ...

  9. PCDN服务接入实操手册

    摘要: 本文为阿里云P2P内容分发网络(PCDN)实操手册,可根据本文内容接入与操作.参考来源官网文档. 一. PCDN是定义? P2P 内容分发网络(英文名:P2P CDN,以下简称PCDN)是以P ...

  10. 树莓派4B系统搭建(实操讲解巨细版)

    一.搭建准备 树莓派介绍:         Raspberry Pi(中文名为"树莓派",简写为RPi 是为学生计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux ...

最新文章

  1. Fragment回调Activity的事件分发
  2. OpenGL framebuffer 帧缓冲区的实例
  3. 【最详细解析】1070 结绳 (25分)_18行代码AC
  4. java 拉起服务_技术开发者应该如何构建小团队的微服务方案?
  5. 小网站的容器化(下):网站容器化的各种姿势,先跟着撸一波代码再说!
  6. 正则表达式--C#正则表达式的符号及例子
  7. android xml java混合编程_Java学习中注解与多线程,网络编程与XML技术
  8. 2021-08-25Prompt
  9. 算法:数组找出2个只出现一次的数字(其他元素出现两次)
  10. 企业微信绑定企业邮箱服务器配置,企业微信企业邮箱开通规则说明介绍
  11. 如何更改xp计算机用户名和密码错误,XP更改开机密码提示“Windows不能更改密码”如何解决...
  12. java计算机毕业设计-智慧农业水果销售系统源码+mysql数据库+系统+lw文档+部署
  13. Web应用服务器——Tomcat的介绍、下载安装、环境配置与使用
  14. 怎么制作linux光盘镜像,linux光盘镜像文件制作攻略
  15. hau 1825 第一道拓扑排序题
  16. USB PD协议规范
  17. Mip-NeRF学习
  18. Word中怎么打分段函数?
  19. 2022胺基化工艺题库及在线模拟考试
  20. 大数据面试常见问题(七)——面试部分

热门文章

  1. 用python制作动态二维码
  2. 金仓数据库KingbaseES blob类型数据导入导出
  3. 中国.NET:各地微软技术俱乐部汇总(更新中...)
  4. 计算机wifi共享怎么设置,笔者教你win7如何设置wifi共享
  5. 加性噪声和乘性噪声、均值滤波器、方框滤波器、中值滤波器、高斯滤波器、双边滤波器
  6. 后台管理系统模板,简易模板
  7. 新唐NUC980使用记录:向内核添加USB无线网卡驱动(基于RTL8188EUS)
  8. HiTool工具烧录Uboot过程简介
  9. Learning Sites
  10. python不能作为变量名的_在Python语言中,不能作为变量名的是