From a25dca4a06f8f343a9310ee58d024de696219427 Mon Sep 17 00:00:00 2001 From: Jenn Magder Date: Fri, 12 Nov 2021 12:56:03 -0800 Subject: [PATCH] Ad-hoc codesign Flutter.framework when code signing is disabled (#93556) --- .../lib/src/build_system/targets/ios.dart | 4 +- .../build_system/targets/ios_test.dart | 50 ++++++++++++++----- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/packages/flutter_tools/lib/src/build_system/targets/ios.dart b/packages/flutter_tools/lib/src/build_system/targets/ios.dart index e92cbd021a..e6a8e642df 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/ios.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/ios.dart @@ -625,9 +625,9 @@ Future _createStubAppFramework(File outputFile, Environment environment, } void _signFramework(Environment environment, String binaryPath, BuildMode buildMode) { - final String codesignIdentity = environment.defines[kCodesignIdentity]; + String codesignIdentity = environment.defines[kCodesignIdentity]; if (codesignIdentity == null || codesignIdentity.isEmpty) { - return; + codesignIdentity = '-'; } final ProcessResult result = environment.processManager.runSync([ 'codesign', diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart index fe30517ece..6045862b3f 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/ios_test.dart @@ -72,7 +72,8 @@ void main() { testUsingContext('DebugUniversalFramework creates simulator binary', () async { environment.defines[kIosArchs] = 'x86_64'; environment.defines[kSdkRoot] = 'path/to/iPhoneSimulator.sdk'; - processManager.addCommand( + final String appFrameworkPath = environment.buildDir.childDirectory('App.framework').childFile('App').path; + processManager.addCommands([ FakeCommand(command: [ 'xcrun', 'clang', @@ -98,12 +99,17 @@ void main() { '-isysroot', 'path/to/iPhoneSimulator.sdk', '-o', - environment.buildDir - .childDirectory('App.framework') - .childFile('App') - .path, + appFrameworkPath, ]), - ); + FakeCommand(command: [ + 'codesign', + '--force', + '--sign', + '-', + '--timestamp=none', + appFrameworkPath, + ]), + ]); await const DebugUniversalFramework().build(environment); expect(processManager.hasRemainingExpectations, isFalse); @@ -116,7 +122,8 @@ void main() { testUsingContext('DebugUniversalFramework creates expected binary with arm64 only arch', () async { environment.defines[kIosArchs] = 'arm64'; environment.defines[kSdkRoot] = 'path/to/iPhoneOS.sdk'; - processManager.addCommand( + final String appFrameworkPath = environment.buildDir.childDirectory('App.framework').childFile('App').path; + processManager.addCommands([ FakeCommand(command: [ 'xcrun', 'clang', @@ -129,12 +136,17 @@ void main() { '.tmp_rand0', 'flutter_tools_stub_source.rand0', 'debug_app.cc')), ..._kSharedConfig, '-o', - environment.buildDir - .childDirectory('App.framework') - .childFile('App') - .path, + appFrameworkPath, ]), - ); + FakeCommand(command: [ + 'codesign', + '--force', + '--sign', + '-', + '--timestamp=none', + appFrameworkPath, + ]), + ]); await const DebugUniversalFramework().build(environment); expect(processManager.hasRemainingExpectations, isFalse); @@ -317,6 +329,7 @@ void main() { FakeCommand lipoCommandNonFatResult; FakeCommand lipoVerifyArm64Command; FakeCommand bitcodeStripCommand; + FakeCommand adHocCodesignCommand; setUp(() { final FileSystem fileSystem = MemoryFileSystem.test(); @@ -353,6 +366,15 @@ void main() { '-o', binary.path, ]); + + adHocCodesignCommand = FakeCommand(command: [ + 'codesign', + '--force', + '--sign', + '-', + '--timestamp=none', + binary.path, + ]); }); testWithoutContext('iphonesimulator', () async { @@ -389,6 +411,7 @@ void main() { '-verify_arch', 'x86_64', ]), + adHocCodesignCommand, ]); await const DebugUnpackIOS().build(environment); @@ -538,6 +561,7 @@ void main() { copyPhysicalFrameworkCommand, lipoCommandNonFatResult, lipoVerifyArm64Command, + adHocCodesignCommand, ]); await const DebugUnpackIOS().build(environment); @@ -587,6 +611,7 @@ void main() { 'armv7', binary.path, ]), + adHocCodesignCommand, ]); await const DebugUnpackIOS().build(environment); @@ -658,6 +683,7 @@ void main() { lipoCommandNonFatResult, lipoVerifyArm64Command, bitcodeStripCommand, + adHocCodesignCommand, ]); await const DebugUnpackIOS().build(environment);