Android Go is a tailored Android edition for old and low-end devices. Android Oreo Go or Android Pie Go is intended for devices with 1 GB of RAM or less. There are examples of the normal operation of Android Oreo Go (LineageOS 15.1 Go), even on smartphones 2013, for which only Android Jelly Bean was officially released. Although you can use a normal Android Oreo for 1 GB of RAM, but Android Oreo Go has a much higher interface responsiveness – apps run and switch faster.
Let’s look at the found differences between the usual Android and Android Go, using the example of the clean build LineageOS 15.1 and LineageOS 15.1 Go.
Visible differences Android Go Edition.
In numerous reviews Android Go only usually write about truncated Google services (Gmail Go, Files Go, Maps Go, etc.), but it’s a third-party software (pre-installed by manufacturer). Android Go has a number of its own differences and limitations, not related to Google services and branded apps from the manufacturer.
In the normal version of Android 8.1 (Oreo) and 9.0 (Pie) there is a multi-window functionality. To use it, you must press and hold the button «Recent apps menu» – the screen is divided into two halves, and each of them may have different applications at the same time. Especially if the screen is large. For example, in one half of the screen, you can run a translator or calculator, or some other auxiliary program.
In the Android Go, the multi-window mode is unavailable, while holding the button «Recent Apps Menu», the system reports that “Apps does not support split-screen.” Although in fact this system does not support – after turning off the Go-mode, the same applications normally work on a split screen.
Recent apps menu.
The design of the list of recent applications in Android Oreo (8.1) and Android Oreo (8.1) Go is different.
In the normal version of Android Oreo (8.1) a list of recent applications in the form of multi-layered cards.
In Android Oreo Go, the cards are arranged in a single layer, and browsing the list of recent applications takes longer (because the list is long).
In Android 9, there is no such distinction; in the Android Pie Go Edition, the design of the recent application list is no different.
In the normal version of Android, you can add additional user and guest accounts.
If the smartphone is used by different people, you can use additional accounts to quickly switch all parameters. In the Android Go version there is no such possibility, only 1 owner can use the smartphone. The item “Users” in Android Oreo Go and Android Pie Go is absent.
In Android Go, the scrolling of various menus and lists is not as smooth as in a normal Android. This is especially noticeable in the Google Play menu, and other places where WebView is used.
Permissions, restrictions of rights.
Android Oreo Go and Android Pie Go do not have access (Settings – Apps & notifications – Advanced – Special app access) to four additional rights.
And applications that need these rights are generally denied. So, the list of permissions missing in Android Go:
- «Do Not Disturb access» – for example, this right may use a standard dialer, activating «Do Not Disturb» mode during in-call. Moreover, the absence of this setting in LineageOS 15.1 Go does not preclude the application from controlling the «Do Not Disturb» mode, for example, the dialer actually turns on the «Do Not Disturb» mode. But this is most likely a bug, and for example, in LineageOS 16.0 Go, the dialer cannot activating the «Do Not Disturb» mode.
- «VR helper services» – I do not have apps that would require it.
- «Notification access» – allows applications to read and/or delete notifications from other applications. For example, Nova Launcher uses this right to display their own more informative badges for application icons.
- «Picture-in-picture» – This permission allows various video players output video with a small window on top of other applications. In Android Go, the PIP functionality is not available, in those applications where the window is displayed in normal Android, the window is not displayed in the Go version. Although, in LineageOS 15.1 Go setting this permission is duplicated in the properties for an application – it does not help, it’s probably a mistake.
Internal differences Android Go Edition.
Memory management in Android Go mode.
The main difference between Android Go – this other memory management algorithms. Classic LowMemoryKiller is not used there, for normal operation of Android Oreo Go or Android Pie Go, the kernel must support the new vmpressure algorithm.
Memory management in Android Go is more optimized to save memory (to the detriment of caching): more aggressive closing of background processes, closing of any service if it began to take up too much memory in the process, sequential launch of background services, smaller sizes of various caches and buffers for graphics, less font cache, and many other solutions for more economical use of RAM.
As a result, even heavy applications in the Android Go is faster than in the normal Android on the same device.
If the RAM is 2 GB or more, then you don’t need to use Android Oreo/Pie Go, it will be inferior to the normal Android Oreo/Pie due to less caching.
How to switch the system to Android Go mode.
The main switch – option ro.config.low_ram=true in build.prop, Android turns into Android Go by simply adding this option. And vice versa – ro.config.low_ram=false or deleting an option – turns Android Go into normal Android.
There are scripts for recovery, allowing you to easily add or delete ro.config.low_ram. Or you can edit build.prop manually (if you have root-rights).
But, for a full switch to Android Go mode, you need to take the source code and recompile the firmware. Because, besides ro.config.low_ram, there are a number of options, not only in build.prop, but also in the compiler configs (and for example, compiled files in system/framework/arm, system/framework/oat/arm differ in size by half – for Go Edition they are more compact). To build in Go mode, you need to add link «$(call inherit-product, build/target/product/go_defaults.mk)» in the device tree in platform.mk file.
This, in addition to ro.config.low_ram=true, adds a few more options to build.prop: ro.lmk.critical_upgrade=true ro.lmk.upgrade_pressure=40 ro.lmk.downgrade_pressure=60 ro.lmk.kill_heaviest_task=false pm.dexopt. downgrade_after_inactive_days=10 pm.dexopt.shared=quicken dalvik.vm.systemservercompilerfilter=speed-profile and increases dalvik.vm.heapgrowthlimit from 96m to 128m.