diff --git a/packages/flutter_tools/lib/src/build_system/targets/macos.dart b/packages/flutter_tools/lib/src/build_system/targets/macos.dart index b1ded0265b..81cf6ae2f1 100644 --- a/packages/flutter_tools/lib/src/build_system/targets/macos.dart +++ b/packages/flutter_tools/lib/src/build_system/targets/macos.dart @@ -87,7 +87,12 @@ abstract class UnpackMacOS extends Target { await _thinFramework(environment, frameworkBinaryPath); } - static const List _copyDenylist = ['entitlements.txt', 'without_entitlements.txt']; + /// Files that should not be copied to build output directory if found during framework copy step. + static const List _copyDenylist = [ + 'entitlements.txt', + 'without_entitlements.txt', + 'unsigned_binaries.txt', + ]; void _removeDenylistedFiles(Directory directory) { for (final FileSystemEntity entity in directory.listSync(recursive: true)) { diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart index 678a70b895..27d781f3de 100644 --- a/packages/flutter_tools/lib/src/cache.dart +++ b/packages/flutter_tools/lib/src/cache.dart @@ -1034,7 +1034,11 @@ class ArtifactUpdater { final List downloadedFiles = []; /// These filenames, should they exist after extracting an archive, should be deleted. - static const Set _denylistedBasenames = {'entitlements.txt', 'without_entitlements.txt'}; + static const Set _denylistedBasenames = { + 'entitlements.txt', + 'without_entitlements.txt', + 'unsigned_binaries.txt', + }; void _removeDenylistedFiles(Directory directory) { for (final FileSystemEntity entity in directory.listSync(recursive: true)) { if (entity is! File) { diff --git a/packages/flutter_tools/test/general.shard/artifact_updater_test.dart b/packages/flutter_tools/test/general.shard/artifact_updater_test.dart index 96780ec396..7d90e7c1d4 100644 --- a/packages/flutter_tools/test/general.shard/artifact_updater_test.dart +++ b/packages/flutter_tools/test/general.shard/artifact_updater_test.dart @@ -83,6 +83,7 @@ void main() { File? desiredArtifact; File? entitlementsFile; File? nestedWithoutEntitlementsFile; + File? unsignedBinariesFile; operatingSystemUtils.unzipCallbacks[localZipPath] = (Directory outputDirectory) { desiredArtifact = outputDirectory.childFile('artifact.bin')..createSync(); entitlementsFile = outputDirectory.childFile('entitlements.txt')..createSync(); @@ -90,6 +91,7 @@ void main() { .childDirectory('dir') .childFile('without_entitlements.txt') ..createSync(recursive: true); + unsignedBinariesFile = outputDirectory.childFile('unsigned_binaries.txt')..createSync(); }; final ArtifactUpdater artifactUpdater = ArtifactUpdater( fileSystem: fileSystem, @@ -114,6 +116,7 @@ void main() { expect(desiredArtifact, exists); expect(entitlementsFile, isNot(exists)); expect(nestedWithoutEntitlementsFile, isNot(exists)); + expect(unsignedBinariesFile, isNot(exists)); expect(staleEntitlementsFile, isNot(exists)); }); diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart index 06e1314c31..a9178c7803 100644 --- a/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart +++ b/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart @@ -173,10 +173,11 @@ void main() { ProcessManager: () => processManager, }); - testUsingContext('deletes entitlements.txt and without_entitlements.txt files after copying', () async { + testUsingContext('deletes entitlements.txt, without_entitlements.txt, unsigned_binaries.txt files after copying', () async { binary.createSync(recursive: true); final File entitlements = environment.outputDir.childFile('entitlements.txt'); final File withoutEntitlements = environment.outputDir.childFile('without_entitlements.txt'); + final File unsignedBinaries = environment.outputDir.childFile('unsigned_binaries.txt'); final File nestedEntitlements = environment .outputDir .childDirectory('first_level') @@ -201,6 +202,7 @@ void main() { onRun: (_) { entitlements.writeAsStringSync('foo'); withoutEntitlements.writeAsStringSync('bar'); + unsignedBinaries.writeAsStringSync('baz'); nestedEntitlements.writeAsStringSync('somefile.bin'); }, ), @@ -211,6 +213,7 @@ void main() { await const DebugUnpackMacOS().build(environment); expect(entitlements.existsSync(), isFalse); expect(withoutEntitlements.existsSync(), isFalse); + expect(unsignedBinaries.existsSync(), isFalse); expect(nestedEntitlements.existsSync(), isFalse); expect(processManager, hasNoRemainingExpectations);