mirror of
https://github.com/flutter/flutter
synced 2024-09-19 16:21:58 +00:00
build ios-framework simulator slices for profile/release (#73378)
This commit is contained in:
parent
e21d822074
commit
3082a2806e
|
@ -191,7 +191,7 @@ Future<void> _testBuildIosFramework(Directory projectDir, { bool isModule = fals
|
|||
|
||||
section('Check debug build has no Dart AOT');
|
||||
|
||||
final String aotSymbols = await dylibSymbols(debugAppFrameworkPath);
|
||||
final String aotSymbols = await _dylibSymbols(debugAppFrameworkPath);
|
||||
|
||||
if (aotSymbols.contains('architecture') ||
|
||||
aotSymbols.contains('_kDartVmSnapshot')) {
|
||||
|
@ -212,7 +212,7 @@ Future<void> _testBuildIosFramework(Directory projectDir, { bool isModule = fals
|
|||
|
||||
await _checkBitcode(appFrameworkPath, mode);
|
||||
|
||||
final String aotSymbols = await dylibSymbols(appFrameworkPath);
|
||||
final String aotSymbols = await _dylibSymbols(appFrameworkPath);
|
||||
|
||||
if (!aotSymbols.contains('_kDartVmSnapshot')) {
|
||||
throw TaskResult.failure('$mode App.framework missing Dart AOT');
|
||||
|
@ -228,7 +228,7 @@ Future<void> _testBuildIosFramework(Directory projectDir, { bool isModule = fals
|
|||
'vm_snapshot_data',
|
||||
));
|
||||
|
||||
checkFileNotExists(path.join(
|
||||
checkFileExists(path.join(
|
||||
outputPath,
|
||||
mode,
|
||||
'App.xcframework',
|
||||
|
@ -314,13 +314,8 @@ Future<void> _testBuildIosFramework(Directory projectDir, { bool isModule = fals
|
|||
'DeviceInfoPlugin.h',
|
||||
);
|
||||
|
||||
if (mode == 'Debug') {
|
||||
checkFileExists(simulatorFrameworkPath);
|
||||
checkFileExists(simulatorFrameworkHeaderPath);
|
||||
} else {
|
||||
checkFileNotExists(simulatorFrameworkPath);
|
||||
checkFileNotExists(simulatorFrameworkHeaderPath);
|
||||
}
|
||||
}
|
||||
|
||||
section('Check all modes have generated plugin registrant');
|
||||
|
@ -357,11 +352,7 @@ Future<void> _testBuildIosFramework(Directory projectDir, { bool isModule = fals
|
|||
'Headers',
|
||||
'GeneratedPluginRegistrant.h',
|
||||
);
|
||||
if (mode == 'Debug') {
|
||||
checkFileExists(simulatorHeaderPath);
|
||||
} else {
|
||||
checkFileNotExists(simulatorHeaderPath);
|
||||
}
|
||||
}
|
||||
|
||||
// This builds all build modes' frameworks by default
|
||||
|
@ -443,3 +434,12 @@ Future<void> _checkBitcode(String frameworkPath, String mode) async {
|
|||
throw TaskResult.failure('$frameworkPath does not contain bitcode');
|
||||
}
|
||||
}
|
||||
|
||||
Future<String> _dylibSymbols(String pathToDylib) {
|
||||
return eval('nm', <String>[
|
||||
'-g',
|
||||
pathToDylib,
|
||||
'-arch',
|
||||
'arm64',
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -10,10 +10,6 @@ import 'utils.dart';
|
|||
|
||||
typedef SimulatorFunction = Future<void> Function(String deviceId);
|
||||
|
||||
Future<String> dylibSymbols(String pathToDylib) {
|
||||
return eval('nm', <String>['-g', pathToDylib]);
|
||||
}
|
||||
|
||||
Future<String> fileType(String pathToBinary) {
|
||||
return eval('file', <String>[pathToBinary]);
|
||||
}
|
||||
|
|
|
@ -342,17 +342,9 @@ end
|
|||
);
|
||||
final List<EnvironmentType> environmentTypes = <EnvironmentType>[
|
||||
EnvironmentType.physical,
|
||||
EnvironmentType.simulator,
|
||||
];
|
||||
final List<Directory> frameworks = <Directory>[];
|
||||
Target target;
|
||||
if (buildInfo.isDebug) {
|
||||
environmentTypes.add(EnvironmentType.simulator);
|
||||
target = const DebugIosApplicationBundle();
|
||||
} else if (buildInfo.isProfile) {
|
||||
target = const ProfileIosApplicationBundle();
|
||||
} else {
|
||||
target = const ReleaseIosApplicationBundle();
|
||||
}
|
||||
|
||||
try {
|
||||
for (final EnvironmentType sdkType in environmentTypes) {
|
||||
|
@ -392,6 +384,15 @@ end
|
|||
? null
|
||||
: globals.flutterVersion.engineRevision,
|
||||
);
|
||||
Target target;
|
||||
// Always build debug for simulator.
|
||||
if (buildInfo.isDebug || sdkType == EnvironmentType.simulator) {
|
||||
target = const DebugIosApplicationBundle();
|
||||
} else if (buildInfo.isProfile) {
|
||||
target = const ProfileIosApplicationBundle();
|
||||
} else {
|
||||
target = const ReleaseIosApplicationBundle();
|
||||
}
|
||||
final BuildResult result = await buildSystem.build(target, environment);
|
||||
if (!result.success) {
|
||||
for (final ExceptionMeasurement measurement
|
||||
|
@ -453,7 +454,8 @@ end
|
|||
throwToolExit('Unable to build plugin frameworks: ${buildPluginsResult.stderr}');
|
||||
}
|
||||
|
||||
if (mode == BuildMode.debug) {
|
||||
// Always build debug for simulator.
|
||||
final String simulatorConfiguration = toTitleCase(getNameForBuildMode(BuildMode.debug));
|
||||
pluginsBuildCommand = <String>[
|
||||
...globals.xcode.xcrunCommand(),
|
||||
'xcodebuild',
|
||||
|
@ -461,7 +463,7 @@ end
|
|||
'-sdk',
|
||||
'iphonesimulator',
|
||||
'-configuration',
|
||||
xcodeBuildConfiguration,
|
||||
simulatorConfiguration,
|
||||
'SYMROOT=${simulatorBuildOutput.path}',
|
||||
'ENABLE_BITCODE=YES', // Support host apps with bitcode enabled.
|
||||
'ARCHS=x86_64',
|
||||
|
@ -482,13 +484,12 @@ end
|
|||
'Unable to build plugin frameworks for simulator: ${buildPluginsResult.stderr}',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
final Directory iPhoneBuildConfiguration = iPhoneBuildOutput.childDirectory(
|
||||
'$xcodeBuildConfiguration-iphoneos',
|
||||
);
|
||||
final Directory simulatorBuildConfiguration = simulatorBuildOutput.childDirectory(
|
||||
'$xcodeBuildConfiguration-iphonesimulator',
|
||||
'$simulatorConfiguration-iphonesimulator',
|
||||
);
|
||||
|
||||
final Iterable<Directory> products = iPhoneBuildConfiguration
|
||||
|
@ -504,7 +505,6 @@ end
|
|||
|
||||
final List<Directory> frameworks = <Directory>[
|
||||
podProduct as Directory,
|
||||
if (mode == BuildMode.debug)
|
||||
simulatorBuildConfiguration
|
||||
.childDirectory(builtProduct.basename)
|
||||
.childDirectory(podFrameworkName)
|
||||
|
|
Loading…
Reference in a new issue