mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
do not strip symbols when building profile (#37210)
This commit is contained in:
parent
d208ce2dff
commit
dfad03952f
@ -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');
|
||||
|
||||
await inDirectory(projectDir, () 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');
|
||||
|
||||
await inDirectory(projectDir, () async {
|
||||
@ -290,3 +303,26 @@ 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,27 +201,29 @@ BuildApp() {
|
||||
|
||||
RunCommand cp -r -- "${app_framework}" "${derived_dir}"
|
||||
|
||||
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"
|
||||
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
|
||||
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
|
||||
StreamOutput "done"
|
||||
|
||||
else
|
||||
RunCommand mkdir -p -- "${derived_dir}/App.framework"
|
||||
|
Loading…
Reference in New Issue
Block a user