diff --git a/packages/flutter_tools/lib/src/commands/build_aot.dart b/packages/flutter_tools/lib/src/commands/build_aot.dart index 6940183ca76..c18bfdd716c 100644 --- a/packages/flutter_tools/lib/src/commands/build_aot.dart +++ b/packages/flutter_tools/lib/src/commands/build_aot.dart @@ -258,18 +258,32 @@ String buildAotSnapshot( String kDartVmIsolateSnapshotBufferO = path.join(outputDir.path, '$kDartVmIsolateSnapshotBuffer.o'); String kDartIsolateSnapshotBufferO = path.join(outputDir.path, '$kDartIsolateSnapshotBuffer.o'); + List commonBuildOptions = ['-arch', 'arm64', '-miphoneos-version-min=8.0']; if (!interpreter) - runCheckedSync(['xcrun', 'cc', '-c', assembly, '-o', assemblyO]); - runCheckedSync(['xcrun', 'cc', '-c', kDartVmIsolateSnapshotBufferC, '-o', kDartVmIsolateSnapshotBufferO]); - runCheckedSync(['xcrun', 'cc', '-c', kDartIsolateSnapshotBufferC, '-o', kDartIsolateSnapshotBufferO]); + runCheckedSync(['xcrun', 'cc'] + ..addAll(commonBuildOptions) + ..addAll(['-c', assembly, '-o', assemblyO])); + runCheckedSync(['xcrun', 'cc'] + ..addAll(commonBuildOptions) + ..addAll(['-c', kDartVmIsolateSnapshotBufferC, '-o', kDartVmIsolateSnapshotBufferO])); + runCheckedSync(['xcrun', 'cc'] + ..addAll(commonBuildOptions) + ..addAll(['-c', kDartIsolateSnapshotBufferC, '-o', kDartIsolateSnapshotBufferO])); String appSo = path.join(outputDir.path, 'app.so'); - List linkCommand = [ - 'xcrun', 'ld', '-dylib', '-o', appSo, - kDartVmIsolateSnapshotBufferO, - kDartIsolateSnapshotBufferO, - ]; + List linkCommand = ['xcrun', 'clang'] + ..addAll(commonBuildOptions) + ..addAll([ + '-dynamiclib', + '-nostdlib', + '-Xlinker', '-rpath', '-Xlinker', '@executable_path/Frameworks', + '-Xlinker', '-rpath', '-Xlinker', '@loader_path/Frameworks', + '-install_name', '@rpath/app.so', + '-o', appSo, + kDartVmIsolateSnapshotBufferO, + kDartIsolateSnapshotBufferO, + ]); if (!interpreter) linkCommand.add(assemblyO); runCheckedSync(linkCommand);