From a06ea82f2cf542647585a740b4f43e4024d1db06 Mon Sep 17 00:00:00 2001 From: Junyuan Feng Date: Tue, 3 May 2022 09:16:06 +0800 Subject: [PATCH] build script will update project.pbxproj versions. --- make.dart | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/make.dart b/make.dart index 986aedda..a4177365 100755 --- a/make.dart +++ b/make.dart @@ -7,9 +7,12 @@ import 'dart:io'; const appName = 'ServerBox'; const buildDataFilePath = 'lib/data/res/build_data.dart'; const xcarchivePath = 'build/ios/archive/Runner.xcarchive'; - +var regiOSProjectVer = RegExp(r'CURRENT_PROJECT_VERSION = .+;'); +var regiOSMarketVer = RegExp(r'MARKETING_VERSION = .+'); const skslFileSuffix = '.sksl.json'; +int? build; + Future getGitCommitCount() async { final result = await Process.run('git', ['log', '--oneline']); return (result.stdout as String) @@ -50,7 +53,7 @@ Future getFlutterVersion() async { Future> getBuildData() async { final data = { 'name': appName, - 'build': await getGitCommitCount(), + 'build': build, 'engine': await getFlutterVersion(), 'buildAt': DateTime.now().toString(), 'modifications': await getGitModificationCount(), @@ -85,8 +88,6 @@ void flutterRun(String? mode) { } Future flutterBuild(String source, String target, bool isAndroid) async { - final build = await getGitCommitCount(); - final args = [ 'build', isAndroid ? 'apk' : 'ipa', @@ -122,6 +123,7 @@ Future flutterBuild(String source, String target, bool isAndroid) async { } Future flutterBuildIOS() async { + await changeiOSVersion(); await flutterBuild( xcarchivePath, './release/${appName}_build.xcarchive', false); } @@ -131,6 +133,15 @@ Future flutterBuildAndroid() async { './release/${appName}_build_Arm64.apk', true); } +Future changeiOSVersion() async { + final file = File('ios/Runner.xcodeproj/project.pbxproj'); + final contents = await file.readAsString(); + final newContents = contents + .replaceAll(regiOSMarketVer, 'MARKETING_VERSION = 1.0.$build;') + .replaceAll(regiOSProjectVer, 'CURRENT_PROJECT_VERSION = $build;'); + await file.writeAsString(newContents); +} + void main(List args) async { if (args.isEmpty) { print('No action. Exit.'); @@ -145,6 +156,7 @@ void main(List args) async { case 'build': final stopwatch = Stopwatch()..start(); final buildFunc = [flutterBuildIOS, flutterBuildAndroid]; + build = await getGitCommitCount(); await updateBuildData(); dartFormat(); if (args.length > 1) {