让旧手机运行 Android O? 看看 Android Go 是如何做到的

简介:

1fac18706cc65bade2cb0a904609b29f708c7064

Android Go 是谷歌基于 Android 8.1 Oreo 的精简版 Android 系统,是成为针对 1GB 或更低内存的低端设备的 Android 优化版。Android Go 是为下一代入门级设备开发的,为的是确保发展中国家的消费者仍然可以使用功能正常的智能手机来访问互联网并使用应用程序。

Android Go 拥有各种性能优化和改进,比如其内存占用比普通 Android O 少一半,设备平均运行速度比在同一设备上安装常规的 Android O 快 15%。这些优化是通过谷歌制作的一些专门的构建配置完成的,将在后面进行解释。

87d2c2e38ba2fbe24187eb563401fb81beec524f

Android Go 还益于特殊的 “Go” 系列应用程序,比如 Files Go,YouTube Go 和 Google Maps Go。这些是由谷歌制作的轻量级版应用,不那么吃配置。这意味着那些使用 Android Go 设备的用户可以拥有标准的 Android 系统体验,开心地使用谷歌全家桶,无需购买昂贵的旗舰手机。

这关乎谷歌扩大智能机市场的计划。但是开发者们可能会有疑问,如果 Android Go 主要基于构建配置和一套优化过的谷歌应用组成,那么开发者是否可以自己构建一个 “Android Go”?答案是肯定的。

一些 LineageOS 开发者已经在开发拥有 Android Go 优化的 ROM

已经有一部分开发者对 Android Go 十分感兴趣,比如 XDA 认可的开发者 AdrianDC,正在做 LineageOS 15.1 上的工作,同时也在进行针对几款老式索尼手机的 Android Go 配置构建 。上面提到的索尼设备是索尼 Xperia SP,索尼 Xperia T,索尼 Xperia V 和索尼 Xperia TX。这些设备已经是五六年前推出的 “ 准古董 “ 了,但是他们将会得到拥有 Android Go 优化的 LineageOS 15.1,这可能会让这些 “ 准古董 “ 流畅地运行 Google “Go” 系列应用程序。

任何独立的 LineageOS 开发者都应该可以引入一个 Android Go 的构建配置,使得 LineageOS 成为 Android Go 优化和其他优化的综合版本。这意味着那些可能购买了索尼 Xperia T 的人,昨天手机还在运行 Android 4.0.4,明天就能够用上 Android 8.1,以及最新的 YouTube Go 和 Google Maps Go 等应用程序。

Android Go 如何帮助老 Android 手机运行 Android Oreo

Android 上的配置构建是一组与 Android 系统各个方面相关的参数,这些参数通常这会改变系统的行为,而 Android Go 主要就是针对构建配置进行优化。

bba2d764a3421188f52c8041a5cfa8681b930463

如果想让 Android Go 发挥作用。其中一些配置构建必须在重新编译的情况下才能修改,并且会成为 ROM 蓝图的一部分。但是这涉及诸如 Android 在存储和内存使用等多个方面,包括自动存储管理,Android 低内存杀手,dalvik 可执行文件 ( DEX ) ,优化和针对应用程序的 RAM 限制。而 APK 文件由 DEX 文件组成,因此你可以将 APK 文件看成一个包含许多 .dex 文件的 ZIP 文件。另外,自动存储管理将由 Files Go 来控制,而不是让 Android 系统控制。

Android Go 参考了 Android 的低 RAM 模式

在 Android 4.4 KitKat 中,谷歌推出了一个名为 “low-ram” 的新标志,旨在支持只有 512MB 内存的设备。它对系统进行了一些优化,这些改变对于低 RAM 设备是非常有效的。

  • 已验证的内存节省内核配置:切换到 ZRAM

  • 如果未被缓存或者缓存太大,杀死这个进程

  • 不要让大型服务把自己归类到 A 服务里(避免启动器被误杀)

  • 如果进程在空闲维护中变得过大,杀死这个进程

  • 序列化的后台服务启动

  • 调谐低 RAM 设备的内存使用:更严的内存不足预警级别,更小的图形缓存等

  • 修改 system_server 和 SystemUI 进程

  • 在 Dalvik 预载 dex 缓存

  • 经过验证的 JIT-OFF 选项

  • 减少了每个进程的字体缓存占用

  • 引入 ArrayMap / ArraySet,并在框架中广泛使用,作为 HashMap / HashSet 的轻量级替换

Android Go 使用修改的低内存杀手和 dex 优化

