[APP] microG GmsCore - lightweight free software clone of Google Play Services

masmoe

Senior Member
May 31, 2013
258
55
0
Jakarta
General update:
Marshmallow support: You need to enable all dynamic permissions manually in system settings first. Please use nightly build or v0.02 release (which will land approximately next week) on marshmallow, older versions are likely to fail.
Further updates: I will switch to more regular updates (~once a month) and "official nightlies" soon™. Both will be provided through a F-Droid compatible repo.




BlankStore should display permissions the same way as Play Store does if installed as user app. If you install BlankStore to /system/priv-app, it will not ask anything at all.
Please note that on Marshmallow, permissions are not granted to apps targeting 6.0 at install time and thus are not shown at installation.


In case you are interested in helping with development, start by skimming through android_external_Wearable and org.microg.gms.wearable. If you have a test device with original GAPPS and Android Wear app available you can try the mitm proxy for android wear over tcp (used to connect emulator) - which is present in the android_external_Wearable repo - to get an idea of how the protocol works. Please join #microg on freenode for further development related questions.


GCM sending is not supported at all, but registering and receiving data is printed to logcat.
Any official update?
 

bilbonotry

Senior Member
Aug 21, 2008
484
160
0
Hello,
I followed previously nogapps project and now I tried microg. I installed Bliss 6.0 without GAPPS, microGCore and proxy apks, xposed framework and fakegapps module and copied playstore apk to /system/priv-app and set permissions. I rebooted, added a google account. At first play store worked quite well, but now I cannot install apps. Location does not work, even after checking in, restoring Mozilla and GSM location service backends with TiBu and redownloaded GSM Location service database. Localisation permission is on for microg and backends apps.
I also had troubles getting UnifiedNlp to work with nogapps on my previous device. I already tried to delete my Google account and recreate it.

Edit : saw in logcat my play store is outdated

