Table of Contents
Emulator vs. “App Player”
The appeal of an “app player” is that it’s about 3 times more efficient than an emulator.
If we look at the bare Android hardware and its operating system stack:
Android runs a proprietary operating system, and all android “apps” runs on top of Java, leveraging android libraries for device and hardware access, as well as look and feel.
An Android app runs on the native CPU at a ratio of 1:1, but Java is inefficient, and all Android apps run in Java. The final app “efficiency” on native hardware is about 0.5:1, or about 50%.
When you install the android developer kit (ADK), it comes with a hardware emulator that runs on Windows.
A hardware emulator emulates literally every function. It starts by building a virtual hardware layer, and then it emulates a virtual CPU. When the device “boots”, it loads a ROM image, and the CPU (virtual CPU) begins to process instructions. Eventually, the OS loads the User Interface (UI), and allows the Windows –> Android user to load an Android application.
Unfortunately, Windows is horribly inefficient. On top of this, an emulator running on top of Windows only becomes increasingly more inefficient. By the time you run a “native” Android app on a hardware emulator running on Windows, the efficiency is at or less than 10%.
An “app player” skips the hardware emulation:
Because we skip the hardware layer, the emulation is 300% or more efficient than a hardware emulator.
The “app” runs on Java, which runs on the native OS, in the context of the “app player” application. Device calls are not handled by “virtual hardware” – they are simply a call through Java to the underlying operating system.
For a developer, the “app player” is a very powerful tool that can be used to help compile, prototype, and test an application much more efficiently than if one was to use a hardware emulator.
BlueStacks Enters the Scene
BlueStacks was one of the very first Android “app players”, if not the first.
There are three main versions of BlueStacks:
BlueStacks Beta (v<2.0)
BlueStacks “1” or BlueStacks “Beta” came with a fairly slick installer, and supported some predefined channels that were ostensibly the company’s revenue stream.
Like any brand-new android device, you are prompted to link it to a Google account.
Unlike the hardware emulator, you quickly find that this is a mandatory step.
BlueStacks 1 was fairly widely compatible, and ran fairly efficiently, even on older hardware.
BlueStacks 2 (v 2.x)
One of the nicer features of BlueStacks, even version 1, was its auto-update facility.
Auto-updating BlueStacks 1 was kind of nice, because you had a constant series of updates that would fix bugs or improve compatibility or performance.
Eventually, auto-update brought you (forcibly) BlueStacks version 2.
BlueStacks version 2 sported a nice new interface.
What was NOT nice about BlueStacks 2 was the fact that you couldn’t downgrade back to BS1. Even if you uninstalled BS2 and used your old BS1 installer, it would immediately download and install BS2. So now you’re stuck with BS2.
In addition to several useless user interface components, such as a main page that was nothing but an ad banner, one of BS2’s main features was “BlueStacks TV” – a constant video ad that started automatically and played until you turned it off. Through the user interface, there was no way to disable it.
Of course, this was reviled by the BlueStacks community, but their only response was “why would you want to turn it off?”
Right. It’s a revenue stream for BlueStacks, so of course, why would THEY want you to want to turn it off?
Eventually, some intrepid tinkerers figured out how to edit the configuration manually, to disable BSTV as well as some of BS2’s other annoying “features”.
Like its predecessor, BS2 required a link to your Google account.
BS2 also perpetually prompted you to sign up for a BlueStacks account.
It wasn’t as snappy as BS1, but overall, it was more stable and more compatible.
BlueStacks 3 (v 3.x)
Having learned my lesson about BS1 auto-updating to BS2, I neutered BS2’s update feature.
Eventually, however, BS2 simply became old.
As a developer, one needs access to the modern Android OS and its modern features.
Since the version of Android is intrinsically linked to BlueStacks, there really isn’t a way to upgrade Android without upgrading BlueStacks itself.
So I made the mistake of upgrading to BlueStacks 3.
And that’s a good place to start my rant about the problems with BS3.
Problems With BlueStacks 3
I should have known that I was in for a ride when the installer offered the “customize” option, only to learn that the “customize” option only lets you “customize” the data path.
One of the first indications of a problem was during the installation process:
Notice the “suggestion” at the bottom during installation:
Disable your PC antivirus if it is interfering with installing BlueStacks
This is “developer mentality” at its finest. This blurb practically screams: “It works on my machine!”
It’s completely unacceptable to suggest that the user should disable a security feature just to run your crappy software. There are better ways to accomplish the same result, safely, by coding your installer properly. The last thing you want the user to do is to make their PC vulnerable (unless you just don’t care), and you simply can’t trust the user to turn it back on again! Not to mention, you don’t want to give the user the impression that it’s “OK” to turn off antivirus, willy-nilly, whenever some crappy software blows up their face.
How about this, instead: WRITE A BETTER INSTALLER!
Upon completing the installation process, BlueStacks boots for the first (or second, or third) time.
Unlike its predecessors, you might get a message that simply says “BlueStacks Engine failed to start”. As in, “BlueStacks failed to start. Oh well.” Not helpful. As a developer, you should NEVER show the user an error that says, “meh, something happened.” Every error message should be meaningful: “BlueStacks Engine failed to start…. BECAUSE”, or “here are some troubleshooting steps”, or “here, click this link for more information”.
In my case, a reboot seemed to fix it (lucky enough for me, to have figured this out on my own).
So BS3 boots up, and you are immediately confronted with “Pika Points!!!!!” (??)
As you’ll soon find out, “Pika Points” is an integral part of your BS3 experience.
Meanwhile, check out that disclaimer at the bottom:
First boot may take up to 2-3 minutes depending upon your PC’s performance
It’s not the FIRST boot. It’s EVERY boot.
BlueStacks 1 launched quickly – like a normal Windows application.
BlueStacks 2 took a minute or two to launch, but it wasn’t completely outrageous.
BlueStacks 3 takes every bit of “2-3 minutes” to launch. EVERY time you launch it. What is it doing? “Starting BlueStacks Engine”.
Once BlueStacks (FINALLY) boots, you can access the system menu, and unlike its predecessors, there are some user-configurable settings for the engine itself.
The first “Settings” screen allows you to manually set the display size, as well as the resolution. As much as I hate BS3, this is a nice upgrade from previous versions.
The other significant “settings” screen is the Engine settings.
This allows you to switch between DirectX and OpenGL, select the number of cores, and set the max memory.
Note that on my 4 gig laptop, this pig defaulted to nearly 2 gig, despite the “recommended memory” setting of 1.1 gig.
It’s nice that you can CHANGE these settings, but any hardware change necessitates an almost 5 minute restart (NO THANKS!!)
The other settings are marginally useful. Especially the “Boss Key” setting – are we in the 9th grade??
So at this point, we have BS3 installed. We’ve gone through the “first boot”. We’ve set the hardware settings.
What’s that Exclamation mark at the top?
Oh, hey, more crappy coding!
It’s not MY software, it’s YOUR old hardware
So, instead of making BS3 run properly, or making USEFUL suggestions about how to improve performance, or even making some excuse about why BS3 is slower than BS2 on older hardware, all you get is:
YOUR OLD HARDWARE SUCKS, DUDE! UPGRADE! SPEND MONEY SO THAT OUR SOFTWARE WORKS PROPERLY!!!
How do I know this? BECAUSE BLUESTACKS 1 AND 2 RAN JUST FINE on my “old” PC. Therefore, the problem is SOFTWARE.
Developer mentality: “The new platform is so much better that it requires more resources” bla bla bla
The way to approach this from an architecture perspective, is to have both codebases available to the user, specifically to support older hardware, especially when your software “model” is to ONLY allow the most recent software version.
If the user was allowed to download and install version 1, you could say “hey, try BlueStacks v1, it may run better on your hardware” (which is fair). However, the user CAN’T download and install v1, because ONLY v3 is available.
Likewise, if you wrote “enhancements” in v3 to the older codebase, then have a flag that can detect slower hardware and automatically disable them.
Equally-important: If there are system-wide configuration changes that the user could make in order to boost performance, then provide instructions.
Well, that “hardware upgrade” is simply not going to happen, so let’s take BS3 for a test drive…
As with all previous BlueStacks versions, BS3 is greedy for your Google account.
Note that, unlike other Android platforms, “you can create a new account on google.com on your PC or tablet”. GIVE US THE ACCOUNT! WE WANT THE ACCOUNT!
It’s like the software version of Smeagol.
Before you are even allowed to use BlueStacks, you have to:
- Link your Google account
- Link your Google account to Google Play
- Link your Google account to BlueStacks
OK – all booted up. All signed in. Three times.
Wait…. What’s that “Pika World” tab at the top?
So apparently “Pika World” and “Pika Points” has something to do with the BlueStacks 3 revenue stream. It appears to be an unending set of “Facebook-like” games, where you “get to be social” while other people make money off of you.
And look… There is my name and my e-mail account, all set up for me. Without my explicit consent. And, they even made me a nickname! Without my explicit consent.
My account screen admonishes me: “You are currently using a FREE account”, but it clearly wants me to upgrade to “BlueStacks Premium” for just $3.33/mo. So what do I get for $40 a year? Apparently, my experience is ad-free (OK), and I can customize my wallpaper (?). I also get an assorted set of quest features.
So after changing my name to “Bob Hope” and my nickname to Bob_Hope, I click on “Pika Points” so that I can figure out what the heck a “Pika Point” is:
You get Pika Points for loading BlueStacks (THANK GOODNESS THERE IS SOME KIND OF COMPENSATION FOR THE SLOW SLOW SLOW LOADING PROCESS), loading applications, and “quest” activities.
So I’ve managed to rack up 330 “Pika Points”, which if I’m looking at this right, allows me to enter a raffle for a gaming mouse.
So if a company is GIVING something away, ALWAYS know that they are making it up on the back end. Whether BlueStacks is selling my data or doing bitcoin mining in the background, I can’t be sure. But I CAN be sure they are using ME as a revenue stream.
No thanks!
I do some googling about how to disable my “Pika World” account.
Just as with BlueStacks TV, there isn’t a way to do that. The company line is the same:
Why would you want to disable the Pika World feature?
Well… there were some parents and other folks who had legitimate complaints, that their IRL (In Real Life) neighbors were able to “check in” on their child’s Pika World account, visit, and even leave comments. As a parent, exposing your child without some kind of controls is a scary thing.
More googling, and apparently, I will just be signed up for crappy PIKA WORLD for the rest of my life.
I installed a couple of apps just to test performance, one of which was Caves (Roguelike), a 2D RPG scroller, which I also play on my phone, and therefore gives me a decent baseline. I also installed some personal projects that I’ve previously compiled and deployed to BS2, and which run just fine under BS2.
PERFORMANCE WAS HORRIBLE.
App load times were very slow, and the UI was horribly laggy. Now keep in mind, these are all apps that I’ve downloaded to BS2, and ran just fine under BS2, on this very same “old slow” laptop.
As a final note, while I was clicking on the various doo-dads, I noticed this note in the lower-right corner:
So they seriously were not kidding! I have to pay $40/yr just to change the wallpaper??
Isn’t that like charging for the AIR YOU BREATHE? What a childish way to attempt to drive revenue. I mean, if you really hate your customers, this would be fine, I guess…
Goodbye BlueStacks 3!!
Google’s Malicious Behavior Policy
Am I being picky?
Let’s look at Google’s own Malicious Behavior policy, which is one of the fastest ways to get your app bounced off the play store. I’ve linked to Google’s policy, and I’ve highlighted what I consider to be BlueStacks 3 violations of this policy:
(Annotated Excerpt)
We don’t allow apps that steal data, secretly monitor or harm users, or are otherwise malicious.
An app distributed via Google Play may not modify, replace, or update itself using any method other than Google Play’s update mechanism. Likewise, an app may not download executable code (e.g. dex, JAR, .so files) from a source other than Google Play. This restriction does not apply to code that runs in a virtual machine and has limited access to Android APIs (such as JavaScript in a webview or browser).
The following are explicitly prohibited:
- Viruses, trojan horses, malware, spyware or any other malicious software.
- Apps that link to or facilitate the distribution or installation of malicious software.
- Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play.
- Apps that introduce or exploit security vulnerabilities.
^ Asking the user to disable antivirus
- Apps that steal a user’s authentication information (such as usernames or passwords) or that mimic other apps or websites to trick users into disclosing personal or authentication information.
^ My username was used without my explicit consent to sign me up for “Pika World!”
- Apps may not depict unverified or real world phone numbers, contacts, addresses, or personally identifiable information of non-consenting individuals or entities.
^ I hope my “real name” wasn’t Janet… that could raise some questions at the office. This goes back to Google’s accidental outing of a transexual by enforcing their “real names” policy.
- Apps that install other apps on a device without the user’s prior consent.
^ I sure don’t WANT Pika World, nor any of the other crapware apps that come preinstalled.
- Apps designed to secretly collect device usage, such as commercial spyware apps.
Give the User Base What They Want
Features such as BlueStacks TV (BS2) and “Pika World” (BS3) are unwanted by the community, and therefore hated by the community because they can’t be disabled.
Always give the user base what they want.
When you stop listening to your users, you will eventually be irrelevant.
NOX App Player
Now that I’ve decided to sever my experience with BlueStacks forever, I need a good replacement.
Fortunately, now there are some decent alternatives out there.
I downloaded and installed NOX App Player:
The installer screen and installation process were similar to BlueStacks 3. Unlike the BS3 installer, you get some useful “customize” features, such as the ability to create Desktop and Taskbar icons.
Oh dear… this is not a good sign.
Again, NEVER tell the end user to disable part of their security.
Although the initial boot process is slow, the second and subsequent boot takes about 40 seconds to 1 minute.
Initially, I had flashbacks as I saw that little exclamation mark. HOWEVER, I was pleasantly surprised once I clicked on it:
Clicking on either button provides a lucid explanation with instructions on how to actually improve NOX performance!
Like BS3, NOX provides a system menu with engine-level performance settings:
Unlike BS3, I didn’t really need to make any adjustments, as the defaults were just fine. I lowered the FPS setting from 60 to 30, just because I know I won’t be doing any intense gaming, and I need the extra cycles for development.
Also, I was pleasantly surprised that I could get all the way through the first-time-boot process without HAVING to link my Google account.
I was able to connect my compiler to NOX and install an application, all without providing any identity or credentials.
Very refreshing.
The first time I was prompted for my Google account was when I downloaded an app from Google Play – which is normal behavior on any Android device:
I ran the same apps on NOX in order to get a feel for performance.
Even with Intel VT disabled, and without doing the GPU tuning suggested by NOX performance was comparable to BlueStacks 2 (MUCH FASTER than BlueStacks 3)
I was even able to change the wallpaper!
Despite a robust set of features, the NOX desktop is no-frills.
When I say “no frills”, I mean, there are only a couple of preinstalled apps, and there are NO wallpapers or other themes unless you download them. This is a nice contrast to the endless preinstalled wallpapers, notification sounds, and apps that typically come pre-loaded with a physical tablet or phone, and which I will never use.
NOX is a complete replacement for BlueStacks. For those of you who make the switch to NOX, you WON’T miss:
- BlueStacks 3 Hardware shaming
- BlueStacks being greedy with your Google account and credentials
- “Pika World”, “BlueStacks TV” and other revenue boondoggles disguised as a “feature”
- BlueStacks 3 crappy performance
- BlueStacks 3 no-wallpaper policy
Conclusion
BlueStacks 1 | One of the first of its kind, as an “App Player” and not just a virtual hardware platform, BlueStacks 1 provided much better performance, important for both gaming and development.
BlueStacks 1 had some sharp edges – it crashed often, and wasn’t compatible with some applications, but it was a decent platform. |
|
BlueStacks 2 | Although performance was not as good as BS1, BS2 was rock solid, and compatible with virtually every app.
BS2 came with a ridiculous “BlueStacks TV” companion app, which launched at startup with no way to disable it, even though this feature was openly-reviled within the community. BS2 also “booted up” to an ad screen rather than the home screen, and there was no way to disable the ad screen, running continuously in the background. Most of the annoying features, including the auto-update could be stripped out by manually-editing the config. |
|
BlueStacks 3 | With its automatic creation of a “Pika World” account, BS3’s greediness is the SECOND thing you notice.
Unfortunately, the FIRST thing you notice is the crappy performance. WHO in their right mind decided not to let you customize the wallpaper?? |
|
NOX | So far, NOX is a competent app player with decent performance.
Although there are some “featured” apps that are no-doubt tied to NOX’s revenue stream, none of this is “in your face” like BS3. Although I’ve experienced a couple of crashes, overall, NOX is fairly stable – much more stable than BS1 and probably almost as stable as BS2. Despite a robust set of features, the NOX desktop is no-frills. So far, so good. |