Unverified Commit dfad0395 authored by xster's avatar xster Committed by GitHub

do not strip symbols when building profile (#37210)

parent d208ce2d
...@@ -59,6 +59,13 @@ Future<void> main() async { ...@@ -59,6 +59,13 @@ 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 {
...@@ -92,6 +99,12 @@ Future<void> main() async { ...@@ -92,6 +99,12 @@ 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 {
...@@ -290,3 +303,26 @@ Future<bool> _isAppAotBuild(Directory app) async { ...@@ -290,3 +303,26 @@ 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,27 +201,29 @@ BuildApp() { ...@@ -201,27 +201,29 @@ BuildApp() {
RunCommand cp -r -- "${app_framework}" "${derived_dir}" RunCommand cp -r -- "${app_framework}" "${derived_dir}"
StreamOutput " ├─Generating dSYM file..." if [[ "${build_mode}" == "release" ]]; then
# Xcode calls `symbols` during app store upload, which uses Spotlight to StreamOutput " ├─Generating dSYM file..."
# find dSYM files for embedded frameworks. When it finds the dSYM file for # Xcode calls `symbols` during app store upload, which uses Spotlight to
# `App.framework` it throws an error, which aborts the app store upload. # find dSYM files for embedded frameworks. When it finds the dSYM file for
# To avoid this, we place the dSYM files in a folder ending with ".noindex", # `App.framework` it throws an error, which aborts the app store upload.
# which hides it from Spotlight, https://github.com/flutter/flutter/issues/22560. # To avoid this, we place the dSYM files in a folder ending with ".noindex",
RunCommand mkdir -p -- "${build_dir}/dSYMs.noindex" # which hides it from Spotlight, https://github.com/flutter/flutter/issues/22560.
RunCommand xcrun dsymutil -o "${build_dir}/dSYMs.noindex/App.framework.dSYM" "${app_framework}/App" RunCommand mkdir -p -- "${build_dir}/dSYMs.noindex"
if [[ $? -ne 0 ]]; then RunCommand xcrun dsymutil -o "${build_dir}/dSYMs.noindex/App.framework.dSYM" "${app_framework}/App"
EchoError "Failed to generate debug symbols (dSYM) file for ${app_framework}/App." if [[ $? -ne 0 ]]; then
exit -1 EchoError "Failed to generate debug symbols (dSYM) file for ${app_framework}/App."
fi exit -1
StreamOutput "done" fi
StreamOutput "done"
StreamOutput " ├─Stripping debug symbols..." StreamOutput " ├─Stripping debug symbols..."
RunCommand xcrun strip -x -S "${derived_dir}/App.framework/App" RunCommand xcrun strip -x -S "${derived_dir}/App.framework/App"
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then
EchoError "Failed to strip ${derived_dir}/App.framework/App." EchoError "Failed to strip ${derived_dir}/App.framework/App."
exit -1 exit -1
fi
StreamOutput "done"
fi fi
StreamOutput "done"
else else
RunCommand mkdir -p -- "${derived_dir}/App.framework" RunCommand mkdir -p -- "${derived_dir}/App.framework"
......
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