Android without Google: microG
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:
- 1: Introduction
- 2: ownCloud
- 3: Getting rid of unwanted bloatware
- 4: App Replacements
- 5: Free your Droid!
- 5a: microG (update to NOGAPPS in part 5)
- 6: Self-Experiment (still running)
- 7: Where do I get my apps now?
- 8: Shiftphones – the most easy way to reach your goal!
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.
Components
Basically, microG consists of three parts:
- GmsCore more or less corresponds to the Google Services (see below)
- GsfProxy complements the core with Google Cloud Messaging for other apps
- FakeStore feigns the existence of Google Play Store to other apps, while its alternative Blankstore even provides its most important functionalities (search, install and update apps) in a clean and uncluttered manner (no update notifications, though)
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
Installation
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).
Requirements
As requirements, MaR-V-iN mentions:
- a 4.4+ ROM that is GAPPS-free (in my case: A clean install of CM11 running Android 4.4.4 for the Milestone 2 resp. CM12.1/Android 5.1.1 for my LG P880)
- the ROM must support „signature faking“ – or one alternatively has to use FakeGApps with Xposed. According to MaR-V-iN, the latter should be required with CyanogenMod – according to my tests, this is only needed for GCM to work6
- in case UnifiedNlp was already installed on the device, you need to remove that app (it´s now integrated into GmsCore)7
When those hurdles have been overcome, we can „go to the bone“:
Installing
- 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, oradb install
from your computer (I´ve used the latter) - 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“
- 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
- 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)
- Optionally you now can configure the UnifiedNlp backends you´ve installed (see below)
- 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
- 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:
- LocalGSMNLPBackend obtains your location using cell towers, with their IDs stored in a local OpenCellID database on your device (so no network traffic, no reporting). You can create this database directly on your device using the backend´s configuration page (comfortably, but takes quite a while) – or use lacells-creator or its successor FastLacellsGenerator on your Linux PC and then push it to your device (faster). This app can also be found at Github.
- NominatimGeocoderBackend is the counter-part, to convert coordinates into „location names“ e.g. in your favorite gallery app. Other than LocalGSMNLPBackend, this requires a network connection to work (calculation/lookup takes place on a MapQuest server, based on OpenStreetMap data).
Usage
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):
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 „com.google.android.maps not available“ in LogCat), it might help to additionally install the old MapsAPI (see part 5).10
Verdict
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 )
-
A Thread bei XDA-Developers discusses these, offers download links, and help. The code itself is hosted at Github. ↩︎
-
The successor also has a thread at XDA-Developers. ↩︎
-
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 ↩︎
-
At the time I introduced it to my Milestone 2; meanwhile, µG is out of Alpha state ↩︎
-
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. ↩︎
-
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. ↩︎
-
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 ↩︎
-
Of course follow that by configuring your Google account, as described in part 5 for NOGAPPS ↩︎
-
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.“ ↩︎