Revert "[flutter_tools] move dsym generation logic into dart build process (#49491)" (#49592)

This reverts commit 2a91a7501c.
This commit is contained in:
Jenn Magder 2020-01-27 18:37:21 -08:00 committed by GitHub
parent 74c1be6ff1
commit fdb0225f8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 92 deletions

View file

@ -202,6 +202,20 @@ 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

View file

@ -214,7 +214,7 @@ class AotBuilder {
final FlutterProject flutterProject = FlutterProject.current();
final Target target = buildMode == BuildMode.profile
? const AotAssemblyProfile()
: const GenerateDebugSymbols();
: const AotAssemblyRelease();
final BuildResult result = await buildSystem.build(target, Environment(
projectDir: flutterProject.directory,

View file

@ -145,50 +145,6 @@ class AotAssemblyProfile extends AotAssemblyBase {
];
}
/// Handle strip and dysm generate for iOS release.
///
/// 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.
class GenerateDebugSymbols extends Target {
const GenerateDebugSymbols();
@override
String get name => 'generate_debug_symbols';
@override
List<Target> get dependencies => const <Target>[
AotAssemblyRelease()
];
@override
List<Source> get inputs => const <Source>[
Source.pattern('{OUTPUT_DIR}/App.framework/App'),
];
@override
List<Source> get outputs => const <Source>[
Source.pattern('{OUTPUT_DIR}/dSYMs.noindex/App.framework.dSYM'),
];
@override
Future<void> build(Environment environment) async {
final Directory appFramework = environment.outputDir.childDirectory('App.framework');
final Directory noIndex = environment.outputDir.childDirectory('dSYMs.noindex')
..createSync();
final RunResult result = await globals.xcode.dsymutil(<String>[
'-o',
noIndex.childFile('App.framework.dSYM').path,
appFramework.childFile('App').path,
]);
if (result.exitCode != 0) {
throwToolExit('Failed to generate debug symbols (dSYM) file for ${appFramework.path}/App.');
}
}
}
/// Create an App.framework for debug iOS targets.
///
/// This framework needs to exist for the Xcode project to link/bundle,

View file

@ -153,13 +153,6 @@ class Xcode {
);
}
Future<RunResult> dsymutil(List<String> args) {
return _processUtils.run(
<String>['xcrun', 'dsymutil', ...args],
throwOnError: true,
);
}
Future<RunResult> clang(List<String> args) {
return _processUtils.run(
<String>['xcrun', 'clang', ...args],

View file

@ -1,40 +0,0 @@
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter_tools/src/build_system/build_system.dart';
import 'package:flutter_tools/src/build_system/targets/ios.dart';
import 'package:flutter_tools/src/globals.dart' as globals;
import 'package:platform/platform.dart';
import 'package:process/process.dart';
import '../../../src/common.dart';
import '../../../src/context.dart';
import '../../../src/testbed.dart';
void main() {
Testbed testbed;
setUp(() {
testbed = Testbed();
});
test('GenerateDebugSymbols uses the proper arguments', () => testbed.run(() async {
final Environment environment = Environment.test(
globals.fs.currentDirectory,
);
await const GenerateDebugSymbols().build(environment);
}, overrides: <Type, Generator>{
Platform: () => FakePlatform(operatingSystem: 'macos'),
ProcessManager: () => FakeProcessManager.list(<FakeCommand>[
const FakeCommand(command: <String>[
'xcrun',
'dsymutil',
'-o',
'/dSYMs.noindex/App.framework.dSYM',
'/App.framework/App',
])
]),
}));
}