diff --git a/Android/firebase_dependencies.gradle b/Android/firebase_dependencies.gradle index 6782b02b7a..76c0d8c05e 100644 --- a/Android/firebase_dependencies.gradle +++ b/Android/firebase_dependencies.gradle @@ -159,7 +159,7 @@ project.afterEvaluate { // Add the bill-of-materials project.dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') } for (String lib : firebaseCpp.dependencies.libSet) { // Generate and include the proguard file diff --git a/app/app_resources/build.gradle b/app/app_resources/build.gradle index f718bed509..d12d331115 100644 --- a/app/app_resources/build.gradle +++ b/app/app_resources/build.gradle @@ -50,7 +50,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-analytics' } diff --git a/app/google_api_resources/build.gradle b/app/google_api_resources/build.gradle index df6690b984..696617bd2e 100644 --- a/app/google_api_resources/build.gradle +++ b/app/google_api_resources/build.gradle @@ -53,7 +53,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.android.gms:play-services-base:18.3.0' implementation project(':app:app_resources') diff --git a/app/invites_resources/build.gradle b/app/invites_resources/build.gradle index eb0e7cbc7a..ecf049d4b2 100644 --- a/app/invites_resources/build.gradle +++ b/app/invites_resources/build.gradle @@ -49,7 +49,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-dynamic-links' implementation project(':app:app_resources') diff --git a/app_check/app_check_resources/build.gradle b/app_check/app_check_resources/build.gradle index debb12d9ce..0ac2447da8 100644 --- a/app_check/app_check_resources/build.gradle +++ b/app_check/app_check_resources/build.gradle @@ -49,7 +49,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-appcheck' } diff --git a/auth/auth_resources/build.gradle b/auth/auth_resources/build.gradle index 45a7bce9da..4dd4fc2b96 100644 --- a/auth/auth_resources/build.gradle +++ b/auth/auth_resources/build.gradle @@ -49,7 +49,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-auth' implementation project(':app:app_resources') diff --git a/cpp_sdk_version.json b/cpp_sdk_version.json index 305dd85002..8a8231528e 100644 --- a/cpp_sdk_version.json +++ b/cpp_sdk_version.json @@ -1,5 +1,5 @@ { - "released": "11.7.0", - "stable": "11.7.0", - "head": "11.7.0" + "released": "11.8.0", + "stable": "11.8.0", + "head": "11.8.0" } diff --git a/database/database_resources/build.gradle b/database/database_resources/build.gradle index be0abdff20..ff510529ea 100644 --- a/database/database_resources/build.gradle +++ b/database/database_resources/build.gradle @@ -45,7 +45,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-database' //implementation project(':app:app_resources') diff --git a/firestore/firestore_resources/build.gradle b/firestore/firestore_resources/build.gradle index da63b8d882..c63cbb9c09 100644 --- a/firestore/firestore_resources/build.gradle +++ b/firestore/firestore_resources/build.gradle @@ -53,7 +53,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-firestore' } diff --git a/gma/gma_resources/build.gradle b/gma/gma_resources/build.gradle index 861f4bee98..b8d34ead71 100644 --- a/gma/gma_resources/build.gradle +++ b/gma/gma_resources/build.gradle @@ -50,7 +50,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.android.gms:play-services-ads:22.6.0' implementation 'com.google.android.ump:user-messaging-platform:2.1.0' diff --git a/gma/integration_test/src/integration_test.cc b/gma/integration_test/src/integration_test.cc index 0703674909..31c599cda9 100644 --- a/gma/integration_test/src/integration_test.cc +++ b/gma/integration_test/src/integration_test.cc @@ -2599,6 +2599,8 @@ TEST_F(FirebaseGmaUmpTest, TestUmpRequestConsentInfoUpdate) { using firebase::gma::ump::ConsentRequestParameters; using firebase::gma::ump::ConsentStatus; + FLAKY_TEST_SECTION_BEGIN(); + ConsentRequestParameters params; params.tag_for_under_age_of_consent = false; @@ -2607,7 +2609,13 @@ TEST_F(FirebaseGmaUmpTest, TestUmpRequestConsentInfoUpdate) { EXPECT_TRUE(future == consent_info_->RequestConsentInfoUpdateLastResult()); - WaitForCompletion(future, "RequestConsentInfoUpdate"); + WaitForCompletion(future, "RequestConsentInfoUpdate", + {firebase::gma::ump::kConsentRequestSuccess, + firebase::gma::ump::kConsentRequestErrorNetwork}); + // Retry only network errors. + EXPECT_NE(future.error(), firebase::gma::ump::kConsentRequestErrorNetwork); + + FLAKY_TEST_SECTION_END(); EXPECT_NE(consent_info_->GetConsentStatus(), firebase::gma::ump::kConsentStatusUnknown); @@ -2622,6 +2630,8 @@ TEST_F(FirebaseGmaUmpTest, TestUmpRequestConsentInfoUpdateDebugEEA) { using firebase::gma::ump::ConsentRequestParameters; using firebase::gma::ump::ConsentStatus; + FLAKY_TEST_SECTION_BEGIN(); + ConsentRequestParameters params; params.tag_for_under_age_of_consent = false; params.debug_settings.debug_geography = @@ -2632,7 +2642,13 @@ TEST_F(FirebaseGmaUmpTest, TestUmpRequestConsentInfoUpdateDebugEEA) { firebase::Future future = consent_info_->RequestConsentInfoUpdate(params); - WaitForCompletion(future, "RequestConsentInfoUpdate"); + WaitForCompletion(future, "RequestConsentInfoUpdate", + {firebase::gma::ump::kConsentRequestSuccess, + firebase::gma::ump::kConsentRequestErrorNetwork}); + // Retry only network errors. + EXPECT_NE(future.error(), firebase::gma::ump::kConsentRequestErrorNetwork); + + FLAKY_TEST_SECTION_END(); EXPECT_EQ(consent_info_->GetConsentStatus(), firebase::gma::ump::kConsentStatusRequired); @@ -2643,6 +2659,8 @@ TEST_F(FirebaseGmaUmpTest, TestUmpRequestConsentInfoUpdateDebugNonEEA) { using firebase::gma::ump::ConsentRequestParameters; using firebase::gma::ump::ConsentStatus; + FLAKY_TEST_SECTION_BEGIN(); + ConsentRequestParameters params; params.tag_for_under_age_of_consent = false; params.debug_settings.debug_geography = @@ -2653,7 +2671,13 @@ TEST_F(FirebaseGmaUmpTest, TestUmpRequestConsentInfoUpdateDebugNonEEA) { firebase::Future future = consent_info_->RequestConsentInfoUpdate(params); - WaitForCompletion(future, "RequestConsentInfoUpdate"); + WaitForCompletion(future, "RequestConsentInfoUpdate", + {firebase::gma::ump::kConsentRequestSuccess, + firebase::gma::ump::kConsentRequestErrorNetwork}); + // Retry only network errors. + EXPECT_NE(future.error(), firebase::gma::ump::kConsentRequestErrorNetwork); + + FLAKY_TEST_SECTION_END(); EXPECT_THAT(consent_info_->GetConsentStatus(), AnyOf(Eq(firebase::gma::ump::kConsentStatusNotRequired), @@ -2747,6 +2771,8 @@ TEST_F(FirebaseGmaUmpTest, TestUmpLoadFormUnderAgeOfConsent) { using firebase::gma::ump::ConsentRequestParameters; using firebase::gma::ump::ConsentStatus; + FLAKY_TEST_SECTION_BEGIN(); + ConsentRequestParameters params; params.tag_for_under_age_of_consent = true; params.debug_settings.debug_geography = @@ -2754,8 +2780,16 @@ TEST_F(FirebaseGmaUmpTest, TestUmpLoadFormUnderAgeOfConsent) { params.debug_settings.debug_device_ids = kTestDeviceIDs; params.debug_settings.debug_device_ids.push_back(GetDebugDeviceId()); - WaitForCompletion(consent_info_->RequestConsentInfoUpdate(params), - "RequestConsentInfoUpdate"); + firebase::Future future = + consent_info_->RequestConsentInfoUpdate(params); + + WaitForCompletion(future, "RequestConsentInfoUpdate", + {firebase::gma::ump::kConsentRequestSuccess, + firebase::gma::ump::kConsentRequestErrorNetwork}); + // Retry only network errors. + EXPECT_NE(future.error(), firebase::gma::ump::kConsentRequestErrorNetwork); + + FLAKY_TEST_SECTION_END(); firebase::Future load_future = consent_info_->LoadConsentForm(); WaitForCompletion(load_future, "LoadConsentForm", @@ -2770,6 +2804,8 @@ TEST_F(FirebaseGmaUmpTest, TestUmpLoadFormUnavailableDebugNonEEA) { using firebase::gma::ump::ConsentRequestParameters; using firebase::gma::ump::ConsentStatus; + FLAKY_TEST_SECTION_BEGIN(); + ConsentRequestParameters params; params.tag_for_under_age_of_consent = false; params.debug_settings.debug_geography = @@ -2777,8 +2813,16 @@ TEST_F(FirebaseGmaUmpTest, TestUmpLoadFormUnavailableDebugNonEEA) { params.debug_settings.debug_device_ids = kTestDeviceIDs; params.debug_settings.debug_device_ids.push_back(GetDebugDeviceId()); - WaitForCompletion(consent_info_->RequestConsentInfoUpdate(params), - "RequestConsentInfoUpdate"); + firebase::Future future = + consent_info_->RequestConsentInfoUpdate(params); + + WaitForCompletion(future, "RequestConsentInfoUpdate", + {firebase::gma::ump::kConsentRequestSuccess, + firebase::gma::ump::kConsentRequestErrorNetwork}); + // Retry only network errors. + EXPECT_NE(future.error(), firebase::gma::ump::kConsentRequestErrorNetwork); + + FLAKY_TEST_SECTION_END(); if (consent_info_->GetConsentStatus() != firebase::gma::ump::kConsentStatusRequired) { @@ -2792,6 +2836,8 @@ TEST_F(FirebaseGmaUmpTest, TestUmpLoadAndShowIfRequiredDebugNonEEA) { using firebase::gma::ump::ConsentRequestParameters; using firebase::gma::ump::ConsentStatus; + FLAKY_TEST_SECTION_BEGIN(); + ConsentRequestParameters params; params.tag_for_under_age_of_consent = false; params.debug_settings.debug_geography = @@ -2799,8 +2845,16 @@ TEST_F(FirebaseGmaUmpTest, TestUmpLoadAndShowIfRequiredDebugNonEEA) { params.debug_settings.debug_device_ids = kTestDeviceIDs; params.debug_settings.debug_device_ids.push_back(GetDebugDeviceId()); - WaitForCompletion(consent_info_->RequestConsentInfoUpdate(params), - "RequestConsentInfoUpdate"); + firebase::Future future = + consent_info_->RequestConsentInfoUpdate(params); + + WaitForCompletion(future, "RequestConsentInfoUpdate", + {firebase::gma::ump::kConsentRequestSuccess, + firebase::gma::ump::kConsentRequestErrorNetwork}); + // Retry only network errors. + EXPECT_NE(future.error(), firebase::gma::ump::kConsentRequestErrorNetwork); + + FLAKY_TEST_SECTION_END(); EXPECT_THAT(consent_info_->GetConsentStatus(), AnyOf(Eq(firebase::gma::ump::kConsentStatusNotRequired), @@ -3024,7 +3078,7 @@ TEST_F(FirebaseGmaUmpTest, TestUmpCleanupRaceCondition) { ProcessEvents(5000); } -TEST_F(FirebaseGmaUmpTest, TestUmpCallbacksOnWrongInstance_DISABLED) { +TEST_F(FirebaseGmaUmpTest, TestUmpCallbacksOnWrongInstance) { // Ensure that if ConsentInfo is deleted and then recreated, stale // callbacks don't call into the new instance and cause crashes. using firebase::gma::ump::ConsentFormStatus; @@ -3038,23 +3092,46 @@ TEST_F(FirebaseGmaUmpTest, TestUmpCallbacksOnWrongInstance_DISABLED) { params.debug_settings.debug_device_ids = kTestDeviceIDs; params.debug_settings.debug_device_ids.push_back(GetDebugDeviceId()); - consent_info_->RequestConsentInfoUpdate(params); - consent_info_->LoadConsentForm(); + LogDebug("RequestConsentInfoUpdate"); + consent_info_->RequestConsentInfoUpdate(params).OnCompletion( + [](const firebase::Future&) { + LogDebug("RequestConsentInfoUpdate done"); + }); + LogDebug("LoadConsentForm"); + consent_info_->LoadConsentForm().OnCompletion( + [](const firebase::Future&) { LogDebug("LoadConsentForm done"); }); // In automated tests, only check RequestConsentInfoUpdate and LoadConsentForm // as the rest may show UI. if (ShouldRunUITests()) { - consent_info_->ShowConsentForm(app_framework::GetWindowController()); - consent_info_->LoadAndShowConsentFormIfRequired( - app_framework::GetWindowController()); - consent_info_->ShowPrivacyOptionsForm(app_framework::GetWindowController()); + LogDebug("ShowConsentForm"); + consent_info_->ShowConsentForm(app_framework::GetWindowController()) + .OnCompletion([](const firebase::Future&) { + LogDebug("ShowConsentForm done"); + }); + LogDebug("LoadAndShowConsentFormIfRequired"); + consent_info_ + ->LoadAndShowConsentFormIfRequired(app_framework::GetWindowController()) + .OnCompletion([](const firebase::Future&) { + LogDebug("LoadAndShowConsentFormIfRequired done"); + }); + LogDebug("ShowPrivacyOptionsForm"); + consent_info_->ShowPrivacyOptionsForm(app_framework::GetWindowController()) + .OnCompletion([](const firebase::Future&) { + LogDebug("ShowPrivacyOptionsForm done"); + }); } + LogDebug("Terminate"); TerminateUmp(kNoReset); + LogDebug("Initialize"); InitializeUmp(kNoReset); // Give the operations time to complete. + LogDebug("Wait"); ProcessEvents(5000); + + LogDebug("Done"); } TEST_F(FirebaseGmaUmpTest, TestUmpMethodsReturnOperationInProgress) { @@ -3086,7 +3163,9 @@ TEST_F(FirebaseGmaUmpTest, TestUmpMethodsReturnOperationInProgress) { WaitForCompletion( future_request_2, "RequestConsentInfoUpdate second", firebase::gma::ump::kConsentRequestErrorOperationInProgress); - WaitForCompletion(future_request_1, "RequestConsentInfoUpdate first"); + WaitForCompletion(future_request_1, "RequestConsentInfoUpdate first", + {firebase::gma::ump::kConsentRequestSuccess, + firebase::gma::ump::kConsentRequestErrorNetwork}); consent_info_->Reset(); diff --git a/gma/src/ios/ump/consent_info_internal_ios.mm b/gma/src/ios/ump/consent_info_internal_ios.mm index 2ba80510a6..c4ea199eca 100644 --- a/gma/src/ios/ump/consent_info_internal_ios.mm +++ b/gma/src/ios/ump/consent_info_internal_ios.mm @@ -125,24 +125,19 @@ static ConsentFormError CppFormErrorFromIosFormError(NSInteger code) { callback_instance_tag = s_instance_tag; util::DispatchAsyncSafeMainQueue(^{ - { - MutexLock lock(s_instance_mutex); - if (!s_instance || s_instance_tag != callback_instance_tag) { - // Instance changed or was invalidated, don't call the iOS method any more. - return; - } + MutexLock lock(s_instance_mutex); + if (!s_instance || s_instance_tag != callback_instance_tag) { + // Instance changed or was invalidated, don't call the iOS method any more. + return; } [UMPConsentInformation.sharedInstance requestConsentInfoUpdateWithParameters:ios_parameters completionHandler:^(NSError* _Nullable error) { - if (!error) { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + MutexLock lock(s_instance_mutex); + if (s_instance && s_instance_tag == callback_instance_tag) { + if (!error) { CompleteFuture(handle, kConsentRequestSuccess); - } - } else { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + } else { CompleteFuture(handle, CppRequestErrorFromIosRequestError(error.code), error.localizedDescription.UTF8String); @@ -203,30 +198,22 @@ static ConsentFormError CppFormErrorFromIosFormError(NSInteger code) { callback_instance_tag = s_instance_tag; util::DispatchAsyncSafeMainQueue(^{ - { - MutexLock lock(s_instance_mutex); - if (!s_instance || s_instance_tag != callback_instance_tag) { - // Instance changed or was invalidated, don't call the iOS method any more. - return; - } + MutexLock lock(s_instance_mutex); + if (!s_instance || s_instance_tag != callback_instance_tag) { + // Instance changed or was invalidated, don't call the iOS method any more. + return; } [UMPConsentForm loadWithCompletionHandler:^(UMPConsentForm* _Nullable form, NSError* _Nullable error) { - if (form) { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + MutexLock lock(s_instance_mutex); + if (s_instance && s_instance_tag == callback_instance_tag) { + if (form) { SetLoadedForm(form); CompleteFuture(handle, kConsentFormSuccess, "Success"); - } - } else if (error) { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + } else if (error) { CompleteFuture(handle, CppFormErrorFromIosFormError(error.code), error.localizedDescription.UTF8String); - } - } else { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + } else { CompleteFuture(handle, kConsentFormErrorUnknown, "An unknown error occurred."); } } @@ -254,23 +241,18 @@ static ConsentFormError CppFormErrorFromIosFormError(NSInteger code) { callback_instance_tag = s_instance_tag; util::DispatchAsyncSafeMainQueue(^{ - { - MutexLock lock(s_instance_mutex); - if (!s_instance || s_instance_tag != callback_instance_tag) { - // Instance changed or was invalidated, don't call the iOS method any more. - return; - } + MutexLock lock(s_instance_mutex); + if (!s_instance || s_instance_tag != callback_instance_tag) { + // Instance changed or was invalidated, don't call the iOS method any more. + return; } [loaded_form_ presentFromViewController:parent completionHandler:^(NSError* _Nullable error) { - if (!error) { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + MutexLock lock(s_instance_mutex); + if (s_instance && s_instance_tag == callback_instance_tag) { + if (!error) { CompleteFuture(handle, kConsentRequestSuccess); - } - } else { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + } else { CompleteFuture(handle, CppFormErrorFromIosFormError(error.code), error.localizedDescription.UTF8String); } @@ -297,24 +279,19 @@ static ConsentFormError CppFormErrorFromIosFormError(NSInteger code) { callback_instance_tag = s_instance_tag; util::DispatchAsyncSafeMainQueue(^{ - { - MutexLock lock(s_instance_mutex); - if (!s_instance || s_instance_tag != callback_instance_tag) { - // Instance changed or was invalidated, don't call the iOS method any more. - return; - } + MutexLock lock(s_instance_mutex); + if (!s_instance || s_instance_tag != callback_instance_tag) { + // Instance changed or was invalidated, don't call the iOS method any more. + return; } [UMPConsentForm loadAndPresentIfRequiredFromViewController:parent completionHandler:^(NSError* _Nullable error) { - if (!error) { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + MutexLock lock(s_instance_mutex); + if (s_instance && s_instance_tag == callback_instance_tag) { + if (!error) { CompleteFuture(handle, kConsentRequestSuccess); - } - } else { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + } else { CompleteFuture(handle, CppFormErrorFromIosFormError(error.code), error.localizedDescription.UTF8String); @@ -357,24 +334,19 @@ static ConsentFormError CppFormErrorFromIosFormError(NSInteger code) { callback_instance_tag = s_instance_tag; util::DispatchAsyncSafeMainQueue(^{ - { - MutexLock lock(s_instance_mutex); - if (!s_instance || s_instance_tag != callback_instance_tag) { - // Instance changed or was invalidated, don't call the iOS method any more. - return; - } + MutexLock lock(s_instance_mutex); + if (!s_instance || s_instance_tag != callback_instance_tag) { + // Instance changed or was invalidated, don't call the iOS method any more. + return; } [UMPConsentForm presentPrivacyOptionsFormFromViewController:parent completionHandler:^(NSError* _Nullable error) { - if (!error) { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + MutexLock lock(s_instance_mutex); + if (s_instance && s_instance_tag == callback_instance_tag) { + if (!error) { CompleteFuture(handle, kConsentRequestSuccess); - } - } else { - MutexLock lock(s_instance_mutex); - if (s_instance && s_instance_tag == callback_instance_tag) { + } else { CompleteFuture(handle, CppFormErrorFromIosFormError(error.code), error.localizedDescription.UTF8String); diff --git a/messaging/messaging_java/build.gradle b/messaging/messaging_java/build.gradle index 08857d141c..368c3e13fd 100644 --- a/messaging/messaging_java/build.gradle +++ b/messaging/messaging_java/build.gradle @@ -59,7 +59,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-messaging' implementation 'com.google.flatbuffers:flatbuffers-java:1.12.0' diff --git a/release_build_files/Android/firebase_dependencies.gradle b/release_build_files/Android/firebase_dependencies.gradle index fef379dbf2..de127357ba 100644 --- a/release_build_files/Android/firebase_dependencies.gradle +++ b/release_build_files/Android/firebase_dependencies.gradle @@ -132,7 +132,7 @@ project.afterEvaluate { // Add the bill-of-materials project.dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') } for (String lib : firebaseCpp.dependencies.libSet) { // Messaging includes an aar, which to be depended on properly requires diff --git a/release_build_files/readme.md b/release_build_files/readme.md index 0eb9f6a2d9..9fca814b6a 100644 --- a/release_build_files/readme.md +++ b/release_build_files/readme.md @@ -86,7 +86,7 @@ distributed as part of the core Firebase Feature | Required Libraries and Gradle Packages -------------------------- | -------------------------------------- -All Firebase SDKs | platform(com.google.firebase:firebase-bom:32.7.0) +All Firebase SDKs | platform(com.google.firebase:firebase-bom:32.7.1) | | (Android Bill of Materials) Firebase Analytics | libfirebase_analytics.a | | libfirebase_app.a @@ -631,8 +631,10 @@ workflow use only during the development of your app, not for publicly shipping code. ## Release Notes -### Upcoming release +### 11.8.0 - Changes + - General (Android): Update to Firebase Android BoM version 32.7.1. + - General (iOS): Update to Firebase Cocoapods version 10.20.0. - Dynamic Links: The Dynamic Links SDK is now deprecated. See the [support documentation](https://firebase.google.com/support/dynamic-links-faq) for more information. diff --git a/remote_config/remote_config_resources/build.gradle b/remote_config/remote_config_resources/build.gradle index eecbc8b1f7..77e1b21beb 100644 --- a/remote_config/remote_config_resources/build.gradle +++ b/remote_config/remote_config_resources/build.gradle @@ -49,7 +49,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-config' } diff --git a/scripts/gha/install_prereqs_desktop.py b/scripts/gha/install_prereqs_desktop.py index b613f24964..65c01bc4f2 100644 --- a/scripts/gha/install_prereqs_desktop.py +++ b/scripts/gha/install_prereqs_desktop.py @@ -63,7 +63,7 @@ def main(): # brew install openssl utils.run_command(['brew', 'install', 'openssl']) elif utils.is_windows_os(): - utils.run_command(['choco', 'install', 'openssl', '-r']) + utils.run_command(['choco', 'install', 'openssl', '-r', '--version', '3.1.1']) # Install ccache on linux/mac if its not installed already if not utils.is_command_installed('ccache'): diff --git a/storage/storage_resources/build.gradle b/storage/storage_resources/build.gradle index c3ecf3957a..8d754801dc 100644 --- a/storage/storage_resources/build.gradle +++ b/storage/storage_resources/build.gradle @@ -49,7 +49,7 @@ android { } dependencies { - implementation platform('com.google.firebase:firebase-bom:32.7.0') + implementation platform('com.google.firebase:firebase-bom:32.7.1') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-storage' }