[flutter_tools] simplify symbol logic for iOS (#49628)
This commit is contained in:
parent
de7da494a1
commit
cb3b7ab487
@ -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');
|
||||
|
||||
await inDirectory(projectDir, () 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');
|
||||
|
||||
await inDirectory(projectDir, () async {
|
||||
@ -406,26 +393,3 @@ Future<bool> _isAppAotBuild(Directory app) async {
|
||||
|
||||
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() {
|
||||
|
||||
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
|
||||
RunCommand mkdir -p -- "${derived_dir}/App.framework"
|
||||
|
||||
|
@ -138,11 +138,7 @@ class AOTSnapshotter {
|
||||
outputPaths.add(assembly);
|
||||
genSnapshotArgs.add('--snapshot_kind=app-aot-assembly');
|
||||
genSnapshotArgs.add('--assembly=$assembly');
|
||||
// TODO(jonahwilliams): determine the correct time to use strip
|
||||
// since this is required for the future dwarf strack traces option.
|
||||
if (bitcode && buildMode == BuildMode.release) {
|
||||
genSnapshotArgs.add('--strip');
|
||||
}
|
||||
genSnapshotArgs.add('--strip');
|
||||
} else {
|
||||
final String aotSharedLibrary = globals.fs.path.join(outputDir.path, 'app.so');
|
||||
outputPaths.add(aotSharedLibrary);
|
||||
|
@ -326,6 +326,7 @@ void main() {
|
||||
'--deterministic',
|
||||
'--snapshot_kind=app-aot-assembly',
|
||||
'--assembly=$assembly',
|
||||
'--strip',
|
||||
'--no-sim-use-hardfp',
|
||||
'--no-use-integer-division',
|
||||
'--no-causal-async-stacks',
|
||||
@ -444,6 +445,7 @@ void main() {
|
||||
'--deterministic',
|
||||
'--snapshot_kind=app-aot-assembly',
|
||||
'--assembly=$assembly',
|
||||
'--strip',
|
||||
'--no-sim-use-hardfp',
|
||||
'--no-use-integer-division',
|
||||
'--no-causal-async-stacks',
|
||||
@ -493,6 +495,7 @@ void main() {
|
||||
'--deterministic',
|
||||
'--snapshot_kind=app-aot-assembly',
|
||||
'--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}',
|
||||
'--strip',
|
||||
'--no-causal-async-stacks',
|
||||
'--lazy-async-stacks',
|
||||
'main.dill',
|
||||
@ -531,6 +534,7 @@ void main() {
|
||||
'--deterministic',
|
||||
'--snapshot_kind=app-aot-assembly',
|
||||
'--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}',
|
||||
'--strip',
|
||||
'--no-sim-use-hardfp',
|
||||
'--no-use-integer-division',
|
||||
'--no-causal-async-stacks',
|
||||
@ -571,6 +575,7 @@ void main() {
|
||||
'--deterministic',
|
||||
'--snapshot_kind=app-aot-assembly',
|
||||
'--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}',
|
||||
'--strip',
|
||||
'--no-causal-async-stacks',
|
||||
'--lazy-async-stacks',
|
||||
'main.dill',
|
||||
|
Loading…
x
Reference in New Issue
Block a user