Skip to content

Commit 2ee9ca3

Browse files
committed
Merge branch 'main' into ah/ai-logic-rename
# Conflicts: # FirebaseAI.podspec
2 parents 209d26f + d62802a commit 2ee9ca3

File tree

120 files changed

+3630
-340
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+3630
-340
lines changed

.github/workflows/auth.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,5 +141,6 @@ jobs:
141141
platforms: '[ "ios", "tvos --skip-tests", "macos --skip-tests", "watchos --skip-tests" ]'
142142
flags: '[ "--use-static-frameworks" ]'
143143
setup_command: scripts/configure_test_keychain.sh
144+
ignore_deprecation_warnings: true
144145
secrets:
145146
plist_secret: ${{ secrets.GHASecretsGPGPassphrase1 }}

.github/workflows/common_cocoapods.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@ on:
7575
required: false
7676
default: true
7777

78+
# Whether to lint with `--verbose`. Defaults to false.
79+
verbose:
80+
type: boolean
81+
required: false
82+
default: false
83+
7884
# Whether to additionally build with Swift 6. Defaults to false.
7985
supports_swift6:
8086
type: boolean
@@ -151,6 +157,7 @@ jobs:
151157
command: |
152158
scripts/pod_lib_lint.rb ${{ inputs.product }}.podspec --platforms=${{ matrix.platform }} \
153159
${{ inputs.allow_warnings == true && '--allow-warnings' || '' }} \
160+
${{ inputs.verbose == true && '--verbose' || '' }} \
154161
${{ inputs.analyze == false && '--no-analyze' || '' }} \
155162
${{ inputs.test_specs != '' && format('--test-specs={0}', inputs.test_specs) || '' }} \
156163
${{ (contains(inputs.buildonly_platforms, matrix.platform) || contains(inputs.buildonly_platforms, 'all')) && '--skip-tests' || '' }}

.github/workflows/common_cocoapods_cron.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,11 @@ on:
4646
required: false
4747
default: "macos-15"
4848

49-
env:
50-
FIREBASE_CI: true
49+
# Whether to ignore deprecation warnings by setting FIREBASE_CI.
50+
ignore_deprecation_warnings:
51+
type: boolean
52+
required: false
53+
default: false
5154

5255
jobs:
5356
cron-job:
@@ -67,6 +70,9 @@ jobs:
6770
run: scripts/setup_bundler.sh
6871
- name: Xcode
6972
run: sudo xcode-select -s /Applications/${{ inputs.xcode }}.app/Contents/Developer
73+
- name: Set FIREBASE_CI, if needed.
74+
if: inputs.ignore_deprecation_warnings == true
75+
run: echo "FIREBASE_CI=true" >> $GITHUB_ENV
7076
- name: Run setup command, if needed.
7177
if: inputs.setup_command != ''
7278
env:

.github/workflows/firebaseai.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,13 +59,13 @@ jobs:
5959
path: .build
6060
key: ${{ needs.spm.outputs.cache_key }}
6161
- name: Install Secret GoogleService-Info.plist
62-
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/VertexAI/TestApp-GoogleService-Info.plist.gpg \
62+
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info.plist.gpg \
6363
FirebaseAI/Tests/TestApp/Resources/GoogleService-Info.plist "$secrets_passphrase"
6464
- name: Install Secret GoogleService-Info-Spark.plist
65-
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/VertexAI/TestApp-GoogleService-Info-Spark.plist.gpg \
65+
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/FirebaseAI/TestApp-GoogleService-Info-Spark.plist.gpg \
6666
FirebaseAI/Tests/TestApp/Resources/GoogleService-Info-Spark.plist "$secrets_passphrase"
6767
- name: Install Secret Credentials.swift
68-
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/VertexAI/TestApp-Credentials.swift.gpg \
68+
run: scripts/decrypt_gha_secret.sh scripts/gha-encrypted/FirebaseAI/TestApp-Credentials.swift.gpg \
6969
FirebaseAI/Tests/TestApp/Tests/Integration/Credentials.swift "$secrets_passphrase"
7070
- name: Xcode
7171
run: sudo xcode-select -s /Applications/${{ matrix.xcode }}.app/Contents/Developer

