mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-12-21 05:44:30 -05:00
113 lines
7.0 KiB
Plaintext
113 lines
7.0 KiB
Plaintext
It turns out some ad/analytics SDKs used by various proprietary Android apps can be disabled/kneecapped by adding meta-data entries to the apps AndroidManifest
|
|
In order for an app to read its meta-data entries from its own AndroidManifest it actually has to go through the getPackageManager() call
|
|
This means we can change the system package parser and simply add these variables to every app
|
|
This would hopefully make usage of proprietary apps more private, granted they are still proprietary and can very well simply ignore these
|
|
|
|
A simple app was created to verify the expected
|
|
05-21 05:24:44.557 4973 4973 D MDT : firebase_analytics_collection_enabled:false
|
|
and it does indeed work!
|
|
|
|
core/java/android/content/pm/PackageParser.java
|
|
parseMetaData()
|
|
line 5526 if (data == null) {
|
|
src/com/android/settings/SecuritySettings.java
|
|
res/xml/security_settings_misc.xml
|
|
<SwitchPreference
|
|
android:key="hamper_analytics"
|
|
android:persistent="false"
|
|
android:title="@string/hamper_analytics"
|
|
android:summary="@string/hamper_analytics_summary"/>
|
|
res/values/strings.xml
|
|
<string name="hamper_analytics">Hamper analytics SDKs</string>
|
|
<string name="hamper_analytics_summary">Aggressively breaks various proprietary tracking SDKs by unsetting their API keys. May cause low-quality proprietary apps to crash.</string>
|
|
|
|
Keywords to find keys
|
|
"meta-data android:name" analytics
|
|
"meta-data android:name" app id
|
|
"meta-data android:name" disable
|
|
"meta-data android:name" gdpr
|
|
"meta-data android:name" location
|
|
"meta-data android:name" opt-out
|
|
"meta-data android:name" private key
|
|
"meta-data android:name" secret key
|
|
|
|
Core - Currently Implemented
|
|
data.putBoolean("android.webkit.WebView.MetricsOptOut", true);
|
|
data.putBoolean("batch_opted_out_by_default", true);
|
|
data.putBoolean("com.ad4screen.no_geoloc", true);
|
|
data.putBoolean("com.facebook.sdk.AutoLogAppEventsEnabled", false);
|
|
data.putBoolean("com.mixpanel.android.MPConfig.UseIpAddressForGeolocation", false);
|
|
data.putBoolean("com.webengage.sdk.android.location_tracking", false);
|
|
data.putBoolean("firebase_analytics_collection_deactivated", true);
|
|
data.putBoolean("firebase_analytics_collection_enabled", false);
|
|
data.putBoolean("firebase_crash_collection_enabled", false);
|
|
data.putBoolean("firebase_performance_collection_deactivated", true);
|
|
data.putBoolean("google_analytics_adid_collection_enabled", false);
|
|
data.putString("com.ad4screen.tracking_mode", "Restricted");
|
|
data.putString("com.sprooki.LOCATION_SERVICES", "disable");
|
|
|
|
Settings
|
|
data.putBoolean("com.bugsnag.android.AUTO_CAPTURE_SESSIONS", false);
|
|
data.putBoolean("com.bugsnag.android.ENABLE_EXCEPTION_HANDLER", false);
|
|
data.putBoolean("com.bugsnag.android.PERSIST_USER_BETWEEN_SESSIONS", false);
|
|
data.putBoolean("com.bugsnag.android.SEND_THREADS", false);
|
|
data.putBoolean("com.followanalytics.message.inapp.enable", false);
|
|
data.putBoolean("com.followanalytics.message.push.enable", false);
|
|
data.putBoolean("com.mixpanel.android.MPConfig.AutoShowMixpanelUpdates", false);
|
|
data.putBoolean("com.mixpanel.android.MPConfig.DisableAppOpenEvent", true);
|
|
data.putBoolean("com.mixpanel.android.MPConfig.DisableDecideChecker", true);
|
|
data.putBoolean("com.mixpanel.android.MPConfig.DisableFallback", true);
|
|
data.putBoolean("com.mixpanel.android.MPConfig.DisableGestureBindingUI", true);
|
|
data.putBoolean("com.mixpanel.android.MPConfig.DisableViewCrawler", true);
|
|
data.putBoolean("com.mixpanel.android.MPConfig.TestMode", true);
|
|
data.putBoolean("engagement:adm:register", false);
|
|
data.putBoolean("engagement:locationReport:lazyArea", false);
|
|
data.putBoolean("engagement:locationReport:realTime:background", false);
|
|
data.putBoolean("engagement:locationReport:realTime", false);
|
|
data.putBoolean("engagement:locationReport:realTime:fine", false);
|
|
data.putBoolean("engagement:log:test", false);
|
|
data.putBoolean("engagement:reportCrash", false);
|
|
data.putBoolean("FYBEnableSSLRewardedVideo", true);
|
|
data.putBoolean("mceSessionEnabled", false);
|
|
data.putBoolean("tapjoy.disable_video_offers", true);
|
|
data.putInteger("CLEVERTAP_USE_GOOGLE_AD_ID", 0)
|
|
data.putInteger("engagement:connection:delay", 2629800);
|
|
|
|
API Keys
|
|
String apiFillerValue = "";
|
|
//String apiFillerValue = "DO_NOT_TRACK";
|
|
data.putString("apptentive_api_key", apiFillerValue);
|
|
data.putString("apptentive_key", apiFillerValue);
|
|
data.putString("apptentive_signature", apiFillerValue);
|
|
data.putString("__ChartboostAir__AppID", apiFillerValue);
|
|
data.putString("__ChartboostAir__AppSignature", apiFillerValue);
|
|
data.putString("com.a0soft.gphone.aTrackDog.webURL", apiFillerValue);
|
|
data.putString("com.ad4screen.facebook_appid", apiFillerValue);
|
|
data.putString("com.ad4screen.partnerid", apiFillerValue);
|
|
data.putString("com.ad4screen.privatekey", apiFillerValue);
|
|
data.putString("com.ad4screen.senderid", apiFillerValue);
|
|
data.putString("com.appsee.ApiKey", apiFillerValue);
|
|
data.putString("com.blueshift.gcm_sender_id", apiFillerValue);
|
|
data.putString("com.bugsnag.android.API_KEY", apiFillerValue);
|
|
data.putString("com.crashlytics.ApiKey", apiFillerValue);
|
|
data.putString("com.facebook.sdk.ApplicationId", apiFillerValue);
|
|
data.putString("com.geouniq.appkey", apiFillerValue);
|
|
data.putString("com.google.android.awareness.API_KEY", apiFillerValue);
|
|
data.putString("com.indooratlas.android.sdk.API_KEY", apiFillerValue);
|
|
data.putString("com.indooratlas.android.sdk.API_SECRET", apiFillerValue);
|
|
data.putString("com.pushwoosh.appid", apiFillerValue);
|
|
data.putString("com.pushwoosh.senderid", apiFillerValue);
|
|
data.putString("com.upsight.app_token", apiFillerValue);
|
|
data.putString("com.upsight.public_key", apiFillerValue);
|
|
data.putString("co.paystack.android.PublicKey", apiFillerValue);
|
|
data.putString("FAID", apiFillerValue);
|
|
data.putString("io.branch.sdk.BranchKey", apiFillerValue);
|
|
data.putString("io.emma.SESSION_KEY", apiFillerValue);
|
|
data.putString("io.fabric.ApiKey", apiFillerValue);
|
|
data.putString("net.hockeyapp.android.appIdentifier", apiFillerValue);
|
|
data.putString("net.hockeyapp.android.appSecret", apiFillerValue);
|
|
data.putString("pilgrim_sdk_key", apiFillerValue);
|
|
data.putString("pilgrim_sdk_secret", apiFillerValue);
|
|
data.putString("presage_key", apiFillerValue);
|
|
data.putString("tkbl-api-key-0", apiFillerValue);
|