Short answer
Remove any in-app updater and any code path, in your code or an SDK, that downloads dex, JAR or .so files; ship those changes through a Play update instead. Check webviews with a JavaScript interface only load your own HTTPS pages, and update or replace any SDK that does either. Then submit an update.
Rather not fix it yourself? App Fix Ticket starts with a fixed-price diagnosis, then a fixed price for the fix before any fix work.
Why Google Play flagged the app, and the fix
01
The app updates itself outside Google Play
“An app distributed via Google Play may not modify, replace, or update itself using any method other than Google Play's update mechanism.” Google Play, Device and Network Abuse
An in-app updater that downloads and installs a new APK breaks this rule. New versions go through Google Play.
02
The app or an SDK downloads executable code
“an app may not download executable code (such as dex, JAR, .so files) from a source other than Google Play.” Google Play, Device and Network Abuse
Native code and dex files can’t be downloaded from anywhere but Google Play. Code run by a virtual machine or interpreter that has only indirect access to Android APIs, such as JavaScript in a webview, is outside this rule, but interpreted code loaded at run time must not allow potential policy violations.
03
A webview with a JavaScript interface loads untrusted pages
“Apps or third party code (for example, SDKs) containing a webview with added JavaScript Interface that loads untrusted web content (for example, http:// URL)” Google Play, Device and Network Abuse (examples)
A webview that exposes app functions to JavaScript must not load http:// pages or URLs taken from untrusted intents. Limit it to your own HTTPS pages, or remove the interface.
04
Other listed behaviors
“Apps that use the full-screen intent permission to force user interaction with disruptive ads or notifications.” Google Play, Device and Network Abuse (examples)
Also check: the app doesn’t install other apps without consent, block other apps’ ads, offer proxy services to third parties unless that is its primary, user-facing core purpose, bypass power management without being eligible, or use the full-screen intent permission to force interaction with disruptive ads or notifications.
Checked against the vendor’s docs on : Google Play Help: Device and Network Abuse policy.
Rather hand it over?
Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.
- from $450App Fix TicketOne reproducible bug in an existing mobile or web app, diagnosed and fixed.See scope and start
- from $450AI-Built App RescueA Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.See scope and start
“Very responsive, attentive to fixing bugs, and completed the project as needed! Thank you!”
Related: Google Play REQUEST_INSTALL_PACKAGES permission · Google Play foreground service declaration · Google Play Deceptive Behavior policy · Google Play Metadata policy