.github/workflows/spm.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ jobs:
8585
max_attempts: 3
8686
retry_wait_seconds: 120
8787
command: scripts/build.sh Firebase-Package iOS ${{ matrix.test }}
88+
- uses: actions/upload-artifact@v4
89+
if: ${{ failure() }}
90+
with:
91+
name: spm-build-run-${{ matrix.os }}-${{ matrix.xcode }}-logs
92+
path: xcodebuild-*.log
93+
if-no-files-found: error
8894

8995
# Test iOS Device build since some Firestore dependencies build different files.
9096
iOS-Device:
@@ -113,6 +119,12 @@ jobs:
113119
run: scripts/setup_spm_tests.sh
114120
- name: iOS Device and Test Build
115121
run: scripts/third_party/travis/retry.sh ./scripts/build.sh Firebase-Package iOS-device spmbuildonly
122+
- uses: actions/upload-artifact@v4
123+
if: ${{ failure() }}
124+
with:
125+
name: spm-ios-device-${{ matrix.os }}-${{ matrix.xcode }}-logs
126+
path: xcodebuild-*.log
127+
if-no-files-found: error
116128

117129
platforms:
118130
# Don't run on private repo unless it is a PR.
@@ -148,3 +160,10 @@ jobs:
148160
run: scripts/third_party/travis/retry.sh ./scripts/build.sh version-test ${{ matrix.target }} spm
149161
- name: Analytics Build Tests
150162
run: scripts/third_party/travis/retry.sh ./scripts/build.sh analytics-import-test ${{ matrix.target }} spm
163+
- uses: actions/upload-artifact@v4
164+
if: ${{ failure() }}
165+
with:
166+
name: spm-platforms-${{ matrix.target }}-${{ matrix.os }}-${{ matrix.xcode }}-logs
167+
path: xcodebuild-*.log
168+
if-no-files-found: error
169+

Crashlytics/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# 12.4.0
2+
- [fixed] Make set development platform APIs to chain on Crashlytics context init promise.
3+
14
# 12.3.0
25
- [fixed] Add missing nanopb dependency to fix SwiftPM builds when building
36
dynamically linked libraries. (#15276)

Crashlytics/Crashlytics/FIRCrashlytics.m

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ @interface FIRCrashlytics () <FIRLibrary,
111111
// Dependencies common to each of the Controllers
112112
@property(nonatomic, strong) FIRCLSManagerData *managerData;
113113

114+
@property(nonatomic, nullable) FBLPromise *contextInitPromise;
115+
114116
@end
115117

116118
@implementation FIRCrashlytics
@@ -197,14 +199,15 @@ - (instancetype)initWithApp:(FIRApp *)app
197199
});
198200
}
199201

200-
[[[_reportManager startWithProfiling] then:^id _Nullable(NSNumber *_Nullable value) {
201-
if (![value boolValue]) {
202-
FIRCLSErrorLog(@"Crash reporting could not be initialized");
203-
}
204-
return value;
205-
}] catch:^void(NSError *error) {
206-
FIRCLSErrorLog(@"Crash reporting failed to initialize with error: %@", error);
207-
}];
202+
_contextInitPromise =
203+
[[[_reportManager startWithProfiling] then:^id _Nullable(NSNumber *_Nullable value) {
204+
if (![value boolValue]) {
205+
FIRCLSErrorLog(@"Crash reporting could not be initialized");
206+
}
207+
return value;
208+
}] catch:^void(NSError *error) {
209+
FIRCLSErrorLog(@"Crash reporting failed to initialize with error: %@", error);
210+
}];
208211