Code:
01-26 17:37:54.451   414   922 D ACDB-LOADER: ACDB -> ACDB_CMD_GET_AUDPROC_GAIN_DEP_STEP_TABLE
01-26 17:37:54.451   414   922 D         : ACDBFILE_MGR:Read the devices count as zero, please check the acdb file
01-26 17:37:54.451   414   922 D ACDB-LOADER: ACDB -> AUDIO_SET_AUDPROC_VOL_CAL
01-26 17:37:54.451   414   922 D ACDB-LOADER: ACDB -> send_afe_cal
01-26 17:37:54.451   414   922 D ACDB-LOADER: ACDB -> ACDB_CMD_GET_AFE_COMMON_TABLE
01-26 17:37:54.451   414   922 D         : ACDBFILE_MGR:Read the devices count as zero, please check the acdb file
01-26 17:37:54.451   414   922 D ACDB-LOADER: ACDB -> AUDIO_SET_AFE_CAL
01-26 17:37:54.460   414   922 D audio_hw_primary: select_devices: done
01-26 17:37:54.462   874  1521 W InputMethodManagerService: Window already focused, ignoring focus gain of: [email protected] [email protected], token = [email protected]
01-26 17:37:54.471  1396  1756 D NlpLocBackendHelper: Binding to: Intent { act=org.microg.nlp.LOCATION_BACKEND pkg=org.microg.nlp.backend.ichnaea cmp=org.microg.nlp.backend.ichnaea/.BackendService }
01-26 17:37:54.472   874  1780 W ActivityManager: Permission Denial: Accessing service ComponentInfo{org.microg.nlp.backend.ichnaea/org.microg.nlp.backend.ichnaea.BackendService} from pid=1396, uid=10061 requires android.permission.ACCESS_COARSE_LOCATION
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: java.lang.SecurityException: Not allowed to bind to service Intent { act=org.microg.nlp.LOCATION_BACKEND pkg=org.microg.nlp.backend.ichnaea cmp=org.microg.nlp.backend.ichnaea/.BackendService }
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1334)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at android.app.ContextImpl.bindService(ContextImpl.java:1298)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at android.content.ContextWrapper.bindService(ContextWrapper.java:610)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.AbstractBackendHelper.bind(AbstractBackendHelper.java:78)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.BackendFuser.bind(BackendFuser.java:76)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.ThreadHelper.enable(ThreadHelper.java:70)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.ThreadHelper.reload(ThreadHelper.java:43)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.LocationProviderV2.reload(LocationProviderV2.java:64)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.AbstractLocationService.onHandleIntent(AbstractLocationService.java:78)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at android.os.Handler.dispatchMessage(Handler.java:102)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at android.os.Looper.loop(Looper.java:148)
01-26 17:37:54.474  1396  1756 W NlpLocBackendHelper: 	at android.os.HandlerThread.run(HandlerThread.java:61)
01-26 17:37:54.474  1396  1756 D NlpLocBackendHelper: Binding to: Intent { act=org.microg.nlp.LOCATION_BACKEND pkg=org.fitchfamily.android.wifi_backend cmp=org.fitchfamily.android.wifi_backend/.BackendService }
01-26 17:37:54.474   874   886 W ActivityManager: Permission Denial: Accessing service ComponentInfo{org.fitchfamily.android.wifi_backend/org.fitchfamily.android.wifi_backend.BackendService} from pid=1396, uid=10061 requires android.permission.ACCESS_COARSE_LOCATION
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: java.lang.SecurityException: Not allowed to bind to service Intent { act=org.microg.nlp.LOCATION_BACKEND pkg=org.fitchfamily.android.wifi_backend cmp=org.fitchfamily.android.wifi_backend/.BackendService }
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1334)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at android.app.ContextImpl.bindService(ContextImpl.java:1298)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at android.content.ContextWrapper.bindService(ContextWrapper.java:610)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.AbstractBackendHelper.bind(AbstractBackendHelper.java:78)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.BackendFuser.bind(BackendFuser.java:76)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.ThreadHelper.enable(ThreadHelper.java:70)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.ThreadHelper.reload(ThreadHelper.java:43)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.LocationProviderV2.reload(LocationProviderV2.java:64)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.AbstractLocationService.onHandleIntent(AbstractLocationService.java:78)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at android.os.Handler.dispatchMessage(Handler.java:102)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at android.os.Looper.loop(Looper.java:148)
01-26 17:37:54.475  1396  1756 W NlpLocBackendHelper: 	at android.os.HandlerThread.run(HandlerThread.java:61)
01-26 17:37:54.475  1396  1756 D NlpLocBackendHelper: Binding to: Intent { act=org.microg.nlp.LOCATION_BACKEND pkg=org.fitchfamily.android.gsmlocation cmp=org.fitchfamily.android.gsmlocation/.GSMService }
01-26 17:37:54.475   874  1069 W ActivityManager: Permission Denial: Accessing service ComponentInfo{org.fitchfamily.android.gsmlocation/org.fitchfamily.android.gsmlocation.GSMService} from pid=1396, uid=10061 requires android.permission.ACCESS_COARSE_LOCATION
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: java.lang.SecurityException: Not allowed to bind to service Intent { act=org.microg.nlp.LOCATION_BACKEND pkg=org.fitchfamily.android.gsmlocation cmp=org.fitchfamily.android.gsmlocation/.GSMService }
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1334)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at android.app.ContextImpl.bindService(ContextImpl.java:1298)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at android.content.ContextWrapper.bindService(ContextWrapper.java:610)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.AbstractBackendHelper.bind(AbstractBackendHelper.java:78)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.BackendFuser.bind(BackendFuser.java:76)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.ThreadHelper.enable(ThreadHelper.java:70)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.ThreadHelper.reload(ThreadHelper.java:43)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.LocationProviderV2.reload(LocationProviderV2.java:64)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at org.microg.nlp.location.AbstractLocationService.onHandleIntent(AbstractLocationService.java:78)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:66)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at android.os.Handler.dispatchMessage(Handler.java:102)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at android.os.Looper.loop(Looper.java:148)
01-26 17:37:54.476  1396  1756 W NlpLocBackendHelper: 	at android.os.HandlerThread.run(HandlerThread.java:61)
01-26 17:37:54.478  1396  5746 D NlpLocBackendHelper: Not (yet) bound.
01-26 17:37:54.478  1396  5746 D NlpLocBackendHelper: Not (yet) bound.
01-26 17:37:54.478  1396  5746 D NlpLocBackendHelper: Not (yet) bound.
01-26 17:37:57.650   414   922 D audio_hw_primary: out_standby: enter: stream (0xb5ff7740) usecase(1: low-latency-playback)
01-26 17:37:57.714   414   922 D hardware_info: hw_info_append_hw_type : device_name = speaker
Logcat when exiting unifiednlp settings


