See important disclosures including my related financial interests.| Ben Edelman
This post is part of AppLovin Nonconsensual Installs. See important disclosures.| Ben Edelman
This post is part of AppLovin Nonconsensual Installs.| Ben Edelman
This post is part of AppLovin Nonconsensual Installs. See important disclosures. AppLovin’s “Array” page (now removed, but see Archive.org preserved copy) describes “seamless installs” in which “users choose whether to install.” The page depicts a three-step installation sequence: (1) AppLovin presents an ad, (2) AppLovin presents a landing page with an oversized bold blue “Install” … Continue reading "Interpreting AppLovin statements to the public about user “choice...| Ben Edelman
This post is part of AppLovin Nonconsensual Installs. See important disclosures. It is by no means assured that AppLovin will perform an automatic installation of an app featured in a given ad. For one, the Apphub/Array package must be present and functional, and must have an install partner. Without these, there can be no automatic … Continue reading "AppLovin: Server-side kill switch — automatic installations occur only if a token is provided"| Ben Edelman
This post is part of AppLovin Nonconsensual Installs > Execution Path. See important disclosures. T-Mobile’s InstallerHelper sends execution to the separate APK com.tmobile.dm.cm: public final InstallerHelperResult startInstall(String absPath, String packageName, boolean shortcut, int requestedScreen, int colX, int rowY, String triggerType, String className, String action, String extraData, String receiverPermission) throws RemoteException { AbstractC4226k.m6579e(absPath, "absPath"); Abstra...| Ben Edelman
This post is part of AppLovin Nonconsensual Installs > Execution Path. See important disclosures. In DirectDownloadActivity, I presented code in which execution flows to DirectDownloadMainFragment C3374l2. Then C3374l2’s constructor creates C3298a3: // DirectDownloadMainFragment public C3374l2(C1947f c1947f, C3743e c3743e, InterfaceC3372l0 interfaceC3372l0, C1059x c1059x, C1059x c1059x2, boolean z) { ... this.f10629x0 = c1947f; this.f10630y0 = c3743e; this.f10631z0 … Continue reading "App...| Ben Edelman
This post is part of AppLovin Nonconsensual Installs > Execution Path. See important disclosures. The WebViewClient C4785e() constructor prepares the web view. Where a response includes references to resources in com.applovin.array.resources, or otherwise within the arrayList2 list, local resource interception substitutes resources from the APK’s Resources folder. public C4785e(ArrayList arrayList, InterfaceC4868a interfaceC4868a, Resources resources) { … Continue reading "AppLovin Execut...| Ben Edelman
This post is part of AppLovin Nonconsensual Installs > Execution Path. See important disclosures. DirectDownloadActivity.onCreate() passes execution to onAppDetailsCreate(): public void onCreate(Bundle savedInstanceState) { if (isPreferences()) { onPreferencesCreate(savedInstanceState); } else { onAppDetailsCreate(savedInstanceState); } Next onAppDetailsCreate() passes execution to setupAppDetailsFragment(): private final void onAppDetailsCreate(Bundle savedInstanceState) { AbstractC3305b3.f1...| Ben Edelman
This post is part of AppLovin Nonconsensual Installs > Execution Path. See important disclosures. Receiving 6 as its first parameter, AppHub’s onTransact() selects the corresponding case of the switch, passing execution to AppHub’s showDirectDownloadAppDetailsWithExtra(). public boolean onTransact(int i, Parcel parcel, Parcel parcel2, int i2) throws RemoteException { ... switch (i) { ... case 6: showDirectDownloadAppDetailsWithExtra(parcel.readString(), … Continue reading "AppLovin Exec...| Ben Edelman
This post is part of AppLovin Nonconsensual Installs > Execution Path. See important disclosures. First, the AppHub AndroidManifest.xml creates a service called AppHubService, which other apps connect to: <service android:name="com.applovin.oem.p431am.android.external.AppHubService" android:exported="true"> <intent-filter> <action android:name="com.applovin.am.intent.action.APPHUB_SERVICE"/> <category android:name="android.intent.category.DEF...| Ben Edelman
This post is part of AppLovin Nonconsensual Installs. See important disclosures.| Ben Edelman
Ben is an independent researcher and consultant — combining software engineering, law, and economics to explore and improve some of the Internet’s biggest problems. Ben was previously the Chief Economist for Web Experiences, Strategy, and Policy at Microsoft, where he advised the company at the intersection of software, economics, and public policy. From 2007 to 2018, Ben was a faculty member at Harvard Business School, where he studied and taught about the economics of online markets ...| www.benedelman.org
See important disclosures including my related financial interests.| Ben Edelman