mirror of
https://github.com/flutter/flutter
synced 2024-10-13 03:32:55 +00:00
This reverts commit 2a91a7501c
.
This commit is contained in:
parent
74c1be6ff1
commit
fdb0225f8c
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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],
|
||||
|
|
|
@ -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',
|
||||
])
|
||||
]),
|
||||
}));
|
||||
}
|
Loading…
Reference in a new issue