Thanks @MaR-V-iN for your awesome work
 
Last edited:

wkwkwk

Senior Member
Jun 28, 2008
359
76
0
Not sure if it depends on updated play services (I don't use WhatsApp), however I tried getting coin app working with this and it can't and requests that play services needs to be updated.

Sent from my angler using XDA Labs
I updated my banking app today and it also says it won't run unless Google services are updated.
Maybe we need to bump the microg version from 8.1.15 to whatever is current?

Edit: saw Marvin's post after replying. Microg 0.2 fixes this, excellent work, as always :)
 
Last edited:
  • Like
Reactions: wis3m0nkey

wis3m0nkey

Senior Member
Sep 2, 2010
761
145
0
I updated my banking app today and it also says it won't run unless Google services are updated.
Maybe we need to bump the microg version from 8.1.15 to whatever is current?

Edit: saw Marvin's post after replying. Microg 0.2 fixes this, excellent work, as always :)
Thanks for pointing that, I'm gonna try again

Sent from my angler using XDA Labs
 

wkwkwk

Senior Member
Jun 28, 2008
359
76
0
Update: ubercab no longer crashes on marshmallow with microg 0.2,nice :)
Unfortunately network location still doesn't work in marshmallow.
 

Tentos

Member
May 19, 2014
15
10
0
I recently upgraded the messenger Threema from 2.53 to 2.6. The developers seem to have changed the behaviour regarding GCM because GCM via GMS Core/microG no longer works. I have added a problem description to GitHub ("Issues with push messages"). As I could not really find anything useful in the logcat, I can only ask at the moment: Does anyone use Threema 2.6 together with microG, and does she/he havy any problems?

Apart from that: A big "Thank you" to the developers, especially @MaR-V-iN !
 

bilbonotry

Senior Member
Aug 21, 2008
484
160
0
OK found the reason for my play store not installing apps, I had afwall+ blocking download manager, my bad. Seems like microg 0.2 and its self check made unified NLP work. Great job
 

intika

Senior Member
Dec 8, 2008
224
235
0
anyone managed to get whatsapp working as it relies on play services? seem to be stuck on looking for backups screen
I have every thing working like this (it could may be help you) also whatsapp is working :
- Xposed Modules : "FakeGapps"
- Xposed Modules : "This App Will Run Without Google Play Services"
- MicroG GSMCore.

I suppose that omni 6.0 still doesn't have signature spoofing feature. I don't want to install xpose, does the needle patch method still works??
Signature spoofing is nice but it's also a big hole in security, i advice you to use the xposed module this module allow the signature spoofing only for microG

Any official update?
v0.2 as already said you can check for futur version
https://github.com/microg/android_packages_apps_GmsCore/releases

Update: ubercab no longer crashes on marshmallow with microg 0.2,nice :)
Unfortunately network location still doesn't work in marshmallow.
am on kitkat cyangenmod, and i can not get network location to work with MicroG GMS but i find a workaround it could may be help you as well
1. first uncheck any nlp provider you installed on the MicroGGMS settings
2. install unifiednlp https://f-droid.org/repository/browse/?fdfilter=nlp&fdid=com.google.android.gms
3. instal xposed module xposedunifiednlp
3. check (select/enable) your nlp providers on the unifiednlp settings (not microg settings)
4. reboot (for me it worked this way i did not check if v0.2 solved the problem)
5. also i found that only real working nlp providers are (nominatim and mozilla location service)
Other alternative solution uninstall everything and copy gmscore.apk to system/priv-app and reboot

