I’m writing this blog post to share some bizarre bugs I have found in android-one (compared to standard android)- and I am sharing them here- with videos and details on how to reproduce them so that folks working with Android One – whether random geeks and hackers or whether from Google or from OEMs can take note of the bugs and maybe issue updates or new versions of firmware which fix them.
These bugs affect us, because even on an android one phone with 2 gb ram and 32 gb internal storage– an app closes and then reopens when certain intents are invoked OR if a rewarded video ad is shown in-game– and that is bad, because it’s totally different from expected behavior, and can cause a user to lose hours of progress on the game or worse still make a user assume an app is buggy and uninstall it and give it 1-star ratings on Google play.
So here goes…
Here’s an example of the Android-One bug manifesting itself in a game “Tank Shoot 3D” which I have been working on, and which is shipped to Google Play:
Link to our game Tank Shoot 3d:
Tank Shoot – on Google Play
https://play.google.com/store/apps/details?id=com.darksunsoftware.tankshoot
Link to very short 20 sec video of bug showing up (causing app to restart):
Notice in the video above and after that in the longer videos below how the app restarts when we do each of the following tasks:
(1) When we try to view a rewarded video advert- ie: an advert which the user views to get a bonus – like extending a game that’s over OR like getting in-game currency in exchange for watching the advertisement.
(2) When we try to invoke an intent within our app which uses functionality exposed to apps like ours by external apps.
Eg: doing a “share link to whatsapp” or doing a “invoke email client to send feedback”.
(3) When we try to invoke an intent within our app which uses functionality exposed to apps like ours by the android system.
The scenario mentioned in (3) above is the most severe case of the bug showing itself – even when we try to use functions that are native to Android and shipped to us by google itself – the app often stops and restarts. In itself- this is demoralising to a user- because he or she will assume it’s our app that is crashing and many users will be scared that their system will get unstable and then not just uninstall our app and give it a bad review– but also they will not use any of our apps and tell their friends that our apps can cause Android to crash (in a worst case, through Google Play’s review mechanism itself).
Here’s a link to a game by us, which we will be using to test and reproduce this bug shown here- I created this game from bits and pieces I saw and found online- mostly as an experiment- but also to see if this bug can be seen in something that’s 100% lightweight in processing, polygon count and memory requirements.
Blokstok Road Race on Google Play
https://play.google.com/store/apps/details?id=com.darksuntech.trafficraceds1
Apart from having dreams of millions of downloads due to it’s simple but addictive gameplay- one of my intentions in making this game was to invoke and see how consistently functionalities exposed by Android as well as the Google Play services library work accross Android and Android One devices. The devices we used included:
(1) “heavyweight” Android-One phone (ie:A Lava Pixel V1 Android One Phone- a device with 32 GB internal storage and 2GB RAM apart from a 32 GB class 10 memory card)- we saw the errors described play out.
(2) and a “low end” standard Android device (ie: a Samsung Galaxy S Duos S7562 – with 768 mb of Ram and 8 GB internal storage with a 16 gb memory card)- their supposedly ancient and supposedly low-end device worked consistently like the “heavyweight” android device in (3)- and didnt show the seemingly anomalous behaviors the device in (1) above showed- even though it slowly stuttered along in many cases.
(3) a “heavyweight” Android device (ie: a Samsung Galaxy Note-4 with 3 GB of RAM and 32 GB internal storage and a 128 gb class 10 memory card)- which worked perfectly.
So without further ado, below are videos of our above game – Blokstok Road Race running on:
(A) A Lava Pixel V1 AndroidOne Device – where the app restarts multiple times – however since this behavior seems to be programmed into Android One – we dont see any record of this anomaly on Google Play in form of ANRs or crash reports (see point C below).
(B) A Samsung Galaxy Note-4 below – where the app functions exactly as desired.
(C) On Samsung Galaxy S Duos mentioned above also both our apps ran perfectly- without the apparent anomalies mentioned above.
We did not attempt to take screen-recording from slightly low end standard Android phone- as that device was running Android Jelly Bean – which does not support screen recording via ADB (the Android Debug Bridge).
(D) see screenshots below of our Google Play App Console for both our apps below- there are Zero ANRs for both the apps “Tank Shoot” and also “Blokstok Road Race” on Google play – though we know of multiple test devices running Android one where we repeatedly caused our app to anomalously restart by invoking reward ads; and invoking intents that caused our app to restart as shown in videos above.
Screenshot of Google Play App Console for Tank Shoot – shows zero crashes and zero ANRs – even though both our users and we- have experienced dozens or hundreds of anomalous restarts of the 2 apps.
Screenshot of Google Play App Console for Blokstok Road Race – shows zero crashes and zero ANRs – even though both our users and we- have experienced dozens or hundreds of anomalous restarts of the 2 apps.
Details below of Android Versions on the Android One and Android Devices on Which the App Was Tested
This same anomalous behavior can also be seen in the game “Angry Birds” by Rovio – trying to show a “rewarded video ad” to unlock level 7– as you can see, the game restarts when level-7 is clicked – instead of showing a rewarded video ad (as otherwise the splash screen of Rovio and opening screen would not be shown).
See video below: