From d1e2f5f484f85d74cb7b71bbddc1dc74353f4735 Mon Sep 17 00:00:00 2001 From: Matthew Robertson Date: Tue, 25 Feb 2025 09:36:21 -0500 Subject: [PATCH 1/2] Avoid Process.myProcessName() on Android 13 --- .../firebase/crashlytics/internal/ProcessDetailsProvider.kt | 2 +- .../com/google/firebase/sessions/ProcessDetailsProvider.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/ProcessDetailsProvider.kt b/firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/ProcessDetailsProvider.kt index 49fd2fafd18..50bdd533b65 100644 --- a/firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/ProcessDetailsProvider.kt +++ b/firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/ProcessDetailsProvider.kt @@ -81,7 +81,7 @@ internal object ProcessDetailsProvider { /** Gets the app's current process name. If the API is not available, returns an empty string. */ private fun getProcessName(): String = - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.TIRAMISU) { Process.myProcessName() } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { Application.getProcessName() ?: "" diff --git a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/ProcessDetailsProvider.kt b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/ProcessDetailsProvider.kt index 72e80469880..65d1dfbbc60 100644 --- a/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/ProcessDetailsProvider.kt +++ b/firebase-sessions/src/main/kotlin/com/google/firebase/sessions/ProcessDetailsProvider.kt @@ -74,7 +74,7 @@ internal object ProcessDetailsProvider { /** Gets the app's current process name. If it could not be found, returns an empty string. */ internal fun getProcessName(): String { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.TIRAMISU) { return Process.myProcessName() } From b7fe42afff35a5ae7075a3121570b7bc8c858bd9 Mon Sep 17 00:00:00 2001 From: Matthew Robertson Date: Mon, 3 Mar 2025 15:18:50 -0500 Subject: [PATCH 2/2] Changelog --- firebase-crashlytics/CHANGELOG.md | 13 +++++++++++-- .../crashlytics/internal/ProcessDetailsProvider.kt | 4 +++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/firebase-crashlytics/CHANGELOG.md b/firebase-crashlytics/CHANGELOG.md index f0bbb91128b..a6e5e087b60 100644 --- a/firebase-crashlytics/CHANGELOG.md +++ b/firebase-crashlytics/CHANGELOG.md @@ -1,6 +1,15 @@ # Unreleased +* [fixed] Fixed NoSuchMethodError when getting process info on Android 13 [#6720] + +# 19.4.1 * [changed] Updated `firebase-sessions` dependency to v2.0.9 + +## Kotlin +The Kotlin extensions library transitively includes the updated +`firebase-crashlytics` library. The Kotlin extensions library has no additional +updates. + # 19.4.0 * [feature] Added an overload for `recordException` that allows logging additional custom keys to the non fatal event [#3551] @@ -324,10 +333,10 @@ updates. # 18.2.10 * [fixed] Fixed a bug that could prevent unhandled exceptions from being - propogated to the default handler when the network is unavailable. + propagated to the default handler when the network is unavailable. * [changed] Internal changes to support on-demand fatal crash reporting for Flutter apps. -* [fixed] Fixed a bug that prevented [crashlytics] from initalizing on some +* [fixed] Fixed a bug that prevented [crashlytics] from initializing on some devices in some cases. (#3269) diff --git a/firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/ProcessDetailsProvider.kt b/firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/ProcessDetailsProvider.kt index 50bdd533b65..172ebaaf477 100644 --- a/firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/ProcessDetailsProvider.kt +++ b/firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/ProcessDetailsProvider.kt @@ -29,6 +29,8 @@ import com.google.firebase.crashlytics.internal.model.CrashlyticsReport.Session. * @hide */ internal object ProcessDetailsProvider { + // TODO(mrober): Merge this with [com.google.firebase.sessions.ProcessDetailsProvider]. + /** Gets the details for all of this app's running processes. */ fun getAppProcessDetails(context: Context): List { val appUid = context.applicationInfo.uid @@ -70,7 +72,7 @@ internal object ProcessDetailsProvider { processName: String, pid: Int = 0, importance: Int = 0, - isDefaultProcess: Boolean = false + isDefaultProcess: Boolean = false, ) = ProcessDetails.builder() .setProcessName(processName)