diff --git a/cli/src/android/run.ts b/cli/src/android/run.ts index ed688f22d..8551afb05 100644 --- a/cli/src/android/run.ts +++ b/cli/src/android/run.ts @@ -54,7 +54,7 @@ export async function runAndroid( config.android.appDir }/build/outputs/apk${runFlavor !== '' ? '/' + runFlavor : ''}/debug`; - const apkName = parseApkNameFromFlavor(runFlavor); + const apkName = await parseApkNameFromFlavor(runFlavor, pathToApk); const apkPath = resolve(pathToApk, apkName); const nativeRunArgs = ['android', '--app', apkPath, '--target', target.id]; diff --git a/cli/src/common.ts b/cli/src/common.ts index 1da9d1b21..fe776392b 100644 --- a/cli/src/common.ts +++ b/cli/src/common.ts @@ -536,7 +536,15 @@ export async function checkJDKMajorVersion(): Promise { } } -export function parseApkNameFromFlavor(flavor: string): string { +export async function parseApkNameFromFlavor(flavor: string, pathToApk: string): Promise { + if (!flavor) { + const metadataPath = join(pathToApk, 'output-metadata.json'); + if (await pathExists(metadataPath)) { + const metadataContent = await readJSON(metadataPath); + if (metadataContent && metadataContent.elements && metadataContent.elements.length && metadataContent.elements[0].outputFile) + return metadataContent.elements[0].outputFile; + } + } let convertedName = flavor.replace(/([A-Z])/g, '-$1').toLowerCase(); if (convertedName.startsWith('-')) convertedName = convertedName.replace('-', ''); diff --git a/cli/src/config.ts b/cli/src/config.ts index b7e273518..84246fa71 100644 --- a/cli/src/config.ts +++ b/cli/src/config.ts @@ -221,7 +221,7 @@ async function loadAndroidConfig( if (extConfig.android?.flavor) { apkPath = `${apkPath}/${extConfig.android?.flavor}`; } - const apkName = parseApkNameFromFlavor(flavor); + const apkName = await parseApkNameFromFlavor(flavor, `${platformDirAbs}/${apkPath}debug`); const buildOutputDir = `${apkPath}/debug`; const cordovaPluginsDir = 'capacitor-cordova-android-plugins'; const studioPath = lazy(() => determineAndroidStudioPath(cliConfig.os));