Fix embedding FlutterMacOS.framework for macOS add2app via cocoapods (#144248)

Fixes https://github.com/flutter/flutter/issues/144244.
This commit is contained in:
Victoria Ashworth 2024-03-05 15:59:49 -06:00 committed by GitHub
parent ff3b6dc02c
commit 7e05bc4b30
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 39 additions and 4 deletions

View file

@ -810,6 +810,41 @@ Future<void> _testBuildMacOSFramework(Directory projectDir) async {
'GeneratedPluginRegistrant.swift',
));
section('Validate embed FlutterMacOS.framework with CocoaPods');
final File podspec = File(path.join(
cocoapodsOutputPath,
'Debug',
'FlutterMacOS.podspec',
));
podspec.writeAsStringSync(
podspec.readAsStringSync().replaceFirst('null.null.0', '0.0.0'),
);
final Directory macosDirectory = Directory(path.join(projectDir.path, 'macos'));
final File podfile = File(path.join(macosDirectory.path, 'Podfile'));
final String currentPodfile = podfile.readAsStringSync();
// Temporarily test Add-to-App Cocoapods podspec for framework
podfile.writeAsStringSync('''
target 'Runner' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
pod 'FlutterMacOS', :podspec => '${podspec.path}'
end
''');
await inDirectory(macosDirectory, () async {
await eval('pod', <String>['install']);
});
// Change podfile back to original
podfile.writeAsStringSync(currentPodfile);
await inDirectory(macosDirectory, () async {
await eval('pod', <String>['install']);
});
section('Build frameworks without plugins');
await _testBuildFrameworksWithoutPlugins(projectDir, platform: 'macos');
}

View file

@ -186,7 +186,7 @@ $licenseSource
LICENSE
}
s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
s.source = { :http => '${cache.storageBaseUrl}/flutter_infra_release/flutter/${cache.engineRevision}/$artifactsMode/artifacts.zip' }
s.source = { :http => '${cache.storageBaseUrl}/flutter_infra_release/flutter/${cache.engineRevision}/$artifactsMode/FlutterMacOS.framework.zip' }
s.documentation_url = 'https://flutter.dev/docs'
s.osx.deployment_target = '10.14'
s.vendored_frameworks = 'FlutterMacOS.framework'

View file

@ -470,7 +470,7 @@ void main() {
final File expectedPodspec = outputDirectory.childFile('FlutterMacOS.podspec');
final String podspecContents = expectedPodspec.readAsStringSync();
expect(podspecContents, contains("'$storageBaseUrl/flutter_infra_release/flutter/$engineRevision/darwin-x64/artifacts.zip'"));
expect(podspecContents, contains("'$storageBaseUrl/flutter_infra_release/flutter/$engineRevision/darwin-x64/FlutterMacOS.framework.zip'"));
}, overrides: <Type, Generator>{
FileSystem: () => memoryFileSystem,
ProcessManager: () => FakeProcessManager.any(),
@ -489,7 +489,7 @@ void main() {
final File expectedPodspec = outputDirectory.childFile('FlutterMacOS.podspec');
final String podspecContents = expectedPodspec.readAsStringSync();
expect(podspecContents, contains("'$storageBaseUrl/flutter_infra_release/flutter/$engineRevision/darwin-x64-profile/artifacts.zip'"));
expect(podspecContents, contains("'$storageBaseUrl/flutter_infra_release/flutter/$engineRevision/darwin-x64-profile/FlutterMacOS.framework.zip'"));
}, overrides: <Type, Generator>{
FileSystem: () => memoryFileSystem,
ProcessManager: () => FakeProcessManager.any(),
@ -508,7 +508,7 @@ void main() {
final File expectedPodspec = outputDirectory.childFile('FlutterMacOS.podspec');
final String podspecContents = expectedPodspec.readAsStringSync();
expect(podspecContents, contains("'$storageBaseUrl/flutter_infra_release/flutter/$engineRevision/darwin-x64-release/artifacts.zip'"));
expect(podspecContents, contains("'$storageBaseUrl/flutter_infra_release/flutter/$engineRevision/darwin-x64-release/FlutterMacOS.framework.zip'"));
}, overrides: <Type, Generator>{
FileSystem: () => memoryFileSystem,
ProcessManager: () => FakeProcessManager.any(),