run static method

Future<String> run({
  1. required String projectRoot,
  2. required String command,
  3. required String aabOutputPath,
  4. required String version,
  5. required String buildNumber,
  6. required AndroidSigningSession signing,
  7. required AndroidSigningCredentials credentials,
  8. String? flavor,
  9. ProcessRunner processRunner = const SystemProcessRunner(),
})

Builds and verifies an AAB signed by the configured upload key.

Implementation

static Future<String> run({
  required String projectRoot,
  required String command,
  required String aabOutputPath,
  required String version,
  required String buildNumber,
  required AndroidSigningSession signing,
  required AndroidSigningCredentials credentials,
  String? flavor,
  ProcessRunner processRunner = const SystemProcessRunner(),
}) async {
  final managedCommand = StringBuffer(command)
    ..write(
      r'''
 \
--build-name "$SMF_PLATFORM_VERSION" \
--build-number "$SMF_BUILD_NUMBER"'''
          .trimLeft(),
    );
  if (flavor != null) {
    managedCommand.write(
      r'''
 \
--flavor "$SMF_FLAVOR"'''
          .trimLeft(),
    );
  }
  final environment = <String, String>{
    'SMF_PLATFORM': 'android',
    'SMF_PLATFORM_VERSION': version,
    'SMF_BUILD_NUMBER': buildNumber,
    'SMF_FLAVOR': ?flavor,
  };
  await SystemProcessRunner.shell(
    managedCommand.toString(),
    options: RunOptions(
      workingDirectory: projectRoot,
      environment: environment,
    ),
    processRunner: processRunner,
  );
  final aabPath = await findArtifact(
    projectRoot,
    aabOutputPath: aabOutputPath,
  );
  await _sign(
    aabPath: aabPath,
    keystorePath: signing.keystorePath,
    credentials: credentials,
    processRunner: processRunner,
  );
  await _verify(
    aabPath: aabPath,
    keystorePath: signing.keystorePath,
    credentials: credentials,
    processRunner: processRunner,
  );
  return aabPath;
}