OK found the reason for my play store not installing apps, I had afwall+ blocking download manager, my bad. Seems like microg 0.2 and its self check made unified NLP work. Great job
am curious, are you using official playstore apk ?

---------- Post added at 11:10 PM ---------- Previous post was at 11:04 PM ----------

is the update apply by directly install the apk via package installer?
https://github.com/microg/android_packages_apps_GmsCore/releases
apparently the package signature changed... so uninstall old version first and install new version. via package installer
 
Last edited:

MaR-V-iN

Senior Member
Apr 23, 2011
496
2,259
0
Signature spoofing is nice but it's also a big hole in security
I heard this claim quiet a few times, but nobody claiming this ever could provide any details on why this is a security problem at all. I consider security serious and if you are really interested in the details of what signatures are intended to do on Android, what tofu means when it comes to security, possible consequences of the patch and why it does not change the current situation that much, I'd happily share those and discuss them.

i advice you to use the xposed module this module allow the signature spoofing only for microG
Just to point out that small fact: There is no technical way to restrict the signature spoofing to a "vendor" (=microG). However the exposed module will only allow signature spoofing for packages that try to mimic play store or play services.

am on kitkat cyangenmod, and i can not get network location to work with MicroG GMS but i find a workaround it could may be help you as well
1. first uncheck any nlp provider you installed on the MicroGGMS settings
2. install unifiednlp https://f-droid.org/repository/browse/?fdfilter=nlp&fdid=com.google.android.gms
3. instal xposed module xposedunifiednlp
3. check (select/enable) your nlp providers on the unifiednlp settings (not microg settings)
4. reboot (for me it worked this way i did not check if v0.2 solved the problem)
5. also i found that only real working nlp providers are (nominatim and mozilla location service)
Other alternative solution uninstall everything and copy gmscore.apk to system/priv-app and reboot
Copying GmsCore.apk to /system/priv-app should never be necessary and will not have influence on the network location feature. There are some custom ROMs that have broken network location support (which will affect original GAPPS as well, but in a less significant way) and in these cases installing the UnifiedNlp version for GAPPS with the Xposed module for UnifiedNlp can help, as the Xposed module will overwrite any system configuration regarding network location.

https://github.com/microg/android_packages_apps_GmsCore/releases
apparently the package signature changed... so uninstall old version first and install new version. via package installer
The signature of the package should be the same as the prior v0.01 release. Nightlies provided by a third-party will obviously be singed by their key, not mine.
 

mrrocketdog

Senior Member
Oct 27, 2013
4,422
1,962
253
@MaR-V-iN , if ever you had time to write up something on securing android i would most interested. i know your prob busy with RL , but would be interested in your viewpoints/perspective.
yes there is alot of security discussion , but one more perspective would be good.
and again , thank you for the work youve already done & shared. big big help.:thumbup:

[tp_noparse]W2NlbnRlcl1baW1nXWH0dHBzOi8vZGwuZHJvcGJveHVzZXJjb25OZW50LmNvbS91LzlzNjl3OTl3L0ltYWdlcy9TaWduYXR1cmVzL3ZhcmlvdXMvcmRiLmdpZlsvaW1nXVsvY2VudGVyXQ==[/tp_noparse]
 

wis3m0nkey

Senior Member
Sep 2, 2010
761
145
0
I'm currently on version 0.2 and I see a lot of battery drain due to microG. Is it normal (I didn't use 0.1 cause it wasn't working well on marshmallow)? I'm going to try and use microG on need basis (install whenever play service is required), I'll report back how it goes.

Sent from my angler using XDA Labs
 

intika

Senior Member
Dec 8, 2008
224
235
0
I heard this claim quiet a few times, but nobody claiming this ever could provide any details on why this is a security problem at all. I consider security serious and if you are really interested in the details of what signatures are intended to do on Android, what tofu means when it comes to security, possible consequences of the patch and why it does not change the current situation that much, I'd happily share those and discuss them..
As i am not using the playstore, i update my apps from other sources, if i have signature spoofing enabled, if the signature of the new package change i will not notice it.
Let say if i download an update from aptoide, i would let my system check the signature itself and fail to install the new app if it's a weird/malware version.

