From 6b14cde101a739a223665ad25c812e4ddf72cb41 Mon Sep 17 00:00:00 2001 From: jcesarmobile Date: Tue, 14 Jan 2025 17:39:33 +0100 Subject: [PATCH] chore(cli): make migrate add navigation to configChanges (#7828) --- cli/src/tasks/migrate.ts | 47 +++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/cli/src/tasks/migrate.ts b/cli/src/tasks/migrate.ts index 305951c8c..789af9d67 100644 --- a/cli/src/tasks/migrate.ts +++ b/cli/src/tasks/migrate.ts @@ -172,6 +172,11 @@ export async function migrateCommand(config: Config, noprompt: boolean, packagem } if (allDependencies['@capacitor/android'] && existsSync(config.android.platformDirAbs)) { + // AndroidManifest.xml add navigation" + await runTask(`Migrating AndroidManifest.xml by adding navigation to Activity configChanges.`, () => { + return updateAndroidManifest(join(config.android.srcMainDirAbs, 'AndroidManifest.xml')); + }); + const gradleWrapperVersion = getGradleWrapperVersion( join(config.android.platformDirAbs, 'gradle', 'wrapper', 'gradle-wrapper.properties'), ); @@ -594,6 +599,23 @@ function setAllStringIn(data: string, start: string, end: string, replacement: s return result; } +async function updateAndroidManifest(filename: string) { + const txt = readFile(filename); + if (!txt) { + return; + } + + if (txt.includes('navigation')) { + return; // Probably already updated + } + const replaced = txt.replace( + 'android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode"', + 'android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode|navigation"', + ); + + writeFileSync(filename, replaced, 'utf-8'); +} + export async function patchOldCapacitorPlugins(config: Config): Promise { const allPlugins = await getPlugins(config, 'android'); const androidPlugins = await getAndroidPlugins(allPlugins); @@ -628,28 +650,3 @@ export async function patchOldCapacitorPlugins(config: Config): Promise }), ); } - -async function removeKey(filename: string, key: string) { - const txt = readFile(filename); - if (!txt) { - return; - } - let lines = txt.split('\n'); - let removed = false; - let removing = false; - lines = lines.filter((line) => { - if (removing && line.includes('')) { - removing = false; - return false; - } - if (line.includes(`${key}