包括比平均安装AndroidOreo少50%的存储空间
Android Go是谷歌基于Android 8.1 Oreo紧凑版开发的Android,旨在成为一款针对低端设备的Android优化版,RAM为1GB或更少。这是在去年5月的谷歌I/O开发者大会上宣布的,最终在同年12月下旬公布了更多细节。据说它将用于下一代入门级设备,以确保发展中国家的设备仍然可以使用功能智能手机访问互联网和使用应用程序。
Go进行了各种性能优化和改进,包括存储空间比安卓奥利奥平均安装减少了50%。在Android Runtime(ART)和内核优化的帮助下,运行Android Go的设备平均运行速度比同一设备上安装了普通Android Oreo的设备快15%。这些优化是通过谷歌制造的一系列特殊构建配置来实现的,这将在后面解释。
安卓围棋也受益于特殊的“围棋”应用,如文件围棋、YouTube围棋和谷歌地图围棋。这些是谷歌制造的应用程序的轻量级版本,降低了对运行效率的要求。这意味着使用安卓Go设备的用户可以享受到与普通安卓奥利奥用户相同的大部分好处,因此他们可以利用谷歌的应用套件,而无需在旗舰设备或略贵的预算设备上花费大量资金。
一切都与谷歌扩大市场有关。但这就产生了一个问题,那就是如果安卓Go主要由构建配置和一套优化的谷歌应用组成,开发者能自己构建安卓Go吗?简而言之,是的,我们可以。
一些线性地理开发人员已经在构建安卓Go优化的定制光盘
我们看到一些定制的ROM开发者(比如XDA公认的开发者AdrianDC)正在使用Android Go。他在LineageOS 15.1上的作品采用了Android Go构建配置,可以用于几款索尼老手机。有问题的设备是索尼Xperia SP、索尼Xperia T、索尼Xperia V和索尼Xperia TX。这些设备的历史可以追溯到2012年和2013年,但它们将使用Android Go构建配置,以接收基于Android 8.1 Oreo的LineageOS 15.1。如果设置了安卓Go,这些设备可能会被允许顺利运行谷歌的‘Go’应用Gapps,并最终发布。
任何独立的LOS维护人员都应该能够介绍Android Go配置的构建,并将其用作一组构建配置和其他优化。这意味着,例如,那些可能已经购买了索尼Xperia T(启动时运行Android 4.0.4冰淇淋三明治)的用户将能够在他们的设备上使用针对Android 8.1 Oreo的优化应用程序,如YouTube Go和谷歌地图Go。它不会在旗舰性能上运行,但它应该是可用的——尤其是对于追溯到2012年的设备。
安卓Go如何帮助老安卓手机运行安卓奥利奥
Android上的构建配置是一组参数,这些参数与Android系统的各个方面相关,在编译系统映像以在设备上刷新时适用。一般来说,这些变化会改变系统的行为,安卓Go的主要优化来自于这些构建配置。
我与XDA公认的开发者joshuous进行了交谈,他帮助我理解了正在发生的变化——是什么让Android Go真正发挥作用。这些构建配置中的一些在没有重新编译的情况下无法更改,它们是ROM本身蓝图的一部分。这些都是完全资本化的迹象。
然而,所有这些标志都与安卓存储和内存使用的许多不同方面有关。这些措施包括自动存储管理、安卓的低内存杀手、地塞米松(D Aalvik之前的可执行文件)运行应用优化和RAM限制。APK文件是由这些DEX文件组成的,所以从某种意义上说,APK文件可以简单地看作是一个包含许多文件的ZIP文件。dex文件,这实际上是Android在执行应用程序时运行的文件。自动存储管理将由Files Go应用程序控制,而不是安卓系统。
安卓Go实用程序安卓的低内存模式
在安卓4.4 KitKat中,谷歌引入了一个名为“低内存”的新标志,以支持512兆内存的设备。它对系统进行了许多优化。这些变化对于内存减少的设备非常有益。
改进的内存管理
已验证节省内存的内核配置:切换到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 可以使较旧的低端设备运行得更好。