From 4bb9d253954cc961bc54a4fdbcf7c1bce33bc9d4 Mon Sep 17 00:00:00 2001 From: Rui Moreira Mendes Date: Thu, 13 Aug 2026 15:36:51 +0100 Subject: [PATCH] fix(cli): replace usesCleartextTraffic with network-security-config --- cli/src/cordova.ts | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/cli/src/cordova.ts b/cli/src/cordova.ts index 343d1695aa..7f29a05b4f 100644 --- a/cli/src/cordova.ts +++ b/cli/src/cordova.ts @@ -867,14 +867,30 @@ export async function writeCordovaAndroidManifest( }); }); const cleartextString = 'android:usesCleartextTraffic="true"'; - const cleartextValue = - (cleartext || config.app.extConfig.server?.cleartext) && !applicationXMLAttributes.includes(cleartextString) - ? cleartextString + const networkSecurityConfigValue = + cleartext || config.app.extConfig.server?.cleartext || applicationXMLAttributes.includes(cleartextString) + ? 'android:networkSecurityConfig="@xml/network_security_config"' : ''; + const networkSecurityConfigDir = join(config.android.cordovaPluginsDirAbs, 'src', 'main', 'res', 'xml'); + const networkSecurityConfigPath = join(networkSecurityConfigDir, 'network_security_config.xml'); + if (networkSecurityConfigValue) { + await ensureDir(networkSecurityConfigDir); + await writeFile( + networkSecurityConfigPath, + ` + + + +`, + ); + } else if (await pathExists(networkSecurityConfigPath)) { + await remove(networkSecurityConfigPath); + } + let content = ` - + !attr.includes('android:usesCleartextTraffic')).join('\n')} ${networkSecurityConfigValue}> ${applicationXMLEntries.join('\n')} ${rootXMLEntries.join('\n')}