Just to point out that small fact: There is no technical way to restrict the signature spoofing to a "vendor" (=microG). However the exposed module will only allow signature spoofing for packages that try to mimic play store or play services.
i know :)

Copying GmsCore.apk to /system/priv-app should never be necessary and will not have influence on the network location feature. There are some custom ROMs that have broken network location support (which will affect original GAPPS as well, but in a less significant way) and in these cases installing the UnifiedNlp version for GAPPS with the Xposed module for UnifiedNlp can help, as the Xposed module will overwrite any system configuration regarding network location.
Yes you are right i answered too quickly i forget that the location provider is handled by the framework-res
i just posted what you had on the guide https://github.com/microg/android_packages_apps_UnifiedNlp

The signature of the package should be the same as the prior v0.01 release. Nightlies provided by a third-party will obviously be singed by their key, not mine.
i installed the old version from f-froid and downloaded the new one from github and the signature was not the same... (may be i downloaded my version from somewhere else, but i usually pay attention to from where i get my apps)
 
Last edited:

intika

Senior Member
Dec 8, 2008
224
235
0
XposedGmsCoreUnifiedNlp

XposedGmsCoreUnifiedNlp : New Updated Xposed Module For NLP

Here we go :D

Links :
Sources : https://github.com/intika/XposedGmsCoreUnifiedNlp
Xposed Module : http://repo.xposed.info/module/be.r3w6.intika.xposedunifiednlp

Description :
This is an update of the module XposedUnifiedNlp as UnifiedNlp is now included in MicroG. This module help to integrate MicroG Gms UnifiedNlp into the system even if GAPPS are installed. The main purpose is to allow MicroG as a location provider.
This module was tested on Kitkat CyanogenMoD v4.4.4
WARNING 1 : you can not use this module along with XposedUnifiedNlp you should enable only one of them at a time on Xposed
WARNING 1 : if you still use unifiednlp alone without microg use XposedUnifiedNlp instead
Thanks : a huge thanks to Rawi01 and MaR-V-iN

Description II :
In the "Self-Check" page of "microG Settings" if "System support location provider" is not checked then this module is for you it will solve the problem.

Test :
1. Install microG https://github.com/microg/android_packages_apps_GmsCore/releases
2. Install Mozilla Location Service and enable it on "microG Settings" https://github.com/microg/IchnaeaNlpBackend/releases
3. Install XposedGmsCoreUnifiedNlp and enable it on Xposed
4. Install NLP Test https://apkpure.com/nlp-test/com.redbada.nlp_test
5. Reboot and test the location with NLP Test
 
Last edited:

Primokorn

Recognized Contributor / Themer
Nov 17, 2012
11,409
7,668
253
Hi there,

I'm looking for a Google-free experience so I'm testing this alternative since yesterday and I can say that I'm really happy. Everything works pretty well on my Nexus 5 Android 6.0.1. I have to find new alternatives for some apps and a handy way to download apk files from Google Play for a few apps like Lastpass.
I just wanted to thank you for all what you do for the Android users with this FLOSS software (and your other projects). Kudos!
 

Portgas D. Ace

Recognized Contributor
Jun 12, 2014
4,325
3,107
253
Bergisches Land
I have to find new alternatives for some apps and a handy way to download apk files from Google Play for a few apps like Lastpass.
You could try Raccoon. It's not possible to directly download to your phone, but it's working better than every other app downloader I ever came across. You can also download older versions of the apps with Raccoon according to its developer.

Or you can use Blank Store or Fake Store from the OP.
 
  • Like
Reactions: Primokorn

Primokorn

Recognized Contributor / Themer
Nov 17, 2012
11,409
7,668
253
You could try Raccoon. It's not possible to directly download to your phone, but it's working better than every other app downloader I ever came across. You can also download older versions of the apps with Raccoon according to its developer.

Or you can use Blank Store or Fake Store from the OP.
Raccoon is a Windows client and I have Linux. Wine or PlayOnLinux might help but I'll look for another solution. BlankStore seems to be discontinued.
I do have Fake Store but it doesn't help to download apps AFAIK.