µg Project (Brilliantly described by Izzy on his website)
MaR-V-iN started developing what he named the NOGAPPS package - a set
of applications and frameworks with the goal to fill the gap of
missing gapps package. This project is now continued under the name µg
The main idea of this project was to build a free replacement for all
proprietary parts by Google injected into the Android ecosystem.
This is mainly two components these days, both called Play Services :
the client library play-services, that is injected into applications by their developers and GmsCore ,
the service component used by this library. Play services includes more or less all newer proprietary Android features.
These components are also summarised in 3 parts as:
GmsCore more or less corresponds to the Google Services
GsfProxy complements the core with Google Cloud Messaging for other apps
FakeStore or alternatively Blank Store or even native Playstore
Currently, Android has two APIs for geolocating. One of them being the open source Location API that is implemented by UnifiedNlp , the other one is the proprietary Play Services Location API.
UnifiedNlp alone does not provide any features, but acts as a
middleware for multiple backends. All of them can be downloaded and
updated using F-Droid
Here is a list of backends for geolocation and (reverse) geocoding available:
AppleWifiNlpBackend - backend that uses Apple's service to resolve wifi locations.
OpenWlanMapNlpBackend - backend that uses OpenWlanMap.org to resolve user location.
OpenBmapNlpBackend - backend that uses openBmap to resolve user location.
MozillaNlpBackend - backend that uses the Mozilla Location Service to resolve user location.
PersonalWifiBackend - Local location provider for WiFi APs using on-phone generated database.
LocalGSMLocationProvider - Local opencellid based location provider backend
- LocalGSMBackend - Local location provider for gsm cells with separate database file (lacells.db)
Dedicated XDA thread:
Using apps requiring 'Play Services' APIs
Here is a small list of things you may encounter when you don't have the Google Play Services :
Some apps do not install because of missing Google Maps API.
Some apps fc (force close) at startup bacause of missing Maps API or Play license check issues.
Some apps hardcoded links to several Google Apps and therefor force close or react unexpectedly in certain cases.
Here comes µg GmsCore . This app provides an implementation of some
Play Services .
Currently the main developer focuses his development only on the portions of play services that are used a lot:
LoginService : Allows you to login to a Google account (OAuth)
Google Cloud Messaging : GCM (that replaces C2DM ) is a push notification service that is running in background on your phone. It listens for messages, stored by apps using it, in Google's GCM servers (complemented by GsfProxy)
For this to work, your device needs to be checked-in so that apps can know for which Google account they must send their messages.
Play Services Location API
Maps API (v2) : Translates calls to Google Maps API into calls to OpenScienceMap. Displays a map thanks to a lib developed within the OpenScienceMap project.
Your pure AOSP ROM needs to support µg package signature faking. It is
the case in Omnirom ( https://gerrit.omnirom.org/#/c/8672/ +
https://gerrit.omnirom.org/#/c/13136/ ) and it's coming soon in
Cyanogenmod ( http://review.cyanogenmod.org/#/c/106162/ ).
Fresh builds are available here: http://files.brnmod.rocks/apps/GmsCore/Latest/ . Get
play-services-core-debug.apk and here: https://github.com/microg
F-Droid: now available:microG F-Droid repo
This app creates an account provider named Google . You can setup it
with a google account. Once logged in, µg GmsCore proceeds to device
checkin, unless you disabled it. It creates an unique identifier for
Google services and strips identifying bits other than your Google
account name from this data. For some reasons, it can happen that
checkin expires. Here are some independant tricks you can use to force
new device checkins: Compose
*#*#2432546#*#* (which stands for
##CHECKIN## ) If you don't want to dial or can't because there is no dialer on your device, use an ADB shell as root and type this:
# am broadcast -a android.provider.Telephony.SECRET_CODE -d android_secret_code://2432546
Or... you can just kill/restart µg GmsCore 's process. OS Monitor can
help you to do so.
Getting apps from 'Play Store'
There are many solutions to get applications (APK) without having Google Play Store installed. However most of them rely on alternative markets, or you have to get APKs from a program installed on your computer.
Even the native Playstore still works (I use it with no problems) alternatively there is blankstore.
Blankstore must be installed as a system app.
As Izzy suggested in comments, this is the one of the easiest ways to implement open source Google Play services and works flawlessly
I would like to express my sincere gratitude to Izzy for allowing me to include this updated information on this newer project carried over from NoGApps, and making reference to his material.
- Android without Google: microG
- Using Android without Google Apps