diff --git a/firebase-perf/firebase-perf.gradle b/firebase-perf/firebase-perf.gradle index b6028e75b61..3dc2fd5a38d 100644 --- a/firebase-perf/firebase-perf.gradle +++ b/firebase-perf/firebase-perf.gradle @@ -118,7 +118,7 @@ dependencies { api("com.google.firebase:firebase-components:18.0.0") api("com.google.firebase:firebase-config:21.5.0") api("com.google.firebase:firebase-installations:17.2.0") - api("com.google.firebase:firebase-sessions:2.0.7") { + api(project(":firebase-sessions")) { exclude group: 'com.google.firebase', module: 'firebase-common' exclude group: 'com.google.firebase', module: 'firebase-common-ktx' exclude group: 'com.google.firebase', module: 'firebase-components' diff --git a/firebase-sessions/CHANGELOG.md b/firebase-sessions/CHANGELOG.md index 48987a62df5..66b5d446d33 100644 --- a/firebase-sessions/CHANGELOG.md +++ b/firebase-sessions/CHANGELOG.md @@ -1,5 +1,7 @@ # Unreleased +* [changed] Updated datastore dependency to `1.1.2` to + fix [CVE-2024-7254](https://github.com/advisories/GHSA-735f-pc8j-v9w8). * [fixed] Make AQS resilient to background init in multi-process apps. # 2.0.7 diff --git a/firebase-sessions/firebase-sessions.gradle.kts b/firebase-sessions/firebase-sessions.gradle.kts index 15d22381e31..35d314262aa 100644 --- a/firebase-sessions/firebase-sessions.gradle.kts +++ b/firebase-sessions/firebase-sessions.gradle.kts @@ -41,6 +41,7 @@ android { minSdk = minSdkVersion multiDexEnabled = true testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + consumerProguardFiles("firebase-sessions.pro") } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 @@ -67,7 +68,6 @@ dependencies { exclude(group = "com.google.firebase", module = "firebase-common") exclude(group = "com.google.firebase", module = "firebase-components") } - implementation("androidx.datastore:datastore-preferences:1.0.0") implementation("com.google.android.datatransport:transport-api:3.2.0") api("com.google.firebase:firebase-annotations:16.2.0") api("com.google.firebase:firebase-encoders:17.0.0") @@ -75,6 +75,15 @@ dependencies { implementation(libs.androidx.annotation) compileOnly(libs.errorprone.annotations) + implementation("androidx.datastore:datastore-preferences-android:1.1.2") { + exclude(group = "androidx.datastore", module = "datastore") + exclude(group = "androidx.datastore", module = "datastore-core") + } + implementation("androidx.datastore:datastore-android:1.1.2") { + exclude(group = "androidx.datastore", module = "datastore-core") + } + implementation("androidx.datastore:datastore-core-android:1.1.2") + runtimeOnly("com.google.firebase:firebase-installations:18.0.0") { exclude(group = "com.google.firebase", module = "firebase-common") exclude(group = "com.google.firebase", module = "firebase-components") diff --git a/firebase-sessions/firebase-sessions.pro b/firebase-sessions/firebase-sessions.pro new file mode 100644 index 00000000000..e0915d3e29e --- /dev/null +++ b/firebase-sessions/firebase-sessions.pro @@ -0,0 +1 @@ +-keep class androidx.datastore.*.** {*;} diff --git a/firebase-sessions/gradle.properties b/firebase-sessions/gradle.properties index c9bd869d4cd..d345b69d8bc 100644 --- a/firebase-sessions/gradle.properties +++ b/firebase-sessions/gradle.properties @@ -12,5 +12,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -version=2.0.9 +version=2.0.10 latestReleasedVersion=2.0.8 diff --git a/firebase-sessions/src/main/java/com/google/firebase/sessions/Eh.java b/firebase-sessions/src/main/java/com/google/firebase/sessions/Eh.java new file mode 100644 index 00000000000..44c15461228 --- /dev/null +++ b/firebase-sessions/src/main/java/com/google/firebase/sessions/Eh.java @@ -0,0 +1,42 @@ +/* + * Copyright 2025 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.google.firebase.sessions; + +import androidx.annotation.NonNull; +import androidx.datastore.DataStoreFile; +import androidx.datastore.preferences.PreferenceDataStoreDelegateKt; + +public class Eh { + + @NonNull + public static String getMissingClassName0() { + try { + return DataStoreFile.class.getName(); + } catch (Exception ex) { + return "oops: " + ex.getMessage(); + } + } + + @NonNull + public static String getMissingClassName1() { + try { + return PreferenceDataStoreDelegateKt.class.getName(); + } catch (Exception ex) { + return "oops: " + ex.getMessage(); + } + } +} diff --git a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/FirebaseSessionsRegistrar.kt b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/FirebaseSessionsRegistrar.kt index caad2de6ff8..5c26b6a8467 100644 --- a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/FirebaseSessionsRegistrar.kt +++ b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/FirebaseSessionsRegistrar.kt @@ -16,6 +16,7 @@ package com.google.firebase.sessions +import android.util.Log import androidx.annotation.Keep import com.google.android.datatransport.TransportFactory import com.google.firebase.FirebaseApp @@ -38,8 +39,11 @@ import kotlinx.coroutines.CoroutineDispatcher */ @Keep internal class FirebaseSessionsRegistrar : ComponentRegistrar { - override fun getComponents() = - listOf( + override fun getComponents(): List> { + Log.w("find me", "this is the modified aqs: " + BuildConfig.VERSION_NAME) + Log.w("find me", "the missing class name 0: ${Eh.getMissingClassName0()}") + Log.w("find me", "the missing class name 1: ${Eh.getMissingClassName1()}") + return listOf( Component.builder(FirebaseSessions::class.java) .name(LIBRARY_NAME) .add(Dependency.required(firebaseApp)) @@ -110,6 +114,7 @@ internal class FirebaseSessionsRegistrar : ComponentRegistrar { .build(), LibraryVersionComponent.create(LIBRARY_NAME, BuildConfig.VERSION_NAME), ) + } private companion object { private const val LIBRARY_NAME = "fire-sessions" diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 21442a483d3..61916fba815 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,6 +18,7 @@ constraintlayout = "2.1.4" coreKtx = "1.12.0" coroutines = "1.7.3" dagger = "2.43.2" +datastorePreferences = "1.1.2" dexmaker = "2.28.1" dexmakerVersion = "1.2" espressoCore = "3.6.1" @@ -91,6 +92,7 @@ androidx-cardview = { module = "androidx.cardview:cardview", version.ref = "card androidx-constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" } androidx-core = { module = "androidx.core:core", version = "1.2.0" } androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" } +androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastorePreferences" } androidx-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espressoCore" } androidx-espresso-idling-resource = { module = "androidx.test.espresso:espresso-idling-resource", version.ref = "espressoCore" } androidx-espresso-intents = { module = "androidx.test.espresso:espresso-intents", version.ref = "espressoCore" } diff --git a/smoke-tests/build.gradle b/smoke-tests/build.gradle index 346bad8698f..390531c027b 100644 --- a/smoke-tests/build.gradle +++ b/smoke-tests/build.gradle @@ -76,7 +76,6 @@ dependencies { implementation "com.google.firebase:firebase-auth" implementation "com.google.firebase:firebase-common" implementation "com.google.firebase:firebase-config" - implementation "com.google.firebase:firebase-crashlytics:18.6.4" implementation "com.google.firebase:firebase-database" implementation "com.google.firebase:firebase-dynamic-links" implementation "com.google.firebase:firebase-firestore" @@ -92,6 +91,8 @@ dependencies { implementation "com.google.truth:truth:1.0.1" implementation libs.junit + implementation("com.google.firebase:firebase-crashlytics:19.4.1") + // Common utilities (instrumentation side) androidTestImplementation "androidx.test:runner:1.4.0" androidTestImplementation libs.junit