How to deal with Android Fragmentation
Shreya Bose, Technical Content Writer at BrowserStack - March 23, 2021
What is Android Fragmentation?
At a high level, Android Fragmentation refers to the fact that there are a massive number of different Android OS versions available and operational in the digital world. To clarify why this is a concern, let’s look at a basic list of Android OS versions in play:
|Android OS version||Market Share|
|10 (Android 10)||32.9 %|
|9.0 (Pie)||17.6 %|
|11 (Android 11)||17.3 %|
|8.0-8.1 (Oreo)||13.7 %|
|7.0-7.1 (Nougat)||7.4 %|
|6.0 (Marshmallow)||5.0 %|
|5.0-5.1 (Lollipop)||4.0 %|
|4.4 (KitKat)||1.4 %|
|4.1-4.3 (Jelly Bean)||0.5 %|
|4.0 (Ice Cream Sandwich)||0.1 %|
Not every Android user will even update their particular OS at the same time. Additionally, every app that seeks to corner the Android market will have to run on every single OS and OS version so as to not alienate any users. Given the variety of versions in existence, one can imagine why “fragmentation” might feature in app developers’ and testers’ nightmares.
On top of that, consumer watchdog Which? stated that “More than one billion Android devices around the world are vulnerable to attack by hackers because they are no longer supported by security updates and built-in protection.”
(40%) Android users all over the globe are, according to Which? no longer receiving vital security updates from Google. This opens them up to risks of data theft, malware attacks and a range of security breaches. This obviously adds pressure on app developers because they have to create software for OSes with unstable security.
Unsurprisingly, Android fragmentation is considered the main weakness of the OS. Though 74.6% of the world’s smart devices run on Android, it is often criticized as inferior to iOS due to this factor.
Why does Android Fragmentation occur?
The primary reason Android fragmentation occurs can be summarised in two words: open-source.
Manufacturers are, with some limits, free to play with and use Android as they desire. Naturally, they are also responsible for proving updates tailored to the particular versions of Android offered on their devices. Now every manufacturer may not provide updates consistently. Plus, some Android versions may be heavily modified and not even respond to updates created for other versions.
Android’s open-source nature has led to manufacturers often “skinning” their Android version. This refers to the manufacturer’s unique modification on the OS, as created for a particular device. Think of the differences between phones running on Nexus and MIUI. Despite running on the same OS, they have vast visual and functional differences.
Take the example of the Samsung Galaxy Note 7. The phone carries an iris scanner, something stock Android versions did not have the capability to use. Consequently, Samsung modified the OS until it could do so, thus creating an Android version unique to that one device. Now, when Android updates come, Samsung has to port iris scanner compatibility to newer versions.
Imagine this scenario, but with regards to multiple manufacturers and devices under each manufacturer.
Effects of Android Fragmentation
Widespread fragmentation in Android has diverse and far-reaching effects on the digital market as well as both hardware and software development practices.
- Inconsistency: Certain apps may require a certain Android version as well as a certain device feature to function properly. With multiple Android versions circulating in the market, there is no guarantee that all, or even a large chunk of operational Android devices will be upgraded to that version. This seriously constricts the number of potential users an app can target. A large number of versions also make it difficult to optimize the app for every single version.
- Development and QA difficulties: The vast number of device-Android version combinations naturally create technical complexities for developers and testers. Every app developer and tester must take into account a dizzying number of devices and Android OS versions when creating or verifying an app.Optimizing an app for every possible Android device is nothing short of exhausting for developers. Testers also have to test the app on as many real device-Android combinations, which can be quite difficult and expensive without the right infrastructure in place.
- Bad for BYOD: When enterprise mobility is being implemented with BYOD policies, Android can be problematic. Fragmentation in Android means that the organization will have to deal with multiple security issues due to the difference between Android versions. This makes app management and security management complicated and tedious.
How to deal with Android Fragmentation?
In 2020, app users expect nothing short of perfection every single time they use an app. Since every app must stand against multiple competitors, users will not think twice about uninstalling it at the slightest disruption. In fact, 56% of users uninstall apps within 7 days of installation. Unless an app is stable, there is a high chance that it will be discarded.
The only way to ensure app stability and performance is to test them on real Android devices. Given that there are thousands of them in global use, this naturally poses a challenge. Unless an organization has considerable funds to spare, they won’t be able to establish, maintain and upgrade an on-premise Android device lab. With new devices and Android versions being released faster than ever, one can imagine the kind of investment that an up-to-date device lab would require.
Conversely, developers and testers can run tests on a real device cloud. Essentially, it lets them monitor app performance and efficacy on real Android devices without having to collect or maintain any devices. BrowserStack provides the cloud infrastructure that facilitates such testing activities. They can also test websites on real browsers installed on these Android devices. Testers can perform Android testing by signing up for free and choosing the device-Android version combination of their choice.
The BrowserStack device cloud provides:
- An exhaustive range of Android devices like Pixel, Nexus, Galaxy, etc. running on Pie (9.0), Oreo (8.0), Nougat (7.1, 7.0), Marshmallow (6.0), Lollipop (5.0, 5.1), Kitkat (4.4, 4.3), etc.
- Tools to debug Android apps & websites instantly using device logs, browser console and network logs, crash logs, video recordings, and screenshots for every test
- Local Testing which allows the testing of native, hybrid and mobile apps on internal dev and staging environments by utilizing the secure, encrypted BrowserStack tunnel
- Easy integration with Android test automation frameworks like Espresso, Appium, etc. to run automated Android tests
- Parallel testing which lets devs and testers release Android builds faster by running tests concurrently across devices. Using this feature reduces test execution time by more than 10x
These features can also be used by the Android app and website developers to run unit tests on their code. By doing so, they can ensure that even the smallest unit of the app/website’s code is running flawlessly, thus reducing the chance of bugs appearing in later stages.
Android fragmentation is one of the most emphatic concerns for developers and testers of our time. Anyone seeking to create an Android app must ensure that it appeals to and functions for the largest numbers of users, which translates to its optimization for various devices and OS versions. For websites, they must factor in the multiplicity of devices and mobile browsers.
BrowserStack’s cloud infrastructure provides a solution for both by actually offering actual devices, browsers and platforms for testing. Additionally, the BrowserStack cloud is regularly updated with the newest variation of all three, thus ensuring that its users do not miss out on any customer demographic. It makes testing Android apps a simple task, and assists with creating software that meets the highest standards of user experience.