鉴于 Android Go 主要用于内存为 1GB 或更低的设备,还需要进行更积极的内存管理。Android Go 以几种不同的方式修改低内存杀手 ( low memory killer ) 。首先,当大量的 RAM 被消耗时,低内存杀手将进入 “ 临界压力 “ 状态。这是因为当内存使用率变得过高时,设备存储上的交换文件被频繁访问,系统就会变卡。保持 RAM 有足够的空余能避免系统不停地使用交换文件或者爆内存。

通过将各种基本服务以及 WiFi 服务设置为 “ 速度档 “,可以让这些服务进行提前编译,可以减少 RAM 的使用和存储。同时共享 APK 被设置为 “ 加速 “,通过优化 dex 指令来获得更好的性能,从而延长电池寿命和额外的 CPU 周期。

在 dex 优化方面,Android Go 做了很多,比如对不常用的应用进行降级处理。此处降级并不是说应用程序的实际版本号会被降低,而是指这个应用程序的 dalvik_cache 将被清除。使用 Dalvik 缓存是为了使设备不用重新编译应用程序,而只编译最需要的部分并对其进行缓存。其余部分在应用程序运行时使用 Just in Time(JIT)编译器进行编译。但是如果应用程序在 10 天内没有使用,那么预编译的应用程序的主要部分也将被删除。这样做是为了释放尽可能多的空间。另一个简单的变化是不允许应用程序的 RAM 使用超过 256MB,以至于应用程序无法使用设备上的所有 RAM。

Android Go 将成为低端设备定制 ROM 的未来吗?

目前并不能下一个定论,但是对于旧设备上的自定义 ROM 开发来说,前景很光明。虽然在设备上运行最新版本的 Android 可能还有其他问题,但从理论上说,基于 Android O 并进行了优化的 Android Go 肯定比 Android 4.4 用起来要舒服多了。


原文发布时间为:2018-11-25

本文作者:yuer

本文来自云栖社区合作伙伴“终端研发部”,了解相关信息可以关注“终端研发部”。

相关文章
|
27天前
|
移动开发 监控 安全
mPaaS常见问题之Android集成dexPatch热修复运行时候无法正常进行热更新如何解决
mPaaS(移动平台即服务,Mobile Platform as a Service)是阿里巴巴集团提供的一套移动开发解决方案,它包含了一系列移动开发、测试、监控和运营的工具和服务。以下是mPaaS常见问题的汇总,旨在帮助开发者和企业用户解决在使用mPaaS产品过程中遇到的各种挑战
34 0
|
2月前
|
监控 安全 Android开发
【新手必读】Airtest测试Android手机常见的设置问题
【新手必读】Airtest测试Android手机常见的设置问题
|
2月前
|
机器学习/深度学习 人工智能 Android开发
安卓智能手机操作系统演化史
【2月更文挑战第5天】 本文通过对安卓智能手机操作系统的演化历程进行探讨,分析了安卓系统从诞生至今的发展脉络和关键技术革新,从最初的版本到如今的最新版本,探讨了其在移动互联网时代的重要作用,以及未来可能的发展方向。
|
3月前
|
Linux Android开发
Android 正常运行所需的一系列 Linux 内核接口
Android 正常运行所需的一系列 Linux 内核接口
53 0
|
3月前
|
JavaScript Android开发
手机也能搭建个人博客?安卓Termux+Hexo搭建属于你自己的博客网站
手机也能搭建个人博客?安卓Termux+Hexo搭建属于你自己的博客网站
33 0
|
1月前
|
Go 调度
|
1月前
|
Web App开发 前端开发 网络安全
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
【2月更文挑战第21天】前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
46 1
前端分析工具之 Charles 录制 Android/IOS 手机的 https 应用
|
1月前
|
网络协议 关系型数据库 MySQL
安卓手机termux上安装MariaDB数据库并实现公网环境下的远程连接
安卓手机termux上安装MariaDB数据库并实现公网环境下的远程连接
|
1月前
|
JavaScript Android开发
手机也能轻松搭建个人博客,使用安卓Termux+Hexo建立自己的网站
手机也能轻松搭建个人博客,使用安卓Termux+Hexo建立自己的网站
|
2月前
|
安全 Android开发
如何在Android手机上安装第三方应用?
【2月更文挑战第4天】在Android系统中,安装第三方应用是一个常见的需求。本文将介绍如何在Android手机上安装第三方应用,并提供详细的步骤和注意事项。
149 2