os-issue-tracker icon indicating copy to clipboard operation
os-issue-tracker copied to clipboard

[GMSCompat] Cannot login to Pinterest with Google (NameNotFoundException: com.google.android.gms)

Open TaeHagen opened this issue 1 year ago • 11 comments

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.

TaeHagen avatar Aug 19 '24 05:08 TaeHagen

You haven't disabled or uninstalled Play services, right?

thestinger avatar Aug 19 '24 06:08 thestinger

No, the Play Store opens and works fine.

TaeHagen avatar Aug 19 '24 06:08 TaeHagen

And Network isn't blocked for either?

thestinger avatar Aug 19 '24 07:08 thestinger

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.

TaeHagen avatar Aug 19 '24 07:08 TaeHagen

The Network permission is granted to both Play Store and Play services though, right?

Is this with a work profile?

thestinger avatar Aug 19 '24 07:08 thestinger

This is with the default profile after setup.

Screenshot_20240819-010920.png

Screenshot_20240819-010911.png

Screenshot_20240819-010904.png

TaeHagen avatar Aug 19 '24 07:08 TaeHagen

Does a reboot fix it?

thestinger avatar Aug 19 '24 07:08 thestinger

Just rebooted; still broken.

TaeHagen avatar Aug 19 '24 07:08 TaeHagen

Same issue.

ar-qun avatar Sep 26 '24 19:09 ar-qun

Same issue also for the app "Notein"

jonas-w avatar Oct 16 '24 05:10 jonas-w

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.

thestinger avatar Oct 16 '24 05:10 thestinger

Same for "Mymind"

flexagoon avatar Jan 06 '25 14:01 flexagoon

~@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~

flexagoon avatar Jan 06 '25 17:01 flexagoon

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.

flexagoon avatar Jan 07 '25 14:01 flexagoon

This has been implemented for our next release.

thestinger avatar Jan 28 '25 20:01 thestinger