包括比平均安装AndroidOreo减少50%的存储空间

2020-07-28 17:46:26 来源: INeng财经

Android Go是Google基于Android 8.1 Oreo 精简版的Android ,旨在成为具有1GB或更低RAM的低端设备的Android优化版本。它于去年5月在Google I / O开发者大会上宣布, 最终更多细节在同年12月下旬公布。据说它将用于下一代入门级设备,以确保发展中国家的设备仍可以使用功能正常的智能手机来访问互联网并使用应用程序。

Go进行了多种性能优化和改进,包括比平均安装Android Oreo减少50%的存储空间。还要借助Android Runtime(ART)和内核优化,运行Android Go的设备的平均运行速度比在同一设备上安装常规Android Oreo的设备快15%。这些优化是通过Google进行的一系列专门的构建配置进行的,我们将在后面进行解释。

Android Go还得益于特殊的“ Go”应用程序,例如 Files Go,YouTube Go和Google Maps Go。这些是Google制作的应用程序的轻量级版本,它们降低了运行效率的要求。这意味着使用Android Go设备的用户可以享受与常规Android Oreo用户相同的大多数好处,从而可以利用Google的应用程序套件,而不必花很多钱在旗舰设备上或价格稍贵的预算设备上。

一切都与Google扩大其市场有关。但这引出了一个问题,即如果Android Go主要由构建配置和一组优化的Google应用组成,那么开发人员可以自行构建Android Go吗?简而言之,是的,我们可以。

少数LineageOS开发人员已经在构建Android Go优化的自定义ROM

我们已经看到一些定制的ROM开发人员(例如XDA公认的开发人员AdrianDC)正在使用Android Go,他在LineageOS 15.1上的工作采用了Android Go构建配置,该配置可用于 几台旧的Sony手机。有问题的设备是Sony Xperia SP,Sony Xperia T,Sony Xperia V和Sony Xperia TX。这些设备的历史可以追溯到2012年和2013年,但它们将使用Android Go构建配置接收基于Android 8.1 Oreo的LineageOS 15.1,如果设置了Android Go,则可能允许这些设备流畅地运行Google'Go'应用Gapps最终被释放。

任何独立的LOS维护人员都应该能够引入Android Go配置的构建,并将其作为一组构建配置和其他优化。这意味着,例如那些可能购买了Sony Xperia T(在启动时运行Android 4.0.4 Ice Cream Sandwich)的设备的人,将能够在设备上使用经过优化的Android 8.1 Oreo版本YouTube Go和Google Maps Go等应用程序。它不会在旗舰级性能上运行,但应该可以使用 -特别是对于可追溯到2012年的设备。

Android Go如何帮助较旧的Android手机运行Android Oreo

Android上的构建配置是一组参数,这些参数与Android系统的各个方面有关,这些参数在编译系统映像以刷新到设备上时适用。通常,这些更改会更改系统的行为方式,Android Go的主要优化来自这些构建配置。

我与XDA公认的开发人员joshuous进行了交谈,他帮助我极大地了解了正在发生的更改-真正使Android Go正常工作的原因。这些构建配置中有一些无法重新编译就无法更改,它们是ROM自身蓝图的一部分。这些是完全大写的标志。

但是,所有这些标志都与Android有关存储和内存使用的许多不同方面有关。这些措施包括 自动存储管理,Android的低内存杀手,地塞米松(d奥尔维克前 ecutable文件)正在运行的应用优化和RAM的限制。APK文件由这些DEX文件组成,因此从某种意义上讲,可以将APK文件简单地看作是包含许多.dex文件的ZIP文件,这实际上是Android在执行应用程序时运行的文件。自动存储管理将由Files Go应用程序而不是Android系统控制。

Android Go实用程序Android的低内存模式

在Android 4.4 KitKat中,Google引入了一个名为“ low-ram ” 的新标志,旨在支持具有512MB RAM的设备。它对系统进行了许多优化。这些更改对于降低RAM的设备非常有益。

改进的内存管理

经过验证的节省内存的内核配置:交换到ZRAM。

如果即将取消缓存并且太大,则杀死已缓存的进程。

不允许大型服务将自己放回A服务中(这样它们就不会导致启动器被杀死)。

杀死闲置维护过大的进程(甚至是当前IME之类的不可杀死的进程)。

序列化后台服务的启动。

调整低RAM设备的内存使用:更严格的内存不足(OOM)调整级别,较小的图形缓存等。

上面的这些更改基本上确保了系统通过使用ZRAM来确保尽可能使用压缩RAM。ZRAM基本上是一个RAMdisk(使用RAM的存储介质,比在设备上使用常规存储要快得多)作为交换文件。当RAM使用率很高且应用程序仍需要内存时,将使用交换文件。这比RAM慢得多,并且应尽可能避免。本质上,它只是压缩内存的内容。

减少系统内存

修剪了system_server和SystemUI进程(节省了几个MB)。

在Dalvik中预加载dex缓存(保存了几MB)。

经过验证的JIT-off选项(每个进程最多节省1.5MB)。

减少了每个进程的字体缓存开销。

引入了ArrayMap / ArraySet并在框架中广泛使用,以替代HashMap / HashSet的轻型存储。

这里最主要的事情就是减少设备上运行的各种进程的内存消耗,以尽可能地保守。基本的系统服务已被剥离,以在后台使用尽可能少的内存,因为每兆字节的RAM很重要。

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

鉴于Android Go主要用于具有1GB或更少RAM的设备,因此将需要更加积极的内存管理。Android Go以几种不同的方式修改了低内存杀手(LMK)。首先,当大量的RAM用完时,低内存消除器将进入“ 临界压力 ”状态。这是因为当内存使用率很高时,由于不断尝试访问设备存储上的交换文件,系统将变得缓慢。保持RAM干净将防止系统需要使用此交换文件并防止内存崩溃。当设备的内存已满时,就会发生内存颠簸,并且经常需要在设备的存储设备上分页交换文件,从而严重降低性能。

服务和WiFi服务设置为“ 速度配置文件 ”,这意味着这些服务中的选择方法是预先编制(AOT)的。(方法指的是可以在任何位置按名称调用的代码集。)由于Android系统无需连续重新编译设备上运行的基本服务,因此可以减少RAM使用和存储。同时,共享的APK设置为“快速”,旨在通过优化dex指令来获得更好的性能,从而延长电池寿命和CPU周期。

在dex优化方面,Android Go发挥了很多作用。对于初学者,十天后它将降级应用程序如果不用于节省空间。此处降级并不是指应用程序的实际版本号降低,而是意味着该应用程序的dalvik_cache将被擦除。使用Dalvik缓存是为了使设备不需要重新编译应用程序,而是仅编译其中最必要的部分并将其缓存。其余的在运行应用程序时使用即时(JIT)编译器进行编译。但是,如果该应用程序没有使用10天,那么该应用程序的主要部分也将被删除。这样做是为了释放尽可能多的空间。另一个简单的更改是不允许应用程序的RAM使用超过256MB,以便应用程序无法使用设备上的所有RAM。

Android会成为低端设备上自定义ROM开发的未来吗?

当前,我们尚不知道解决方案,但是在较旧设备上定制ROM的发展前景光明。在设备上运行较新版本的Android可能还存在其他问题,但是从理论上讲,基于Android Oreo升级到更优化的Android Go 可以使较旧的低端设备运行得更好。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。