[GMSCompat] Cannot login to Pinterest with Google (NameNotFoundException: com.google.android.gms)
Clicking sign in with Google does nothing, despite Play Store being installed in same profile and working fine.
ADB logs printed upon clicking button:
08-18 15:27:23.015 1328 2155 I CredManSysService: starting executeGetCredential with callingPackage: com.pinterest
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: Error getting info for ServiceInfo{c8c1e3a com.google.android.gms.auth.api.credentials.credman.service.GoogleIdService}
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: android.content.pm.PackageManager$NameNotFoundException: com.google.android.gms
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at android.app.ApplicationPackageManager.getApplicationInfoAsUser(ApplicationPackageManager.java:522)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:505)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at android.service.credentials.CredentialProviderInfoFactory.getAvailableSystemServiceInfos(CredentialProviderInfoFactory.java:401)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at android.service.credentials.CredentialProviderInfoFactory.getAvailableSystemServices(CredentialProviderInfoFactory.java:431)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.constructSystemServiceListLocked(CredentialManagerService.java:142)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.getOrConstructSystemServiceListLock(CredentialManagerService.java:247)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.newServiceListLocked(CredentialManagerService.java:182)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at com.android.server.infra.AbstractMasterSystemService.getServiceListForUserLocked(AbstractMasterSystemService.java:608)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.getCredentialProviderServicesLocked(CredentialManagerService.java:328)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.runForUser(CredentialManagerService.java:286)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.initiateProviderSessions(CredentialManagerService.java:438)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.-$$Nest$minitiateProviderSessions(CredentialManagerService.java:0)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService$CredentialManagerServiceStub.prepareProviderSessions(CredentialManagerService.java:699)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService$CredentialManagerServiceStub.executeGetCredential(CredentialManagerService.java:573)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at android.credentials.ICredentialManager$Stub.onTransact(ICredentialManager.java:179)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at android.os.Binder.execTransactInternal(Binder.java:1529)
08-18 15:27:23.018 1328 2155 E CredentialProviderInfoFactory: at android.os.Binder.execTransact(Binder.java:1468)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: Error getting info for ServiceInfo{8376048 com.google.android.gms.auth.api.credentials.credman.service.RemoteService}
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: android.content.pm.PackageManager$NameNotFoundException: com.google.android.gms
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at android.app.ApplicationPackageManager.getApplicationInfoAsUser(ApplicationPackageManager.java:522)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:505)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at android.service.credentials.CredentialProviderInfoFactory.getAvailableSystemServiceInfos(CredentialProviderInfoFactory.java:401)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at android.service.credentials.CredentialProviderInfoFactory.getAvailableSystemServices(CredentialProviderInfoFactory.java:431)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.constructSystemServiceListLocked(CredentialManagerService.java:142)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.getOrConstructSystemServiceListLock(CredentialManagerService.java:247)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.newServiceListLocked(CredentialManagerService.java:182)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at com.android.server.infra.AbstractMasterSystemService.getServiceListForUserLocked(AbstractMasterSystemService.java:608)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.getCredentialProviderServicesLocked(CredentialManagerService.java:328)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.runForUser(CredentialManagerService.java:286)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.initiateProviderSessions(CredentialManagerService.java:438)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.-$$Nest$minitiateProviderSessions(CredentialManagerService.java:0)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService$CredentialManagerServiceStub.prepareProviderSessions(CredentialManagerService.java:699)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService$CredentialManagerServiceStub.executeGetCredential(CredentialManagerService.java:573)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at android.credentials.ICredentialManager$Stub.onTransact(ICredentialManager.java:179)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at android.os.Binder.execTransactInternal(Binder.java:1529)
08-18 15:27:23.019 1328 2155 E CredentialProviderInfoFactory: at android.os.Binder.execTransact(Binder.java:1468)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: Error getting info for ServiceInfo{de406 com.google.android.gms.auth.api.credentials.credman.service.GoogleIdService}
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: android.content.pm.PackageManager$NameNotFoundException: com.google.android.gms
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.app.ApplicationPackageManager.getApplicationInfoAsUser(ApplicationPackageManager.java:522)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:505)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.service.credentials.CredentialProviderInfoFactory.getAvailableSystemServiceInfos(CredentialProviderInfoFactory.java:401)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.service.credentials.CredentialProviderInfoFactory.getAvailableSystemServices(CredentialProviderInfoFactory.java:431)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.constructSystemServiceListLocked(CredentialManagerService.java:142)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.getOrConstructSystemServiceListLock(CredentialManagerService.java:247)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.getCredentialProviderServicesLocked(CredentialManagerService.java:332)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.runForUser(CredentialManagerService.java:286)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.initiateProviderSessions(CredentialManagerService.java:438)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.-$$Nest$minitiateProviderSessions(CredentialManagerService.java:0)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService$CredentialManagerServiceStub.prepareProviderSessions(CredentialManagerService.java:699)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService$CredentialManagerServiceStub.executeGetCredential(CredentialManagerService.java:573)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.credentials.ICredentialManager$Stub.onTransact(ICredentialManager.java:179)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.os.Binder.execTransactInternal(Binder.java:1529)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.os.Binder.execTransact(Binder.java:1468)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: Error getting info for ServiceInfo{c8638f4 com.google.android.gms.auth.api.credentials.credman.service.RemoteService}
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: android.content.pm.PackageManager$NameNotFoundException: com.google.android.gms
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.app.ApplicationPackageManager.getApplicationInfoAsUser(ApplicationPackageManager.java:522)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.app.ApplicationPackageManager.getApplicationInfo(ApplicationPackageManager.java:505)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.service.credentials.CredentialProviderInfoFactory.getAvailableSystemServiceInfos(CredentialProviderInfoFactory.java:401)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.service.credentials.CredentialProviderInfoFactory.getAvailableSystemServices(CredentialProviderInfoFactory.java:431)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.constructSystemServiceListLocked(CredentialManagerService.java:142)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.getOrConstructSystemServiceListLock(CredentialManagerService.java:247)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.getCredentialProviderServicesLocked(CredentialManagerService.java:332)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.runForUser(CredentialManagerService.java:286)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.initiateProviderSessions(CredentialManagerService.java:438)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService.-$$Nest$minitiateProviderSessions(CredentialManagerService.java:0)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService$CredentialManagerServiceStub.prepareProviderSessions(CredentialManagerService.java:699)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at com.android.server.credentials.CredentialManagerService$CredentialManagerServiceStub.executeGetCredential(CredentialManagerService.java:573)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.credentials.ICredentialManager$Stub.onTransact(ICredentialManager.java:179)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.os.Binder.execTransactInternal(Binder.java:1529)
08-18 15:27:23.020 1328 2155 E CredentialProviderInfoFactory: at android.os.Binder.execTransact(Binder.java:1468)
08-18 15:27:23.022 3884 4176 I CredManProvService: GetCredentialResponse error returned from framework
Thank you, please fix as I can't log in to my Pinterest account at the moment.
You haven't disabled or uninstalled Play services, right?
No, the Play Store opens and works fine.
And Network isn't blocked for either?
I'm sending this from the phone and have no issues browsing the web, everything seems fine yet sign in with Google still does nothing and prints same error.
The Network permission is granted to both Play Store and Play services though, right?
Is this with a work profile?
This is with the default profile after setup.
Does a reboot fix it?
Just rebooted; still broken.
Same issue.
Same issue also for the app "Notein"
It's caused by lack of privileged access and is currently expected. We'd need to figure out a way to implement a compatibility layer for this specific approach.
Same for "Mymind"
~@thestinger I want to try working on this issue, but I don't really have any prior experience, so I have some questions.~
~The way I assume this can be solved is:~
~1. Add a checkServiceWhitelist function (and proper IPC intents) into GmsCompat, which would use GmsCompatConfig to get the list of services that should be publicly accessible~
~2. Patch upstream PackageManager's package resolution code to add a special case if GmsCompat is installed and the requested name is whitelisted, in which case the name would be resolved as if it was a system app~
~Does an approach like this make sense?~
~Alternatively, CredentialManager could be patched to reroute google sign in requests to GmsCompat, which would implement a proper shim. This approach would be less versatile but potentially more secure because the scope would be limited to those specific requests~
Upon further inspection of the AOSP codebase, it seems like there's a much simpler solution. I'll try setting up the dev environment and fixing this.
This has been implemented for our next release.