CLEARTEXT communication not permitted
Error text
java.net.UnknownServiceException: CLEARTEXT communication to api.example.com not permitted by network security policy
Cause
From Android 9 up, http:// requests are blocked by default. The app is trying to reach an unencrypted address.
Step-by-step fix
- Best fix: serve the backend over
https://and change the address. - For local testing only, create
network_security_config.xmland allow the specific domain (10.0.2.2,localhost). - Reference the file in
<application android:networkSecurityConfig=...>. - Do not set
usesCleartextTraffic="true"for all traffic; keep it in the debug build only. - Test the release APK on a real phone: a network error can turn into a white screen there.
Example commands
<!-- res/xml/network_security_config.xml -->
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">10.0.2.2</domain>
</domain-config>
</network-security-config>
<application android:networkSecurityConfig="@xml/network_security_config" ...>How to prevent it
Use HTTPS only in release and keep the http allowance in the debug source set.
Author and license: Nibras Code
- APK will not install
- What is a parse error?
- The keystore is lost
- The signatures do not match
- Package name error
- The APK file is damaged
- Play Protect blocks the app
- The package appears to be invalid
- Not enough storage
- The phone is not compatible
- An older version will not install
- XAPK will not install
- Gradle sync failed
- Could not resolve a dependency
- Duplicate class error
- Manifest merger failed
- Dex limit: 65536 methods
- R8: Missing class
- JDK version mismatch
- SDK location not found
- minSdkVersion conflict
- compileSdk is too low
- EAS build: Gradle failure
- expo prebuild error
- Metro: Unable to resolve module
- Hermes: JS error only in release
- White screen in release
- Red screen: cannot reach Metro
- Expo SDK mismatch
- Capacitor sync error
- Capacitor: white screen
- EAS: keystore and credentials error
- Keystore was tampered with / wrong password
- Wrong key alias or password
- Play: signed with the wrong key
- INSTALL_FAILED_UPDATE_INCOMPATIBLE
- INSTALL_FAILED_VERSION_DOWNGRADE
- INSTALL_FAILED_INSUFFICIENT_STORAGE
- INSTALL_FAILED_NO_MATCHING_ABIS
- Parse error (problem parsing the package)
- "App not installed" error
- Installing an AAB file on a phone
- adb: device "unauthorized"
- adb: device not found
- adb server version mismatch
- Activity class does not exist
- Play: targetSdk level too low
- Play: permissions policy rejection
- Play: 64-bit requirement
- Play: versionCode already used
- ClassNotFound / NoSuchMethod crash
- OutOfMemoryError crash
- SecurityException: permission denied