209212
// RemoteConfig subscription should be made after session report directory created.
210213
if (remoteConfig) {
@@ -383,8 +386,11 @@ - (NSString *)developmentPlatformName {
383386
}
384387

385388
- (void)setDevelopmentPlatformName:(NSString *)developmentPlatformName {
386-
FIRCLSUserLoggingRecordInternalKeyValue(FIRCLSDevelopmentPlatformNameKey,
387-
developmentPlatformName);
389+
[self waitForContextInit:developmentPlatformName
390+
callback:^{
391+
FIRCLSUserLoggingRecordInternalKeyValue(FIRCLSDevelopmentPlatformNameKey,
392+
developmentPlatformName);
393+
}];
388394
}
389395

390396
- (NSString *)developmentPlatformVersion {
@@ -393,8 +399,11 @@ - (NSString *)developmentPlatformVersion {
393399
}
394400

395401
- (void)setDevelopmentPlatformVersion:(NSString *)developmentPlatformVersion {
396-
FIRCLSUserLoggingRecordInternalKeyValue(FIRCLSDevelopmentPlatformVersionKey,
397-
developmentPlatformVersion);
402+
[self waitForContextInit:developmentPlatformVersion
403+
callback:^{
404+
FIRCLSUserLoggingRecordInternalKeyValue(FIRCLSDevelopmentPlatformVersionKey,
405+
developmentPlatformVersion);
406+
}];
398407
}
399408

400409
#pragma mark - API: Errors and Exceptions
@@ -445,4 +454,16 @@ - (void)rolloutsStateDidChange:(FIRRolloutsState *_Nonnull)rolloutsState {
445454
[_remoteConfigManager updateRolloutsStateWithRolloutsState:rolloutsState
446455
reportID:currentReportID];
447456
}
457+
458+
#pragma mark - Private Helpsers
459+
- (void)waitForContextInit:(NSString *)contextLog callback:(void (^)(void))callback {
460+
if (!_contextInitPromise) {
461+
FIRCLSErrorLog(@"Crashlytics method called before SDK was initialized: %@", contextLog);
462+
return;
463+
}
464+
[_contextInitPromise then:^id _Nullable(id _Nullable value) {
465+
callback();
466+
return nil;
467+
}];
468+
}
448469
@end

Crashlytics/UnitTests/FIRCLSContextManagerTests.m

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,27 @@ - (void)test_settingSessionIDOutOfOrder_protoHasLastSessionID {
122122
XCTAssertEqualObjects(adapter.identity.app_quality_session_id, TestContextSessionID2);
123123
}
124124

125+
// This test is for chain on init promise for development platform related setters
126+
- (void)test_promisesChainOnInitPromiseInOrder {
127+
NSMutableArray<NSString *> *result = @[].mutableCopy;
128+
NSMutableArray<NSString *> *expectation = @[].mutableCopy;
129+
130+
for (int j = 0; j < 100; j++) {
131+
[expectation addObject:[NSString stringWithFormat:@"%d", j]];
132+
}
133+
134+
FBLPromise *promise = [self.contextManager setupContextWithReport:self.report
135+
settings:self.mockSettings
136+
fileManager:self.fileManager];
137+
138+
for (int i = 0; i < 100; i++) {
139+
[promise then:^id _Nullable(id _Nullable value) {
140+
[result addObject:[NSString stringWithFormat:@"%d", i]];
141+
if (i == 99) {
142+
XCTAssertTrue([result isEqualToArray:expectation]);
143+
}
144+
return nil;
145+
}];
146+
}
147+
}
125148
@end

Firebase.podspec

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = 'Firebase'
3-
s.version = '12.4.0'
3+
s.version = '12.5.0'
44
s.summary = 'Firebase'
55

66
s.description = <<-DESC
@@ -36,14 +36,14 @@ Simplify your app development, grow your user base, and monetize more effectivel
3636
ss.ios.deployment_target = '15.0'
3737
ss.osx.deployment_target = '10.15'
3838
ss.tvos.deployment_target = '15.0'
39-
ss.ios.dependency 'FirebaseAnalytics', '~> 12.4.0'
40-
ss.osx.dependency 'FirebaseAnalytics', '~> 12.4.0'
41-
ss.tvos.dependency 'FirebaseAnalytics', '~> 12.4.0'
39+
ss.ios.dependency 'FirebaseAnalytics', '~> 12.5.0'
40+
ss.osx.dependency 'FirebaseAnalytics', '~> 12.5.0'
41+
ss.tvos.dependency 'FirebaseAnalytics', '~> 12.5.0'
4242
ss.dependency 'Firebase/CoreOnly'
4343
end
4444

4545
s.subspec 'CoreOnly' do |ss|
46-
ss.dependency 'FirebaseCore', '~> 12.4.0'
46+
ss.dependency 'FirebaseCore', '~> 12.5.0'
4747
ss.source_files = 'CoreOnly/Sources/Firebase.h'
4848
ss.preserve_paths = 'CoreOnly/Sources/module.modulemap'
4949
if ENV['FIREBASE_POD_REPO_FOR_DEV_POD'] then
@@ -70,7 +70,7 @@ Simplify your app development, grow your user base, and monetize more effectivel
7070

7171
s.subspec 'ABTesting' do |ss|
7272
ss.dependency 'Firebase/CoreOnly'
73-
ss.dependency 'FirebaseABTesting', '~> 12.4.0'
73+
ss.dependency 'FirebaseABTesting', '~> 12.5.0'
7474
# Standard platforms PLUS watchOS.
7575
ss.ios.deployment_target = '15.0'
7676
ss.osx.deployment_target = '10.15'
@@ -80,13 +80,13 @@ Simplify your app development, grow your user base, and monetize more effectivel
8080

8181
s.subspec 'AppDistribution' do |ss|
8282
ss.dependency 'Firebase/CoreOnly'
83-
ss.ios.dependency 'FirebaseAppDistribution', '~> 12.4.0-beta'
83+
ss.ios.dependency 'FirebaseAppDistribution', '~> 12.5.0-beta'
8484
ss.ios.deployment_target = '15.0'
8585
end
8686

8787
s.subspec 'AppCheck' do |ss|
8888
ss.dependency 'Firebase/CoreOnly'
89-
ss.dependency 'FirebaseAppCheck', '~> 12.4.0'
89+
ss.dependency 'FirebaseAppCheck', '~> 12.5.0'
9090
ss.ios.deployment_target = '15.0'
9191
ss.osx.deployment_target = '10.15'
9292
ss.tvos.deployment_target = '15.0'
@@ -95,7 +95,7 @@ Simplify your app development, grow your user base, and monetize more effectivel
9595

9696
s.subspec 'Auth' do |ss|
9797
ss.dependency 'Firebase/CoreOnly'
98-
ss.dependency 'FirebaseAuth', '~> 12.4.0'
98+
ss.dependency 'FirebaseAuth', '~> 12.5.0'
9999
# Standard platforms PLUS watchOS.
100100
ss.ios.deployment_target = '15.0'
101101
ss.osx.deployment_target = '10.15'
@@ -105,7 +105,7 @@ Simplify your app development, grow your user base, and monetize more effectivel
105105

106106
s.subspec 'Crashlytics' do |ss|
107107
ss.dependency 'Firebase/CoreOnly'
108-
ss.dependency 'FirebaseCrashlytics', '~> 12.4.0'
108+
ss.dependency 'FirebaseCrashlytics', '~> 12.5.0'
109109
# Standard platforms PLUS watchOS.
110110
ss.ios.deployment_target = '15.0'
111111
ss.osx.deployment_target = '10.15'
@@ -115,7 +115,7 @@ Simplify your app development, grow your user base, and monetize more effectivel
115115

116116
s.subspec 'Database' do |ss|
117117
ss.dependency 'Firebase/CoreOnly'
118-
ss.dependency 'FirebaseDatabase', '~> 12.4.0'
118+
ss.dependency 'FirebaseDatabase', '~> 12.5.0'
119119
# Standard platforms PLUS watchOS 7.
120120
ss.ios.deployment_target = '15.0'
121121
ss.osx.deployment_target = '10.15'
@@ -125,15 +125,15 @@ Simplify your app development, grow your user base, and monetize more effectivel
125125

126126
s.subspec 'Firestore' do |ss|
127127
ss.dependency 'Firebase/CoreOnly'
128-
ss.dependency 'FirebaseFirestore', '~> 12.4.0'
128+
ss.dependency 'FirebaseFirestore', '~> 12.5.0'
129129
ss.ios.deployment_target = '15.0'
130130
ss.osx.deployment_target = '10.15'
131131
ss.tvos.deployment_target = '15.0'
132132
end
133133

134134
s.subspec 'Functions' do |ss|
135135
ss.dependency 'Firebase/CoreOnly'
136-
ss.dependency 'FirebaseFunctions', '~> 12.4.0'
136+
ss.dependency 'FirebaseFunctions', '~> 12.5.0'
137137
# Standard platforms PLUS watchOS.
138138
ss.ios.deployment_target = '15.0'
139139
ss.osx.deployment_target = '10.15'
@@ -143,20 +143,20 @@ Simplify your app development, grow your user base, and monetize more effectivel
143143

144144
s.subspec 'InAppMessaging' do |ss|
145145
ss.dependency 'Firebase/CoreOnly'
146-
ss.ios.dependency 'FirebaseInAppMessaging', '~> 12.4.0-beta'
147-
ss.tvos.dependency 'FirebaseInAppMessaging', '~> 12.4.0-beta'
146+
ss.ios.dependency 'FirebaseInAppMessaging', '~> 12.5.0-beta'
147+
ss.tvos.dependency 'FirebaseInAppMessaging', '~> 12.5.0-beta'
148148
ss.ios.deployment_target = '15.0'
149149
ss.tvos.deployment_target = '15.0'
150150
end
151151

152152
s.subspec 'Installations' do |ss|
153153
ss.dependency 'Firebase/CoreOnly'
154-
ss.dependency 'FirebaseInstallations', '~> 12.4.0'
154+
ss.dependency 'FirebaseInstallations', '~> 12.5.0'
155155
end
156156

157157
s.subspec 'Messaging' do |ss|
158158
ss.dependency 'Firebase/CoreOnly'
159-
ss.dependency 'FirebaseMessaging', '~> 12.4.0'
159+
ss.dependency 'FirebaseMessaging', '~> 12.5.0'
160160
# Standard platforms PLUS watchOS.
161161
ss.ios.deployment_target = '15.0'
162162
ss.osx.deployment_target = '10.15'
@@ -166,7 +166,7 @@ Simplify your app development, grow your user base, and monetize more effectivel
166166

167167
s.subspec 'MLModelDownloader' do |ss|
168168
ss.dependency 'Firebase/CoreOnly'
169-
ss.dependency 'FirebaseMLModelDownloader', '~> 12.4.0-beta'
169+
ss.dependency 'FirebaseMLModelDownloader', '~> 12.5.0-beta'
170170
# Standard platforms PLUS watchOS.
171171
ss.ios.deployment_target = '15.0'
172172
ss.osx.deployment_target = '10.15'
@@ -176,15 +176,15 @@ Simplify your app development, grow your user base, and monetize more effectivel
176176

177177
s.subspec 'Performance' do |ss|
178178
ss.dependency 'Firebase/CoreOnly'
179-
ss.ios.dependency 'FirebasePerformance', '~> 12.4.0'
180-
ss.tvos.dependency 'FirebasePerformance', '~> 12.4.0'
179+
ss.ios.dependency 'FirebasePerformance', '~> 12.5.0'
180+
ss.tvos.dependency 'FirebasePerformance', '~> 12.5.0'
181181
ss.ios.deployment_target = '15.0'
182182
ss.tvos.deployment_target = '15.0'
183183
end
184184

185185
s.subspec 'RemoteConfig' do |ss|
186186
ss.dependency 'Firebase/CoreOnly'
187-
ss.dependency 'FirebaseRemoteConfig', '~> 12.4.0'
187+
ss.dependency 'FirebaseRemoteConfig', '~> 12.5.0'
188188
# Standard platforms PLUS watchOS.
189189
ss.ios.deployment_target = '15.0'
190190
ss.osx.deployment_target = '10.15'
@@ -194,7 +194,7 @@ Simplify your app development, grow your user base, and monetize more effectivel
194194

195195
s.subspec 'Storage' do |ss|
196196
ss.dependency 'Firebase/CoreOnly'
197-
ss.dependency 'FirebaseStorage', '~> 12.4.0'
197+
ss.dependency 'FirebaseStorage', '~> 12.5.0'
198198
# Standard platforms PLUS watchOS.
199199
ss.ios.deployment_target = '15.0'
200200
ss.osx.deployment_target = '10.15'

FirebaseABTesting.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = 'FirebaseABTesting'
3-
s.version = '12.4.0'
3+
s.version = '12.5.0'
44
s.summary = 'Firebase ABTesting'
55

66
s.description = <<-DESC
@@ -51,7 +51,7 @@ Firebase Cloud Messaging and Firebase Remote Config in your app.
5151
s.pod_target_xcconfig = {
5252
'HEADER_SEARCH_PATHS' => '"${PODS_TARGET_SRCROOT}"'
5353
}
54-
s.dependency 'FirebaseCore', '~> 12.4.0'
54+
s.dependency 'FirebaseCore', '~> 12.5.0'
5555

5656
s.test_spec 'unit' do |unit_tests|
5757
unit_tests.scheme = { :code_coverage => true }

0 commit comments

Comments
 (0)