From 8f70dd779c2c7a85d54a665e4e36f0bd1bead206 Mon Sep 17 00:00:00 2001 From: Nick Manos Date: Tue, 28 May 2024 16:50:42 -0400 Subject: [PATCH] Add build config plugin to set .MainActivity launchMode --- app.config.js | 1 + plugins/withAndroidManifestLaunchModePlugin.js | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 plugins/withAndroidManifestLaunchModePlugin.js diff --git a/app.config.js b/app.config.js index eafacc6cc1..0c3588c67f 100644 --- a/app.config.js +++ b/app.config.js @@ -204,6 +204,7 @@ module.exports = function (config) { ], './plugins/withAndroidManifestPlugin.js', './plugins/withAndroidManifestFCMIconPlugin.js', + './plugins/withAndroidManifestLaunchModePlugin.js', './plugins/withAndroidStylesWindowBackgroundPlugin.js', './plugins/withAndroidStylesAccentColorPlugin.js', './plugins/withAndroidSplashScreenStatusBarTranslucentPlugin.js', diff --git a/plugins/withAndroidManifestLaunchModePlugin.js b/plugins/withAndroidManifestLaunchModePlugin.js new file mode 100644 index 0000000000..bbe0da6932 --- /dev/null +++ b/plugins/withAndroidManifestLaunchModePlugin.js @@ -0,0 +1,18 @@ +const {withAndroidManifest} = require('expo/config-plugins') + +module.exports = function withAndroidManifestLaunchModePlugin(appConfig) { + return withAndroidManifest(appConfig, function (decoratedAppConfig) { + try { + const mainApplication = + decoratedAppConfig.modResults.manifest.application[0] + const mainActivity = mainApplication.activity.find( + elem => elem.$['android:name'] === '.MainActivity', + ) + + mainActivity.$['android:launchMode'] = 'singleTop' + } catch (e) { + console.error(`withAndroidManifestLaunchModePlugin failed`, e) + } + return decoratedAppConfig + }) +}