buildIPA function
Future<void>
buildIPA(
- dynamic releaseType
)
Implementation
Future<void> buildIPA(releaseType) async {
double ticks = 0.0;
bool isGitIgnoreExists = await File('.gitignore').exists();
if (isGitIgnoreExists) {
var gitIgnoreFile = await File('.gitignore').readAsString();
if (!gitIgnoreFile.contains('Payload')) {
await File('.gitignore').writeAsString('$gitIgnoreFile\nPayload');
}
if (!gitIgnoreFile.contains('Runner.ipa')) {
await File('.gitignore').writeAsString('$gitIgnoreFile\nRunner.ipa');
}
}
if (await Directory('Payload').exists()) {
await Directory('Payload').delete(recursive: true);
}
await Directory('Payload').create();
print(info('Info: Building $releaseType IPA... 🔨'));
var timer = Timer.periodic(Duration(milliseconds: 100), (timer) {
ticks += 0.1;
stdout.write(
'\rBuilding IPA... \x1B[90m(${ticks.toStringAsFixed(1)}s)\x1B[0m\r');
});
var process =
await Process.start('flutter', ['build', 'ios', '--$releaseType']);
process.stdout.transform(utf8.decoder).listen((data) {
print(data);
});
process.stderr.transform(utf8.decoder).listen((data) {
print(error('Error: $data'));
});
var exitCode = await process.exitCode;
if (exitCode != 0) {
throw error('Error: Command failed with exit code $exitCode');
}
var process2 = await Process.start(
'cp', ['-r', 'build/ios/iphoneos/Runner.app', 'Payload/Runner.app']);
process2.stdout.transform(utf8.decoder).listen((data) {
print(data);
});
process2.stderr.transform(utf8.decoder).listen((data) {
print(error('Error: $data'));
});
var exitCode2 = await process2.exitCode;
if (exitCode2 != 0) {
throw error('Error: Command failed with exit code $exitCode2');
}
var process3 = await Process.start('zip', ['-vr', 'Runner.ipa', 'Payload']);
process3.stdout.transform(utf8.decoder).listen((data) {
print(data);
});
process3.stderr.transform(utf8.decoder).listen((data) {
print(error('Error: $data'));
});
var exitCode3 = await process3.exitCode;
if (exitCode3 != 0) {
throw error('Error: Command failed with exit code $exitCode3');
}
timer.cancel();
stdout.write(
'\rBuilding IPA Done \x1B[90m(${ticks.toStringAsFixed(1)}s)\x1B[0m\n');
print(info('Info: IPA Build Completed Successfully'));
}