[flutter_tool] Always re-copy Framework/podspec when regenerating iOS module project (#45877)

This commit is contained in:
Jonah Williams 2019-12-09 21:18:09 -08:00 committed by GitHub
parent 250cd92dac
commit 523ac7b6f5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 2 deletions

View file

@ -775,8 +775,7 @@ Future<void> _runHostOnlyDeviceLabTests() async {
() => _runDevicelabTest('module_test', environment: gradleEnvironment, testEmbeddingV2: true), () => _runDevicelabTest('module_test', environment: gradleEnvironment, testEmbeddingV2: true),
() => _runDevicelabTest('plugin_dependencies_test', environment: gradleEnvironment), () => _runDevicelabTest('plugin_dependencies_test', environment: gradleEnvironment),
// TODO(jmagman): Re-enable once flakiness is resolved, https://github.com/flutter/flutter/issues/37525 if (Platform.isMacOS) () => _runDevicelabTest('module_test_ios'),
// if (Platform.isMacOS) () => _runDevicelabTest('module_test_ios'),
if (Platform.isMacOS) () => _runDevicelabTest('build_ios_framework_module_test'), if (Platform.isMacOS) () => _runDevicelabTest('build_ios_framework_module_test'),
if (Platform.isMacOS) () => _runDevicelabTest('plugin_lint_mac'), if (Platform.isMacOS) () => _runDevicelabTest('plugin_lint_mac'),
() => _runDevicelabTest('plugin_test', environment: gradleEnvironment), () => _runDevicelabTest('plugin_test', environment: gradleEnvironment),

View file

@ -9,6 +9,7 @@ import 'package:xml/xml.dart' as xml;
import 'package:yaml/yaml.dart'; import 'package:yaml/yaml.dart';
import 'android/gradle_utils.dart' as gradle; import 'android/gradle_utils.dart' as gradle;
import 'artifacts.dart';
import 'base/common.dart'; import 'base/common.dart';
import 'base/context.dart'; import 'base/context.dart';
import 'base/file_system.dart'; import 'base/file_system.dart';
@ -456,6 +457,11 @@ class IosProject implements XcodeBasedProject {
if (!pubspecChanged && !toolingChanged) { if (!pubspecChanged && !toolingChanged) {
return; return;
} }
final Directory engineDest = ephemeralDirectory
.childDirectory('Flutter')
.childDirectory('engine');
_deleteIfExistsSync(ephemeralDirectory); _deleteIfExistsSync(ephemeralDirectory);
_overwriteFromTemplate(fs.path.join('module', 'ios', 'library'), ephemeralDirectory); _overwriteFromTemplate(fs.path.join('module', 'ios', 'library'), ephemeralDirectory);
// Add ephemeral host app, if a editable host app does not already exist. // Add ephemeral host app, if a editable host app does not already exist.
@ -464,6 +470,17 @@ class IosProject implements XcodeBasedProject {
if (hasPlugins(parent)) { if (hasPlugins(parent)) {
_overwriteFromTemplate(fs.path.join('module', 'ios', 'host_app_ephemeral_cocoapods'), ephemeralDirectory); _overwriteFromTemplate(fs.path.join('module', 'ios', 'host_app_ephemeral_cocoapods'), ephemeralDirectory);
} }
// Copy podspec and framework from engine cache. The actual build mode
// doesn't actually matter as it will be overwritten by xcode_backend.sh.
// However, cocoapods will run before that script and requires something
// to be in this location.
final Directory framework = fs.directory(artifacts.getArtifactPath(Artifact.flutterFramework,
platform: TargetPlatform.ios, mode: BuildMode.debug));
if (framework.existsSync()) {
final File podspec = framework.parent.childFile('Flutter.podspec');
copyDirectorySync(framework, engineDest.childDirectory('Flutter.framework'));
podspec.copySync(engineDest.childFile('Flutter.podspec').path);
}
} }
} }