diff --git a/dev/devicelab/bin/tasks/build_ios_framework_module_test.dart b/dev/devicelab/bin/tasks/build_ios_framework_module_test.dart index fc9c07f32f7..af6c85e8cf1 100644 --- a/dev/devicelab/bin/tasks/build_ios_framework_module_test.dart +++ b/dev/devicelab/bin/tasks/build_ios_framework_module_test.dart @@ -188,15 +188,25 @@ Future _testBuildIosFramework(Directory projectDir, { bool isModule = fals 'vm_snapshot_data', )); + final String dsymPath = path.join( + outputPath, + mode, + 'App.xcframework', + 'ios-arm64', + 'dSYMs' + ); + checkDirectoryExists(dsymPath); + final String appFrameworkDsymPath = path.join( - outputPath, - mode, - 'App.xcframework', - 'ios-arm64', - 'dSYMs', - 'App.framework.dSYM' + dsymPath, + 'App.framework.dSYM' ); checkDirectoryExists(appFrameworkDsymPath); + + if (Directory(dsymPath).listSync().whereType().length != 1) { + throw TaskResult.failure('App.framework/dSYMs should ONLY contain App.xcframework.dSYM'); + } + await _checkDsym(path.join( appFrameworkDsymPath, 'Contents', diff --git a/packages/flutter_tools/lib/src/commands/build_ios_framework.dart b/packages/flutter_tools/lib/src/commands/build_ios_framework.dart index 1b4ddbb0ed2..fc424ca9e12 100644 --- a/packages/flutter_tools/lib/src/commands/build_ios_framework.dart +++ b/packages/flutter_tools/lib/src/commands/build_ios_framework.dart @@ -150,7 +150,7 @@ abstract class BuildFrameworkCommand extends BuildSubCommand { ...framework.parent .listSync() .where((FileSystemEntity entity) => - entity.basename.endsWith('dSYM')) + entity.basename.endsWith('dSYM') && !entity.basename.startsWith('Flutter')) .map((FileSystemEntity entity) => ['-debug-symbols', entity.path]) .expand((List parameter) => parameter), ], diff --git a/packages/flutter_tools/test/commands.shard/hermetic/build_darwin_framework_test.dart b/packages/flutter_tools/test/commands.shard/hermetic/build_darwin_framework_test.dart index 605e1dff7e2..1ee8e0a073f 100644 --- a/packages/flutter_tools/test/commands.shard/hermetic/build_darwin_framework_test.dart +++ b/packages/flutter_tools/test/commands.shard/hermetic/build_darwin_framework_test.dart @@ -558,6 +558,8 @@ void main() { final Directory parentA = fileSystem.directory('FrameworkA')..createSync(); final File dSYMA = parentA.childFile('FrameworkA.framework.dSYM')..createSync(); final Directory frameworkA = parentA.childDirectory('FrameworkA.framework')..createSync(); + // Flutter.framework.dSYM should be correctly filtered out. + parentA.childFile('Flutter.framework.dSYM').createSync(); final Directory parentB = fileSystem.directory('FrameworkB')..createSync(); final File dSYMB = parentB.childFile('FrameworkB.framework.dSYM')..createSync();