Skip to content

Commit ba5f241

Browse files
fix(core): auth Swift support requires FLTFirebaseCorePlugin & messages to be shared (#16774)
1 parent 5e6f02c commit ba5f241

File tree

13 files changed

+118
-3
lines changed

13 files changed

+118
-3
lines changed

Package.swift

+14-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
import Foundation
99
import PackageDescription
1010

11+
// auto-generated by melos post commit hook script
12+
let firebase_core_version: String = "3.8.0"
13+
let firebase_ios_sdk_version: String = "11.4.0"
14+
1115
// Shared Swift package manager code for firebase core
1216
let package = Package(
1317
name: "remote_firebase_core",
@@ -21,7 +25,10 @@ let package = Package(
2125
dependencies: [
2226
// TODO: this is fine for now, but will require a way of retrieving the firebase-ios-sdk
2327
// likely create a script that runs in preCommit hook of melos
24-
.package(url: "https://github.com/firebase/firebase-ios-sdk", from: "11.0.0"),
28+
.package(
29+
url: "https://github.com/firebase/firebase-ios-sdk",
30+
from: Version(firebase_ios_sdk_version)!
31+
),
2532
],
2633
targets: [
2734
.target(
@@ -30,7 +37,12 @@ let package = Package(
3037
.product(name: "FirebaseInstallations", package: "firebase-ios-sdk"),
3138
],
3239
path: "Sources/firebase_core_shared",
33-
publicHeadersPath: "include"
40+
publicHeadersPath: "include",
41+
cSettings: [
42+
.headerSearchPath("include/firebase_core"),
43+
.define("LIBRARY_VERSION", to: "\"\(firebase_core_version)\""),
44+
.define("LIBRARY_NAME", to: "\"flutter-fire-core\""),
45+
]
3446
),
3547
]
3648
)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../packages/firebase_core/firebase_core/ios/firebase_core/Sources/firebase_core/FLTFirebaseCorePlugin.m
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../packages/firebase_core/firebase_core/ios/firebase_core/Sources/firebase_core/include/firebase_core/FLTFirebaseCorePlugin.h
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../../packages/firebase_core/firebase_core/ios/firebase_core/Sources/firebase_core/include/firebase_core/messages.g.h
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../packages/firebase_core/firebase_core/ios/firebase_core/Sources/firebase_core/messages.g.m

melos.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ command:
1919
preCommit: |
2020
dart run scripts/generate_vertexai_version.dart && \
2121
dart run scripts/generate_dataconnect_version.dart && \
22-
dart run scripts/generate_ios_sdk_version_txt_spm.dart && \
22+
dart run scripts/generate_versions_spm.dart && \
2323
git add packages/firebase_vertexai/firebase_vertexai/lib/src/vertex_version.dart && \
2424
git add packages/firebase_data_connect/firebase_data_connect/lib/src/dataconnect_version.dart
2525
post: |

packages/firebase_core/firebase_core/ios/firebase_core/Package.swift

+4
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,12 @@ let package = Package(
109109
],
110110
exclude: [
111111
// These are now pulled in as a remote dependency from FlutterFire repo
112+
"FLTFirebaseCorePlugin.m",
112113
"FLTFirebasePlugin.m",
113114
"FLTFirebasePluginRegistry.m",
115+
"messages.g.m",
116+
"include/firebase_core/FLTFirebaseCorePlugin.h",
117+
"include/firebase_core/messages.g.h",
114118
"include/firebase_core/FLTFirebasePlugin.h",
115119
"include/firebase_core/FLTFirebasePluginRegistry.h",
116120
],

packages/firebase_core/firebase_core/ios/firebase_core/Sources/firebase_core/FLTFirebaseCorePlugin.m

+14
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,23 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
#if __has_include("include/firebase_core/FLTFirebaseCorePlugin.h")
56
#import "include/firebase_core/FLTFirebaseCorePlugin.h"
7+
#else
8+
#import "include/FLTFirebaseCorePlugin.h"
9+
#endif
10+
11+
#if __has_include("include/firebase_core/FLTFirebasePluginRegistry.h")
612
#import "include/firebase_core/FLTFirebasePluginRegistry.h"
13+
#else
14+
#import "include/FLTFirebasePluginRegistry.h"
15+
#endif
16+
17+
#if __has_include("include/firebase_core/messages.g.h")
718
#import "include/firebase_core/messages.g.h"
19+
#else
20+
#import "include/messages.g.h"
21+
#endif
822

923
@implementation FLTFirebaseCorePlugin {
1024
BOOL _coreInitialized;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// Copyright 2023, the Chromium project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.

packages/firebase_core/firebase_core/ios/firebase_core/Sources/firebase_core/include/firebase_core/FLTFirebaseCorePlugin.h

+4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@
1010
#endif
1111

1212
#import "FLTFirebasePlugin.h"
13+
#if __has_include("include/messages.g.h")
14+
#import "include/messages.g.h"
15+
#else
1316
#import "messages.g.h"
17+
#endif
1418

1519
@interface FLTFirebaseCorePlugin
1620
: FLTFirebasePlugin <FlutterPlugin, FLTFirebasePlugin, FirebaseCoreHostApi, FirebaseAppHostApi>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// Copyright 2023, the Chromium project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.

packages/firebase_core/firebase_core/ios/firebase_core/Sources/firebase_core/messages.g.m

+4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@
44
// Autogenerated from Pigeon (v9.2.5), do not edit directly.
55
// See also: https://pub.dev/packages/pigeon
66

7+
#if __has_include("include/firebase_core/messages.g.h")
78
#import "include/firebase_core/messages.g.h"
9+
#else
10+
#import "include/messages.g.h"
11+
#endif
812
#if TARGET_OS_OSX
913
#import <FlutterMacOS/FlutterMacOS.h>
1014
#else

scripts/generate_ios_sdk_version_txt_spm.dart renamed to scripts/generate_versions_spm.dart

+67
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'package:melos/melos.dart' as melos;
66
import 'package:glob/glob.dart';
77
import 'dart:io';
88
import 'package:cli_util/cli_logging.dart' as logging;
9+
import 'package:yaml/yaml.dart';
910

1011
// Used to generate a simple txt file for Package.swift file to parse in order to use correct firebase-ios-sdk version
1112

@@ -33,6 +34,8 @@ void main(List<String> args) async {
3334
versionFile.writeAsStringSync(firebaseiOSVersion);
3435
}
3536
}
37+
// Update the versions in root Package.swift
38+
updateVersionsPackageSwift(firebaseiOSVersion);
3639
}
3740

3841
Future<melos.MelosWorkspace> getMelosWorkspace() async {
@@ -69,3 +72,67 @@ String getFirebaseiOSVersion(File firebaseCoreIosSdkVersion) {
6972
throw Exception('firebase_sdk_version.rb file does not exist.');
7073
}
7174
}
75+
76+
void updateVersionsPackageSwift(String firebaseiOSVersion) {
77+
// Define the path to the pubspec.yaml file
78+
const pubspecPath = 'packages/firebase_core/firebase_core/pubspec.yaml';
79+
80+
81+
// Read the pubspec.yaml file
82+
final pubspecFile = File(pubspecPath);
83+
if (!pubspecFile.existsSync()) {
84+
print('Error: pubspec.yaml file not found at $pubspecPath');
85+
return;
86+
}
87+
88+
89+
// Parse the YAML content
90+
final pubspecContent = pubspecFile.readAsStringSync();
91+
final pubspecYaml = loadYaml(pubspecContent);
92+
93+
94+
// Extract the version
95+
final version = pubspecYaml['version'];
96+
if (version == null) {
97+
print('Error: Version not found in pubspec.yaml');
98+
return;
99+
}
100+
101+
102+
// Define the path to the Package.swift file
103+
const packageSwiftPath = 'Package.swift';
104+
105+
106+
// Read the Package.swift file
107+
final packageSwiftFile = File(packageSwiftPath);
108+
if (!packageSwiftFile.existsSync()) {
109+
print('Error: Package.swift file not found at $packageSwiftPath');
110+
return;
111+
}
112+
113+
114+
// Read the content of Package.swift
115+
final packageSwiftContent = packageSwiftFile.readAsStringSync();
116+
117+
118+
// Update the library_version_string with the new version
119+
final updatedFirebaseCoreVersion = packageSwiftContent.replaceAll(
120+
RegExp('let firebase_core_version: String = "[^"]+"'),
121+
'let firebase_core_version: String = "$version"',
122+
);
123+
124+
125+
final updatedFirebaseIosVersion = updatedFirebaseCoreVersion.replaceAll(
126+
RegExp('let firebase_ios_sdk_version: String = "[^"]+"'),
127+
'let firebase_ios_sdk_version: String = "$firebaseiOSVersion"',
128+
);
129+
130+
131+
// Write the updated content back to Package.swift
132+
packageSwiftFile.writeAsStringSync(updatedFirebaseIosVersion);
133+
134+
135+
print(
136+
'Updated Package.swift with firebase_core version: $version & firebase-ios-sdk version: $firebaseiOSVersion',
137+
);
138+
}

0 commit comments

Comments
 (0)