1. the process or state of breaking or being broken into small or separate parts.
“the fragmentation of society into a collection of interest groups”
Android from its inception was destined not only for greatness (as of July 2015, 83% of smartphones in the world ran Android), but it was also destined for fragmentation. Given the open source nature of Android, virtually every manufacturer and every cellular network wants to put their two cents in and change something about the platform. They each take what it is, and change icons here, and menus there, and what is left? Thousands of variations of Android. Video formats that are supported on some devices and not others. Images that look completely different on different phones or don’t even show up. And thousands of variations in performance, speed, and usability.
At this moment in time, the apps we create at plus11 for the Android platform are supported on 7,059 devices. Yes, over 7,000 devices. So how do we do it? How can we create custom video players, download images rapidly for display, and save user input for all those devices? We can’t. It is a sad reality. And one that leads many Android developers into a life of depression. We can do our absolute best, though, and that’s what we’ve done.
Samsung, LG, Huawei, HTC, Motorola, Lenovo, and Asus are just a handful of the manufacturers of Android devices. They each put in various cameras, various processors (with varying chipset architectures), and have varying sizes and resolutions of displays. Some of the more basic and older Android devices we support have screen resolutions like 480×800 while the more modern displays can be 2160×3840. With such a variance in hardware and software, it is a wonder to me that any of it works. Luckily, there are brilliant minds at Google (shout out), and hundreds of wonderful developers in the world that have made it possible (at least to some extent) to support all of these devices.
What is the key?
How do you solve the problem of uploading a 30-second 400MB 4k resolution video from one device and having it stream flawlessly on an iPhone 6S? How do you take photos and videos captured on iOS devices and have them load seamlessly on over 7,000 Android devices? These are actual problems that we have faced at plus11. And what do you do as a developer when faced with such challenges (other than sit in a corner rocking yourself back and forth while whimpering quietly)? You drink a lot of Red Bull, do a lot of research, and turn that Red Bull and research into code.
The real key to creating solutions like this though is to not ‘reinvent the wheel’ wherever possible. We have integrated 40+ libraries, APIs, and SDKs into our platform each with a specific role. We use Glide, for example, to download and display almost all of our images. We use Android support libraries to help create those buttery smooth lists of images and videos. We use Google Analytics to see exactly how our users are interacting with these experiences we create. And we use Crashlytics to help us find the source of bugs and issues when things go wrong.
Unfortunately, there aren’t libraries for creating a square view that can display an image or auto-play a video, have zooming capabilities on the images, have touch interactions to control the playback of videos and unmute sound, and on top of that displaying those over and over in a list without using too many system resources. When it comes to solving problems like that, you use what you can, and write the rest.
There are over 135,000 lines of Java code in the Android version of Plus11’s ‘Platform’ and each does something special to bring friends, family, and lovers of that thing, together. It’s not easy, but who likes easy? Easy is boring.
So whether it’s supporting the latest flagship directly from Google, like the Huawei Nexus 6P, or supporting the never heard of before Noblex n451 (a real device), the plus11 Android team is doing its best and loving the challenges along the way. Android may be fragmented, but the plus11 Android team isn’t. Our largest goal is making our users happy.
What Our Users Can Do
I may be the team lead and responsible when someone’s Doogee DG310 (also a real device) isn’t able to see another user’s post, but I have great developers working with me to solve these issues and squash those bugs. If you’re one of our users, here’s how you can help us do just that:
- Rate and review our apps! Let us know how we’re doing (but only if you’re giving us 4 or 5 stars of course).
- Contact support. We are always ready to help if things go wrong. Don’t hesitate to reach out and let us know about any issues you encounter or new features you’d like to see. With 7,000 devices out there, it’s entirely possible we have never heard of or seen a particular issue.
- Contact Support for good things too. We love hearing feedback about how much more you like using the app or how much better a feature is. That feedback drives us. It’s why we’ve had overnight coding sessions and spent too much time on that one bug for that one user.
Thanks for sticking through to the end. It was a long post, but now you know important things like the fact that there is a device called Iris Fuel50 manufactured by Lava (yes, this is another real device that has used one of our apps) and you also know that we’re working hard to support it. Smile and know that while you’re using one of our apps, you don’t have to worry one bit about fragmentation.