buildForAndroid function

void buildForAndroid(
  1. BuildParams arg
)

Implementation

void buildForAndroid(BuildParams arg) async {
  exitCode = 0; // presume success

  // step - edit version num -> pubspec, config
  final pusSpecPath = './pubspec.yaml';
  await updateLineInFile(
    pusSpecPath,
    'version:',
    'version: ${arg.versionNumber}',
  );

  // todo setup edit stuff

  // todo setup to check stuff

  // step - build then copy to desk (rename)
  var outputPath = (arg.outputPath?.isEmpty ?? true)
      ? getHomePath()
      : arg.outputPath;
  if ( outputPath == null) {
    throw "outputPath is was not set!";
  }

  print(outputPath);

  final File file = File(pusSpecPath);
  final String yamlString = file.readAsStringSync();
  var yaml = loadYaml(yamlString);

  var outputFileName = '${yaml['name']}_app_v${arg.versionNumber}';
  print(outputFileName);
  if (arg.generateAab) {
    print('-------- STARTED AAB -----------');
    Process process = await Process.start(
      'flutter build appbundle --target-platform android-arm,android-arm64,android-x64',
      [],
      runInShell: true,
    );

    process.stdout.transform(utf8.decoder).listen((data) {
      print(data);
    }).onDone(() {});

    await process.exitCode;

    ProcessResult results = await Process.run(
      'move',
      [
        p.join(Directory.current.path,
            p.normalize('build/app/outputs/bundle/release/app-release.aab')),
        p.join(p.normalize(outputPath), '${outputFileName}.aab'),
      ],
      runInShell: true,
    );
    print(results.exitCode);
    print(results.stdout);
    print(results.stderr);

    print('-------- FINISHED AAB -----------');
  }

  if (arg.generateApk) {
    print('-------- STARTED APK -----------');

    Process process = await Process.start(
      'flutter build apk --release',
      [],
      runInShell: true,
    );

    process.stdout.transform(utf8.decoder).listen((data) {
      print(data);
    }).onDone(() {});

    await process.exitCode;

    ProcessResult results = await Process.run(
      'move',
      [
        p.join(Directory.current.path,
            p.normalize('build/app/outputs/apk/release/app-release.apk')),
        p.join(p.normalize(outputPath), '${outputFileName}.apk'),
      ],
      runInShell: true,
    );
    print(results.exitCode);
    print(results.stdout);
    print(results.stderr);

    print('-------- FINISHED APK -----------');
  }
}