-
-
Notifications
You must be signed in to change notification settings - Fork 43
Expand file tree
/
Copy pathgmscompat_config
More file actions
359 lines (293 loc) · 12.1 KB
/
Copy pathgmscompat_config
File metadata and controls
359 lines (293 loc) · 12.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
[[flags]]
[com.google.android.apps.wearables.maestro.companion#com.google.android.apps.wearables.maestro.companion]
# Force Maestro's standalone UI path. On Pixel devices, Maestro normally
# redirects Pixel Buds controls to Android's Bluetooth device details page when this
# flag is false. That Settings path depends on Play services having completed the
# Fast Pair flow, stored Fast Pair account-key state for the Buds, and written
# Bluetooth metadata key 25 (METADATA_FAST_PAIR_CUSTOMIZED_FIELDS) so Settings can
# bind GmsCore's DeviceSettings config provider and then the returned per-setting
# provider endpoints. Bluetooth metadata + pairing management is currently privileged
MaestroApp__standalone_mode true
[com.google.android.gms]
# disable AnomalyConfigIntentOperation, which crashes due to unavailable StatsManager
45681197 false
# DeviceDoctor kills GmsCore process from an UncaughtExceptionHandler, which hides the crash from
# the GmsCompat crash reporting system
DeviceDoctor__devicedoctor_enabled false
[com.google.android.gms.enpromo]
# enpromo is a GmsCore module that shows a notification that prompts the user to enable
# Exposure Notifications (en). It needs location access to determine which location-specific app
# needs to be installed for Exposure Notifications to function.
# Location permission can't be revoked for privileged GmsCore, it being revoked leads to a crash
# (location access being disabled is handled correctly, but spoofing it would break other functionality)
PromoFeature__enabled perms-none-of android.permission.ACCESS_COARSE_LOCATION false
[com.google.android.gms.fido]
# Note that the rest of dynamic FIDO flags are forced to their default values by force_default_flags
# below for increased stability
Passkeys__client_data_hash_override_for_security_keys true
[com.google.android.gms.personalsafety]
# requires privileged LOCK_DEVICE permission, though other Phenotype flags can also make it fallback
# to DevicePolicyManager lockNow
AutoLockSettings__enable_theft_protection_default_on_notification false
[com.google.android.metrics]
# controls access to privileged StatsManager#getRegisteredExperimentIds()
add_external_experiment_ids false
[com.google.android.gms.advancedprotection#com.google.android.gms]
# disable Advanced Protection, as privileged permissions are needed to enable advanced protection
# via the AdvancedProtectionService. Many of the device protection features are already implemented
# in GrapheneOS.
45673629 false
AdvancedProtection__enable_titanium_enrollment_notification false
[com.google.android.gms.nearby]
# disable WearableDataListenerService, it needs privileged permissions
FastPairFeature__enable_wearable_service false
# use PackageManager#getNameForUid() instead of PackageManager#getPackagesForUid(), the latter needs
# a shim that is currently absent
FastPairConfig__sass_get_package_name_from_playback_configuration false
[com.google.android.gms.cast]
# Prevent crashes in GmsCore caused by calling ConnectivityManager#registerNetworkCallback too many
# times when it has no INTERNET permission (there's a OS-enforced limit on the number of these callbacks).
# Likely a regression, newer and older versions of GmsCore don't have this issue.
# This flag makes it use a deprecated BroadcastReceiver instead.
MdnsConfigs__use_connectivity_manager_for_wifi_monitor_if_possible false
# CAST_CONNECTION_NOTIFY dialogs are incompatible with gmscompat code that shows a notification
# prompt on background activity starts, because startActivity() calls are used for both showing and
# auto-dismissing them. These dialogs are disabled by default, but were enabled with a PhenotypeFlag
# update.
# See https://discuss.grapheneos.org/d/1263-notification-says-google-play-services-needs-to-show-a-screen
ReceiverControlChannelFeatures__enable_user_accept_dialogs false
[com.google.android.gms.people]
# controls access to ContactsContract$SimContacts#getSimAccounts()
AccountCategoriesFeature__use_cp2_sim_account_settings perms-none-of android.permission.READ_CONTACTS false
FsaDeviceContactsMoveFeature__large_contact_list_device_opt_in_disallowed perms-none-of android.permission.READ_CONTACTS false
[com.google.android.gms.security]
# disable TelecomTaskService, it needs privileged MODIFY_PHONE_STATE permission
enable_telecom_feature false
[com.google.android.gms.update]
# OS update service
# This flag is replaced with the gservices update_service_enabled flag since GmsCore 24.31
service_enabled false
update_install_enable_resume_on_reboot false
[com.google.android.gms.wallet]
# hiding overlay windows requires a privileged permission
BenderLaunchFeatures__enable_set_hide_overlay_windows false
[com.google.android.westworld]
# seems to be an OS stats/analytics service, requires privileged permissions to function
enabled false
is_enabled false
metrics_enabled false
metadata_enabled false
[com.google.android.gms.auth_account]
# needed to prevent GmsCore from blocking Google account removal due to lacking a privileged integration into OS
BugFixFeatures__fix_frp_in_r false
[com.google.android.location]
# these flags are needed to prevent GmsCore from ignoring results of the legacy WifiManager#startScan()
# method, which doesn't have an unprivileged modern version. It's used for location estimation based
# on nearby Wi-Fi access points
d_psl false
fwm true
[com.google.android.gms.kidssettings#com.google.android.gms]
SeparateApkFeature__disable_separate_apk_if_not_used false
[com.google.android.projection.gearhead]
# prevent Android Auto from trying to query a nonexistent Assistant service in the Google app
Assistant__dodgeboost_initial_handshake_enabled true
[gservices]
# make sure PhenotypeFlags are overridable by Gservices flags. Overriding Play Store (finsky) PhenotypeFlags
# directly is much more complex than overriding Gservices flags.
finsky.kill_switch_phenotype_gservices_check set-string 0
# disable GmsCore OS update service
update_service_enabled set-string 0
[[stubs]]
[android.app.ActivityManager]
addOnUidImportanceListener void
# 2 is ProcessState.IMPORTANCE_TOP
getPackageImportance int 2
[android.app.admin.DevicePolicyManager]
isDeviceProvisioned true
isDeviceProvisioningConfigApplied true
getDeviceOwnerComponentOnAnyUser null
getDeviceOwnerNameOnAnyUser nullString
getProfileOwnerNameAsUser nullString
notifyPendingSystemUpdate void
[android.app.backup.BackupManager]
isBackupEnabled false
isBackupServiceActive false
[android.app.supervision.SupervisionManager]
isSupervisionEnabled false
[android.app.usage.UsageStatsManager]
# 10 is STANDBY_BUCKET_ACTIVE
getAppStandbyBucket int 10
[android.bluetooth.BluetoothA2dp]
setConnectionPolicy false
# -1 is CONNECTION_POLICY_UNKNOWN
getConnectionPolicy int -1
[android.bluetooth.BluetoothAdapter]
disable false
enable false
# 20 is SCAN_MODE_NONE
getScanMode int 20
getName nullString
# 02:00:00:00:00:00 is DEFAULT_MAC_ADDRESS
getAddress String 02:00:00:00:00:00
listenUsingInsecureL2capChannel throw java.io.IOException
getProfileProxy false
registerBluetoothConnectionCallback default
unregisterBluetoothConnectionCallback default
[android.bluetooth.BluetoothDevice]
getIdentityAddress default
getMetadata default
setMetadata default
setPairingConfirmation default
setSilenceMode default
[android.bluetooth.BluetoothHapClient]
registerCallback void
unregisterCallback void
[android.bluetooth.BluetoothLeAudio]
registerCallback void
unregisterCallback void
[android.bluetooth.BluetoothLeBroadcast]
registerCallback void
unregisterCallback void
[android.bluetooth.BluetoothLeBroadcastAssistant]
getConnectedDevices emptyList
registerCallback void
unregisterCallback void
[android.bluetooth.BluetoothManager]
openGattServer default
[android.bluetooth.le.BluetoothLeAdvertiser]
startAdvertisingSet default
[android.content.ContentResolver]
registerContentObserver void
[android.content.pm.verify.domain.DomainVerificationManager]
queryValidVerificationPackageNames emptyList
[android.hardware.usb.UsbManager]
getPorts emptyList
grantPermission void
setCurrentFunctions void
[android.location.LocationManager]
getLastKnownLocation null
registerGnssMeasurementsCallback false
registerGnssStatusCallback false
setExtraLocationControllerPackage void
setExtraLocationControllerPackageEnabled void
[android.media.AudioManager]
muteAwaitConnection void
getMutingExpectedDevice null
registerMuteAwaitConnectionCallback void
unregisterMuteAwaitConnectionCallback void
[android.media.MediaRouter2]
getInstance null
[android.media.session.MediaSessionManager]
getActiveSessions emptyList
addOnActiveSessionsChangedListener void
[android.net.wifi.WifiManager]
getPrivilegedConfiguredNetworks emptyList
getAllMatchingWifiConfigs emptyList
getMatchingOsuProviders emptyMap
getMatchingPasspointConfigsForOsuProviders emptyMap
getSoftApConfiguration null
getCurrentNetwork null
reconnect false
[android.nfc.NfcAdapter]
disable false
[android.os.DropBoxManager]
getNextEntry null
[android.os.SystemVibratorManager$SingleVibrator]
addVibratorStateListener void
[android.os.UserManager]
getSeedAccountOptions null
getUserName String Owner
getUserRestrictionSources emptyList
isMainUser true
[android.safetycenter.SafetyCenterManager]
isSafetyCenterEnabled false
[android.security.advancedprotection.AdvancedProtectionManager]
getAdvancedProtectionFeatures emptyList
setAdvancedProtectionEnabled void
logDialogShown void
[android.security.intrusiondetection.IntrusionDetectionManager]
disable void
[android.security.keystore.recovery.RecoveryController]
initRecoveryService void
setServerParams void
[android.telecom.TelecomManager]
getAllPhoneAccountHandles emptyList
getCallCapablePhoneAccounts emptyList
getPhoneAccount null
getSelfManagedPhoneAccounts emptyList
getUserSelectedOutgoingPhoneAccount null
placeCall void
[android.telephony.SubscriptionManager]
getActiveSubscriptionIdList emptyIntArray
getPhoneNumber emptyString
[android.telephony.TelephonyManager]
getDeviceId nullString
getImei nullString
getMeid nullString
# 0 is NETWORK_TYPE_UNKNOWN
getDataNetworkType int 0
getNetworkType int 0
getVoiceNetworkType int 0
# 0 is CALL_STATE_IDLE
getCallState int 0
getCallStateForSubscription int 0
getSimSerialNumber nullString
getUiccSlotsInfo nullArray
getSubscriberId nullString
getLine1Number nullString
getAllCellInfo emptyList
isIccLockEnabled false
getGroupIdLevel1 nullString
unregisterTelephonyCallback void
getServiceState null
getVoiceMailNumber nullString
getIccAuthentication nullString
[com.android.internal.gmscompat.sysservice.GmcPackageManager]
getPackagesForUid nullArray
[[versionMap]]
# section name is gmscompat version, section contents are max supported versions of GmsCore and Play Store
[1000]
# GmsCore 24.22 requires GmsCompat 1008
242199999 84459999
[1008]
245099999 84459999
[[stubs_12.1]]
[android.bluetooth.BluetoothDevice]
getMetadata null
setMetadata false
setSilenceMode false
[android.bluetooth.BluetoothAdapter]
registerBluetoothConnectionCallback false
unregisterBluetoothConnectionCallback false
[android.content.ContextWrapper]
sendBroadcastAsUser int 0
[android.os.UserManager]
isUserOfType false
[[GmsServiceBroker_self_permission_bypass]]
[1003]
# DROID_GUARD (25) service can work without the Phone permission, despite requiring it to be granted.
# This service is used for the Play Integrity API.
25 android.permission.READ_PHONE_STATE
[[force_default_flags]]
[com.google.android.gms.fido]
.+
[[force_ComponentEnabledSettings]]
[com.google.android.gms]
# causes chain crashes on Pixel Tablet due to the missing Dock Manager app
disable com.google.android.gms.homegraph.PersistentListenerService
disable com.google.android.gms.update.SystemUpdateGcmTaskService
disable com.google.android.gms.update.SystemUpdatePersistentListenerService
disable com.google.android.gms.update.SystemUpdateService
disable com.google.android.gms.update.UpdateJobService
[[spoof_self_permission_checks_v2]]
[com.google.android.projection.gearhead]
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ASSOCIATE_COMPANION_DEVICES
android.permission.BLUETOOTH_CONNECT
android.permission.BLUETOOTH_SCAN
android.permission.CALL_PHONE
android.permission.MANAGE_USB
android.permission.READ_PHONE_STATE
android.permission.READ_PRIVILEGED_PHONE_STATE
android.permission.RECORD_AUDIO