Unverified Commit cb3b7ab4 authored by Jonah Williams's avatar Jonah Williams Committed by GitHub

[flutter_tools] simplify symbol logic for iOS (#49628)

parent de7da494
...@@ -57,13 +57,6 @@ Future<void> main() async { ...@@ -57,13 +57,6 @@ Future<void> main() async {
); );
} }
if (await _hasDebugSymbols(ephemeralReleaseHostApp)) {
return TaskResult.failure(
"Ephemeral host app ${ephemeralReleaseHostApp.path}'s App.framework's "
"debug symbols weren't stripped in release mode"
);
}
section('Clean build'); section('Clean build');
await inDirectory(projectDir, () async { await inDirectory(projectDir, () async {
...@@ -97,12 +90,6 @@ Future<void> main() async { ...@@ -97,12 +90,6 @@ Future<void> main() async {
); );
} }
if (!await _hasDebugSymbols(ephemeralProfileHostApp)) {
return TaskResult.failure(
"Ephemeral host app ${ephemeralProfileHostApp.path}'s App.framework does not contain debug symbols"
);
}
section('Clean build'); section('Clean build');
await inDirectory(projectDir, () async { await inDirectory(projectDir, () async {
...@@ -406,26 +393,3 @@ Future<bool> _isAppAotBuild(Directory app) async { ...@@ -406,26 +393,3 @@ Future<bool> _isAppAotBuild(Directory app) async {
return symbolTable.contains('kDartIsolateSnapshotInstructions'); return symbolTable.contains('kDartIsolateSnapshotInstructions');
} }
Future<bool> _hasDebugSymbols(Directory app) async {
final String binary = path.join(
app.path,
'Frameworks',
'App.framework',
'App',
);
final String symbolTable = await eval(
'dsymutil',
<String> [
'--dump-debug-map',
binary,
],
// The output is huge.
printStdout: false,
);
// Search for some random Flutter framework Dart function which should always
// be in App.framework.
return symbolTable.contains('BuildOwner_reassemble');
}
...@@ -201,30 +201,6 @@ BuildApp() { ...@@ -201,30 +201,6 @@ BuildApp() {
RunCommand cp -r -- "${app_framework}" "${derived_dir}" RunCommand cp -r -- "${app_framework}" "${derived_dir}"
if [[ "${build_mode}" == "release" ]]; then
StreamOutput " ├─Generating dSYM file..."
# Xcode calls `symbols` during app store upload, which uses Spotlight to
# find dSYM files for embedded frameworks. When it finds the dSYM file for
# `App.framework` it throws an error, which aborts the app store upload.
# To avoid this, we place the dSYM files in a folder ending with ".noindex",
# which hides it from Spotlight, https://github.com/flutter/flutter/issues/22560.
RunCommand mkdir -p -- "${build_dir}/dSYMs.noindex"
RunCommand xcrun dsymutil -o "${build_dir}/dSYMs.noindex/App.framework.dSYM" "${app_framework}/App"
if [[ $? -ne 0 ]]; then
EchoError "Failed to generate debug symbols (dSYM) file for ${app_framework}/App."
exit -1
fi
StreamOutput "done"
StreamOutput " ├─Stripping debug symbols..."
RunCommand xcrun strip -x -S "${derived_dir}/App.framework/App"
if [[ $? -ne 0 ]]; then
EchoError "Failed to strip ${derived_dir}/App.framework/App."
exit -1
fi
StreamOutput "done"
fi
else else
RunCommand mkdir -p -- "${derived_dir}/App.framework" RunCommand mkdir -p -- "${derived_dir}/App.framework"
......
...@@ -138,11 +138,7 @@ class AOTSnapshotter { ...@@ -138,11 +138,7 @@ class AOTSnapshotter {
outputPaths.add(assembly); outputPaths.add(assembly);
genSnapshotArgs.add('--snapshot_kind=app-aot-assembly'); genSnapshotArgs.add('--snapshot_kind=app-aot-assembly');
genSnapshotArgs.add('--assembly=$assembly'); genSnapshotArgs.add('--assembly=$assembly');
// TODO(jonahwilliams): determine the correct time to use strip genSnapshotArgs.add('--strip');
// since this is required for the future dwarf strack traces option.
if (bitcode && buildMode == BuildMode.release) {
genSnapshotArgs.add('--strip');
}
} else { } else {
final String aotSharedLibrary = globals.fs.path.join(outputDir.path, 'app.so'); final String aotSharedLibrary = globals.fs.path.join(outputDir.path, 'app.so');
outputPaths.add(aotSharedLibrary); outputPaths.add(aotSharedLibrary);
......
...@@ -326,6 +326,7 @@ void main() { ...@@ -326,6 +326,7 @@ void main() {
'--deterministic', '--deterministic',
'--snapshot_kind=app-aot-assembly', '--snapshot_kind=app-aot-assembly',
'--assembly=$assembly', '--assembly=$assembly',
'--strip',
'--no-sim-use-hardfp', '--no-sim-use-hardfp',
'--no-use-integer-division', '--no-use-integer-division',
'--no-causal-async-stacks', '--no-causal-async-stacks',
...@@ -444,6 +445,7 @@ void main() { ...@@ -444,6 +445,7 @@ void main() {
'--deterministic', '--deterministic',
'--snapshot_kind=app-aot-assembly', '--snapshot_kind=app-aot-assembly',
'--assembly=$assembly', '--assembly=$assembly',
'--strip',
'--no-sim-use-hardfp', '--no-sim-use-hardfp',
'--no-use-integer-division', '--no-use-integer-division',
'--no-causal-async-stacks', '--no-causal-async-stacks',
...@@ -493,6 +495,7 @@ void main() { ...@@ -493,6 +495,7 @@ void main() {
'--deterministic', '--deterministic',
'--snapshot_kind=app-aot-assembly', '--snapshot_kind=app-aot-assembly',
'--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}', '--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}',
'--strip',
'--no-causal-async-stacks', '--no-causal-async-stacks',
'--lazy-async-stacks', '--lazy-async-stacks',
'main.dill', 'main.dill',
...@@ -531,6 +534,7 @@ void main() { ...@@ -531,6 +534,7 @@ void main() {
'--deterministic', '--deterministic',
'--snapshot_kind=app-aot-assembly', '--snapshot_kind=app-aot-assembly',
'--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}', '--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}',
'--strip',
'--no-sim-use-hardfp', '--no-sim-use-hardfp',
'--no-use-integer-division', '--no-use-integer-division',
'--no-causal-async-stacks', '--no-causal-async-stacks',
...@@ -571,6 +575,7 @@ void main() { ...@@ -571,6 +575,7 @@ void main() {
'--deterministic', '--deterministic',
'--snapshot_kind=app-aot-assembly', '--snapshot_kind=app-aot-assembly',
'--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}', '--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}',
'--strip',
'--no-causal-async-stacks', '--no-causal-async-stacks',
'--lazy-async-stacks', '--lazy-async-stacks',
'main.dill', 'main.dill',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment