diff --git a/lib/common/declarations.d.ts b/lib/common/declarations.d.ts index 077b3c04da..4ab6d4d010 100644 --- a/lib/common/declarations.d.ts +++ b/lib/common/declarations.d.ts @@ -1311,6 +1311,11 @@ interface IDashedOption { * Specifies either a single option key (string), or an array of options that must be followed by option values. */ requiresArg?: any; + + /** + * Set to true to define the option as an array option https://github.com/yargs/yargs/blob/main/docs/api.md#array + */ + array?: any; } /** diff --git a/lib/declarations.d.ts b/lib/declarations.d.ts index ef9a301137..b181acf419 100644 --- a/lib/declarations.d.ts +++ b/lib/declarations.d.ts @@ -581,7 +581,7 @@ interface IAndroidBundleOptions { interface IAndroidOptions { gradlePath: string; - gradleArgs: string; + gradleArgs: string[]; } interface ITypingsOptions { diff --git a/lib/definitions/android-plugin-migrator.d.ts b/lib/definitions/android-plugin-migrator.d.ts index 1836931b0f..f76b0331e7 100644 --- a/lib/definitions/android-plugin-migrator.d.ts +++ b/lib/definitions/android-plugin-migrator.d.ts @@ -11,7 +11,7 @@ interface IAndroidBuildOptions { aarOutputDir: string; tempPluginDirPath: string; gradlePath?: string; - gradleArgs?: string; + gradleArgs?: string[]; } interface IAndroidPluginBuildService { @@ -48,5 +48,5 @@ interface IBuildAndroidPluginData extends Partial { /** * Optional custom Gradle arguments. */ - gradleArgs?: string, + gradleArgs?: string[], } diff --git a/lib/definitions/build.d.ts b/lib/definitions/build.d.ts index ab172d9cf1..50a9b9d184 100644 --- a/lib/definitions/build.d.ts +++ b/lib/definitions/build.d.ts @@ -31,7 +31,7 @@ interface IAndroidBuildData IAndroidSigningData, IHasAndroidBundle { gradlePath?: string; - gradleArgs?: string; + gradleArgs?: string[]; } interface IAndroidSigningData { diff --git a/lib/options.ts b/lib/options.ts index f743f375e7..4b5d0c4991 100644 --- a/lib/options.ts +++ b/lib/options.ts @@ -217,7 +217,7 @@ export class Options { hasSensitiveValue: false, }, gradlePath: { type: OptionType.String, hasSensitiveValue: false }, - gradleArgs: { type: OptionType.String, hasSensitiveValue: false }, + gradleArgs: { type: OptionType.String, hasSensitiveValue: false, array: true }, aab: { type: OptionType.Boolean, hasSensitiveValue: false }, performance: { type: OptionType.Object, hasSensitiveValue: true }, appleApplicationSpecificPassword: { diff --git a/lib/services/android-plugin-build-service.ts b/lib/services/android-plugin-build-service.ts index 03fc61d512..9f47011f92 100644 --- a/lib/services/android-plugin-build-service.ts +++ b/lib/services/android-plugin-build-service.ts @@ -732,7 +732,11 @@ export class AndroidPluginBuildService implements IAndroidPluginBuildService { `-PappResourcesPath=${this.$projectData.getAppResourcesDirectoryPath()}` ]; if (pluginBuildSettings.gradleArgs) { - localArgs.push(pluginBuildSettings.gradleArgs); + const additionalArgs: string[] = [] + pluginBuildSettings.gradleArgs.forEach(arg=>{ + additionalArgs.push(...arg.split(' -P').map((a,i) => i === 0 ? a : `-P${a}`)); + }); + localArgs.push(...additionalArgs); } if (this.$logger.getLevel() === "INFO") { diff --git a/lib/services/android/gradle-build-args-service.ts b/lib/services/android/gradle-build-args-service.ts index d3c5dac1bc..044b156c83 100644 --- a/lib/services/android/gradle-build-args-service.ts +++ b/lib/services/android/gradle-build-args-service.ts @@ -65,7 +65,11 @@ export class GradleBuildArgsService implements IGradleBuildArgsService { `-PappResourcesPath=${this.$projectData.getAppResourcesDirectoryPath()}` ); if (buildData.gradleArgs) { - args.push(buildData.gradleArgs); + const additionalArgs: string[] = [] + buildData.gradleArgs.forEach(arg=>{ + additionalArgs.push(...arg.split(' -P').map((a,i) => i === 0 ? a : `-P${a}`)); + }); + args.push(...additionalArgs); } if (buildData.release) {