Recently, Google made the first batch of Android apps available for Chrome. It was only a matter of time before some clever users gave that power to everyone. Now that time has come. Here's how to install (nearly) any Android app on any operating system.
Obvious Disclaimer: This is still eight million kinds of broken and absolutely nothing here comes with a guarantee. In addition to apps that are in no way officially supported, you're also going to be messing around with low-level stuff in Chrome. This is probably not something you should attempt on a work computer, nor should you expect this to be simple or bug-free. This process is the opposite of both those things. You will need Chrome 37+ for the following guide.
This process is pretty new, so to make things simple, we'll define a few terms first:
ARC: The App Runtime for Chrome (or ARC) is the piece of software that allows Android apps to run in Chrome. In the same way that ART (and the older Dalvik) currently run Android apps in Android itself. By making a modified version of the Android runtime for Chrome, Google can allow developers to add support for Chrome without rebuilding their apps from the ground up.
ARChon Custom Runtime: ARC is officially only designed for Chrome OS at the moment. To get around this, developer vladikoff created the ARChon Custom Runtime, which not only allows Windows, OS X, and Linux to run Android apps, but also removes the limit on how many can be run.
Google Play Services: We've discussed what Google Play Services are in the past. As we've explained before, app developers can plug into these APIs to get pre-written functionality. Think of them as plugins that Google gives to developers for their apps. In the context of this article, we'll be talking about apps that may or may not be supported in Chrome based on whether or not they include functionality from Google Play Services.
Unpacked Extension: Extensions normally come from the Chrome Web Store or prepackaged in a .CRX file. For the purposes of Android apps, we're going to use unpacked extensions. These are folders that contain all the files for an extension (or, in this case, Android APK). They function the same as extensions, but are not wrapped up in a single file.
Step One: Install the ARChon Runtime
Chrome OS uses a specialized runtime that allows Android apps to run natively inside it. This means that it's not an emulator or virtualization stack, but a proper runtime. In layman's terms, Chrome OS is using the same type of engine that Android uses to run software directly. So instead of a Genymotion-like situation where you have a whole Android phone running on your computer, here you can launch Android apps from the Chrome launcher.
To begin, we'll need to download the ARChon Custom Runtime. This is necessary to run Android apps in Windows, OS X, and Linux. While you can technically run Android apps in Chrome OS, you're currently limited to one of four apps. The methods in the rest of this article will run alternative apps by spoofing the signed key on those apps, but if you want to run any app you'd like, download ARChon. Here's how:
Open your extensions page in Chrome by going to Menu > More Tools > Extensions
Enable Developer mode in the top right corner, if it is not already enabled.
Select "Load unpacked extension."
Choose the folder containing the ARChon runtime you unzipped earlier.
The ARChon runtime will now be running as an extension in Chrome. You may see a couple warnings like the following on the extensions page. However, these are normal and shouldn't affect your ability to run Android apps.
Next, you'll need some Android apps to run. This is a little complicated, since Android APKs are not properly packaged for Chrome. However, with a little elbow grease (or some help from your friendly neighborhood internet), you can get some of them to launch. Whether they function properly is an entirely different matter.
Step 2: Install Existing Android Apps
The quickest, most dead-simple way to get some working Android apps is to find some online. Forums like this subreddit are already working on getting some functional. However, this is a far cry from the 1.3 million apps on the Play Store. While most of those will probably remain out of your reach due to incompatibility issues, we'll also look at how to (try to) create your own.
Disclaimer: Distribution of modified apps is, generally speaking, some degree of copyright violation. In practice, there's little distinction between downloading a pre-modified app, and downloading the regular version and modifying it yourself. For this reason, it's unlikely any developer of a free app will be too concerned if you download a pre-modified app to play around with. However, downloading a modified paid app is piracy. Please support developers and don't download modified versions of paid apps without paying for them. And, while it should go without saying, don't write a bad review or criticize the developer if an app is broken in Chrome. You're on your own here.
Some helpful internet users have created a growing list of apps that work in Chrome. You can find download links in that document, or find more in communities currently working on Chrome APKs. Once you have a .zip file containing one of these modified APKs, here's how to install it:
Unzip the file and place the folder (likely named something like "com.twitter.android") in a place you can easily find.
Open the Extensions page in Chrome.
Click "Load unpacked extensions."
Select the folder with the modified APK you downloaded.
The app will now appear in your list of Chrome extensions. If you're a particular fan of Chrome apps, you might also notice that a shortcut has been added to the Chrome app launcher. Depending on how it was packaged, it may have a benign Android icon and the package name instead of a proper app name.
(Optional) Step 3: Repackage Your Own Android Apps for Chrome
There are a few ways to make and tweak APKs so that they can run on Chrome. These methods are also under active development, so if you're reading this later, there may be even easier ways that have been developed to convert them. For the sake of completeness, we'll go over how to install the chromeos-apk tool, as well as how to convert them manually, should you need to do any extra tweaking.
Download the node.js .msi file (not the .exe) from here.
In a command prompt, run the following command: npm install chromeos-apk -g
That's it. You now have the chromeos-apk tool installed on your machine and can call it from any folder in the command line. You can skip ahead to the section below on how to use it.
The chromeos-apk tool was originally developed for Linux and OS X devices. Here's how to install it there:
In a terminal, run the following command: sudo apt-get install npm
(Ubuntu only): Run the following command: sudo apt-get install lib32stdc++6
Unzip the tar.gz file you downloaded from the above link.
Per the README file, open a terminal to the unzipped folder containing node.js. And run the following commands in order:
Run the command: sudo npm install chromeos-apk -g
To make sure you're updated to the latest version (now or in the future), run: sudo npm install -g [email protected]
How to Use the Chromeos-apk Tool
You now have the chromeos-apk tool installed on your machine. To use it, first you'll need to acquire an APK. If you're trying to convert a free app, you can use this tool to pull an APK directly from the Play Store. You can also use this tool to get an APK from an app installed on your phone. Many file managers and backup utilities like ES File Explorer and Titanium Backup can also pull APKs on your device.
Once you have your APK, it's super simple to create a Chrome-friendly version. Open a command prompt or terminal in the folder where you have the APK stored, then do the following:
Run the following command: chromeos-apk [NAME OF APK]
Example: chromeos-apk com.evernote.apk
If prompted, enter the package name of the app. This can usually be found in the URL of the Play Store listing. For example, in this URL, the portion after "?id=" is the package name. In this case, "com.evernote".
You now have a modified APK, ready for Chrome! You can install it using the same instructions in Step 2 earlier in this post. Namely, open your extensions page, click "Load unpacked extension," and choose the folder you just created.
At the time of this writing, the chromeos-apk tool still only gets the app working. It won't remove the key (which allows you to run more than one app at once), nor does it fix the app icon. We'll handle that in the cleanup section.
Alternative: Convert APKs Manually
If you can't (or don't want to) use the command line utility to modify APKs for Chrome usage, you can repackage them yourself. You'll still need to download chromeos-apk from Github here. You'll also need an APK for the app in question, so use the methods described in the section above to get them. Then, follow these steps:
There is a folder named "_template" inside the chromeos-apk tool you downloaded. Make a copy of this somewhere else (preferably near the APK you downloaded).
Copy the APK into "_template > Vendor > chromium > crx". There should be a README file in the correct folder that says "APK goes here." in the correct folder.
Rename the "_template" folder to the package name. The package name can usually be found in the Play Store listing URL after "?id=".
Modify the "manifest.json" file in the main folder of the package. This is considerably easier to do with an app like this.
Add the app's package name (like "com.pandora.android") to the "package name" field.
Add the app's regular name (like "Pandora") to the "name" field.
Delete the entry named "key", which will have a very long, seemingly random string for a value.
Save the modified JSON file as "manifest.json" and replace the existing version with the new, edited one.
Download the app icon from Play Store.
On a Play Store listing page like this one, right-click the icon image.
In the URL bar, change "w300-rw" to "w128". Hit enter.
Right-click the new image and save it as "icon.png" in the main folder of the modified template folder.
Congratulations! You have just manually modified an APK to run in Chrome. The entire process isn't terribly complicated, it's just time consuming if you're altering each app manually.
You'll also note that none of this process involves changing the app itself. The APK sits inside an elaborate wrapper. Either it works or it doesn't. Time will tell if Android apps can or will be targeted for desktop use, but for now the floodgates are open to tinkerers if you really want to try them out.