From Newsgroup: comp.mobile.android
PSA: Use adb to check which ad services are running on your Android
Background:
I was digging into why Project Mainline was only updating via
Samsung OTA updates and not via Google Play Store updates, so I
had to re-install adservices and telemetry APKs (which are required
for Mainline bundles), but then I checked to see if ad services
are running. They're not. Whew! I dodged bullet. Did you?
Run this from your desktop or laptop computer:
adb shell ps -A | grep -i ad
Mine didn't report these, but you should look for them.
com.google.android.gms.ads
com.google.android.gms.adservices
com.google.android.adservices.service
com.google.android.adservices.api
com.google.android.gms.measurement
com.google.android.gms.analytic
You don't want them, that's for sure.
Also make sure this reports nothing:
adb shell dumpsys package com.google.mainline.adservices | grep -i provider
<nothing> (Play Services does not expose content://com.google.android.gms.ads.identifier)
Also query the Advertising ID via Play Services:
adb shell settings get global advertising_id
null (i.e., the Advertising ID is disabled)
adb shell settings get secure advertising_id
null (i.e., the Advertising ID is disabled)
Check the "limit ad tracking" flag
adb shell settings get global limit_ad_tracking
null (i.e., the subsystem not active)
adb shell settings get secure limit_ad_tracking
null (i.e., the subsystem not active)
Check whether the Advertising ID provider exists
adb shell pm list providers | grep -i ads
<nothing> (i.e., the Advertising ID provider is not active)
adb shell content query --uri content://com.google.android.gms.ads.identifier
Error while accessing provider:com.google.android.gms.ads.identifier
java.lang.IllegalStateException: Could not find provider: com.google.android.gms.ads.identifier
at com.android.commands.content.Content$Command.execute(Content.java:519)
at com.android.commands.content.Content.main(Content.java:735)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:411)
Check whether Play Services has the Ads Identifier module active.
adb shell dumpsys activity service com.google.android.gms/.chimera.GmsServiceDumpService | grep -i ads
<nothing>
adb shell dumpsys activity service com.google.android.gms/.chimera.container.GmsModuleService | grep -i ads
<nothing>
In both cases, what you do NOT want to see are things like:
ads_identifier
ads.service
com.google.android.gms.ads
GmsServiceId: ADVERTISING_I
If you see nothing, that means:
a. Play Services has not loaded the Ads Identifier module.
b. Because Play Services considers ads disabled.
Given I had to enable adservices & telemetry today to get Mainline to work, luckily, my Android device currently has:
i. No Advertising ID
ii. No ad personalization
iii. No ad tracking
iv. No Topics API
v. No Fledge
vi. No Attribution Reporting
vii. No ad-related Play Services providers
viii. No ad-related processes running
Even though the Mainline AdServices module is installed (because Mainline requires it),
it's dormant, as far as I can tell, as adservicdes is completely inert.
The system literally cannot generate or return an advertising ID (AFAIK).
As far as I know, I have successfully restored the Mainline update pipeline without enabling any advertising functionality. So my device is secure, updatable,
and yet still completely ad-free (AFAICT).
What are your adb results?
--- Synchronet 3.21d-Linux NewsLink 1.2