Mastodon IzzyOnDroid Twitter

Say thanks!
↓ Your product here? ↓
Das Inoffizielle Android-HandbuchAndroid kennenlernen, Tipps & TricksDas Inoffizielle Android-Handbuch
Android kennenlernen, Tipps & Tricks
Buy at Amazon for EUR 16,99
Das Inoffizielle Android SystemhandbuchTiefer ins System einsteigenDas Inoffizielle Android Systemhandbuch
Tiefer ins System einsteigen
Buy at Amazon for EUR 7,00
Die besten Android-AppsDen Androiden austattenDie besten Android-Apps
Den Androiden austatten
Buy at Amazon for EUR 5,00

Android without Google: microG

microG Logo
microG Logo; © MaR-V-iN

NOGAPPS1 already was a wonderful thing – but a little tricky to get installed. With microG2, things became a lot easier, as I found out doing a fresh install of my good old Motorola Milestone 23 (aka Droid 2). And as everything runs that smooth and easy, I thought it´s time to introduce you to it – which I will do with this article.

Android without Google:

Started before this series, but clearly belonging here:

Open Source

Just like the NOGAPPS project, microG is completely Open Source – so everybody can inspect (and contribute to) the source code. This especially means: nothing happens „secretly“; with corresponding knowledge, everything can be verified. An important fact in terms of security and privacy – particularly when dealing with sensitive and personal data, as it is in our case. This not only is a good insurance against possible „backdoors“; it also helps to uncover and fix unintended vulnerabilities. And speaking about open source this also means the developer is not left to itself even with fixes, as other knowledgeable folks (read: other developers) can contribute [patches] for corrections or enhancements, which project members then can simply „accept“ into the codebase. With „open projects“ (not chained to a specific company), as we strive for here with „Android without Google“, such „open-source projects“ of course are especially loved and favored.


Basically, microG consists of three parts:

The description of GsmCore´s current implementation progress in the corresponding XDA thread´s first post also offers us some insight which functionality is covered by the original Google Services. Let me quote:

Ads/Analytics API: Mostly untouched, will never be a real implementation.
Auth API: Mostly complete, some issues may occur.
Cast API: Some initial work done, nothing usable, applications may crash.
Drive API: No work done.
Fitness API: No work done.
Games API: No work done.
Cloud Messaging API: Fully functional, some connectivity issues.
Location Provider API: Fully functional, does not honor AppOps!
Geofencing API: Not yet supported, but applications will not crash.
Maps API: Partly implemented, most applications do not crash, some glitches.
Plus API: Only minimal work against crashing and basic account information.
Wearable API: Some initial work done, nothing usable, applications may crash.

That´s quite a lot of stuff! And considering the project was still marked „Alpha v0.0.1“4, it´s extraordinarily stable. On my Milestone 2, accessing the Playstore using the BlankStore app worked without a glitch, and the same can be said for location services. I didn´t notice any difficulties with the Auth API; Google Cloud Messaging works reliably, Maps API I haven´t tested yet (but expect no trouble with it) – and everything else, sorry, I´m (currently) not especially interested in ;)


This got much easier – or, as I wrote to MaR-V-iN in the mentioned XDA Thread: „worked like a breeze“. Almost no „toying at system level“ with flashing via recovery mode or manual copying (only exception for the latter: BlankStore5).


As requirements, MaR-V-iN mentions:

When those hurdles have been overcome, we can „go to the bone“:


  1. install GmsCore: it´s not available in any Store, but the .apk can be downloaded from Github or the XDA-Thread – and then simply be installed like any other „user app“: either using the package manager on the device, or adb install from your computer (I´ve used the latter)
  2. If you want to use Google Cloud Messaging with other apps supporting it, you need to do the same for GsfProxy – again on the „usual way“
  3. If you want to access the Google Play Store in a „minimalist way“, you can install BlankStore now (for „maximalists“, the original Playstore app is reported to work as well in this context). Otherwise, if you just want to „fake it“ to other apps (so they don´t complain), install FakeStore instead. How to do that is explained at the Github page of FakeGApps. In my case, I simply installed Blankstore using the F-Droid client.8
  4. Now you can find microG Settings in your app drawer. Open it, and tick both check boxes (this is the only supported configuration – with everything else you´re on your own or, as MaR-V-iN puts it: you are free to disable them if you like playing with fire)
  5. Optionally you now can configure the UnifiedNlp backends you´ve installed (see below)
  6. If you want to use those „location services“, make sure you´ve not checked „device only“ in (Device)Settings › Location – or you´ll have only GPS for that
  7. Reboot („If you skip this step, everything unwanted is possible.“)

There are several UnifiedNlp backends available at F-Droid9. I decided for two of them:


Simply let it do its job. Your own direct action is only required if you want to adjust the configuration (e.g. use a different location provider):

microG Settings in the app drawer microG Settings: main page microG: UnifiedNLP Settings microG: UnifiedNLP Backends microG: Settings for LocalGSMNLPBackend
microG Settings: Icon in the app drawer, main page, UnifiedNLP settings incl. Backends and details for LocalGSMNLPBackend (click screenshots for larger images)

These steps I perfomed once. The database for LocalGSMNLPBackend I´ve created using lacells-creator on my Linux-PC (I do that about once per months, plus when I´m going to travel and need additional regions covered), and adb push it to the device.

Should some apps still refuse to be installed (error message „App not installed“, and „ not available“ in LogCat), it might help to additionally install the old MapsAPI (see part 5).10


I´m fascinated: It got much simpler and easier compared to NOGAPPS a year ago, everything I´ve tested worked flawlessly and instantly. In my humble opinion, the term „Alpha“ here only refered to the state of features implemented – but definitely not to stability. Though it might well be this time it was me having luck with my device (I´ve tested the above only on one device yet). However: It looks lile nothing is standing in the way of „degooglification“ of my primary device anymore! (Update: Done, and works perfectly ;) )


  1. A Thread bei XDA-Developers discusses these, offers download links, and help. The code itself is hosted at Github. ↩︎

  2. The successor also has a thread at XDA-Developers↩︎

  3. Manufacturer support for this device ended with Android 2.2 – Thanks to CyanogenMod, I was able to double this number: Now Android 4.4 Kitkat runs on the Milestone 2 ↩︎

  4. At the time I introduced it to my Milestone 2; meanwhile, µG is out of Alpha state ↩︎

  5. And even that you can install using the F-Droid app, if you add the IzzyOnDroid Repo to the client – as Blankstore is in there↩︎

  6. YMMV; this might as well have been due to the selection of apps I´m using. If some of your apps complains about „missing Google Services“, this might be the cause. If an app complains about missing Google Services („Google Play Services, which some of your apps are based upon, are not supported by this device …“), this might be the cause. Installing Xposed and FakeGApps should solve it then. ↩︎

  7. If you´re using a „stock ROM” equipped with Google Apps, you can use Unified NLP (GApps) for location services at least, to minimize the Google tracking ↩︎

  8. Of course follow that by configuring your Google account, as described in part 5 for NOGAPPS ↩︎

  9. a list can be found here ↩︎

  10. Thanks to Wolf for this hint! He continues: „Currently it might happen that the maps background is not shown then. Let´s hope a future version of microG will fix this.“ ↩︎

2015-10-27 (2016-09-15)