diff --git a/CHANGELOG.md b/CHANGELOG.md index 31e9541dba7..598a7563119 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Deduplicate events happening in multiple threads simultaneously (e.g. `OutOfMemoryError`) ([#2845](https://github.com/getsentry/sentry-java/pull/2845)) - This will improve Crash-Free Session Rate as we no longer will send multiple Session updates with `Crashed` status, but only the one that is relevant +- Ensure no Java 8 method reference sugar is used for Android ([#2857](https://github.com/getsentry/sentry-java/pull/2857)) ## 6.26.0 diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/ANRWatchDog.java b/sentry-android-core/src/main/java/io/sentry/android/core/ANRWatchDog.java index 04c18df910c..88075a45519 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/ANRWatchDog.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/ANRWatchDog.java @@ -44,6 +44,8 @@ final class ANRWatchDog extends Thread { @NotNull ANRListener listener, @NotNull ILogger logger, final @NotNull Context context) { + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef this( () -> SystemClock.uptimeMillis(), timeoutIntervalMillis, diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/AppLifecycleIntegration.java b/sentry-android-core/src/main/java/io/sentry/android/core/AppLifecycleIntegration.java index a6fc0c4721a..7f4724967f4 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/AppLifecycleIntegration.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/AppLifecycleIntegration.java @@ -130,6 +130,8 @@ public void close() throws IOException { } else { // some versions of the androidx lifecycle-process require this to be executed on the main // thread. + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef handler.post(() -> removeObserver()); } } diff --git a/sentry/src/main/java/io/sentry/HostnameCache.java b/sentry/src/main/java/io/sentry/HostnameCache.java index 9de35ee1f03..bacc8c04d96 100644 --- a/sentry/src/main/java/io/sentry/HostnameCache.java +++ b/sentry/src/main/java/io/sentry/HostnameCache.java @@ -59,6 +59,8 @@ private HostnameCache() { } HostnameCache(long cacheDuration) { + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef this(cacheDuration, () -> InetAddress.getLocalHost()); } diff --git a/sentry/src/main/java/io/sentry/JsonObjectDeserializer.java b/sentry/src/main/java/io/sentry/JsonObjectDeserializer.java index b015a95bb03..e7753d44ea7 100644 --- a/sentry/src/main/java/io/sentry/JsonObjectDeserializer.java +++ b/sentry/src/main/java/io/sentry/JsonObjectDeserializer.java @@ -103,13 +103,17 @@ private void parse(@NotNull JsonObjectReader reader) throws IOException { pushCurrentToken(new TokenName(reader.nextName())); break; case STRING: - done = handlePrimitive(reader::nextString); + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef + done = handlePrimitive(() -> reader.nextString()); break; case NUMBER: done = handlePrimitive(() -> nextNumber(reader)); break; case BOOLEAN: - done = handlePrimitive(reader::nextBoolean); + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef + done = handlePrimitive(() -> reader.nextBoolean()); break; case NULL: reader.nextNull(); diff --git a/sentry/src/main/java/io/sentry/SentryEnvelopeItem.java b/sentry/src/main/java/io/sentry/SentryEnvelopeItem.java index 595fcb17057..f095dea15bc 100644 --- a/sentry/src/main/java/io/sentry/SentryEnvelopeItem.java +++ b/sentry/src/main/java/io/sentry/SentryEnvelopeItem.java @@ -87,7 +87,8 @@ public final class SentryEnvelopeItem { new SentryEnvelopeItemHeader( SentryItemType.Session, () -> cachedItem.getBytes().length, "application/json", null); - // Don't use method reference. This can cause issues on Android + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef return new SentryEnvelopeItem(itemHeader, () -> cachedItem.getBytes()); } @@ -124,7 +125,8 @@ public final class SentryEnvelopeItem { "application/json", null); - // Don't use method reference. This can cause issues on Android + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef return new SentryEnvelopeItem(itemHeader, () -> cachedItem.getBytes()); } @@ -161,7 +163,8 @@ public static SentryEnvelopeItem fromUserFeedback( "application/json", null); - // Don't use method reference. This can cause issues on Android + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef return new SentryEnvelopeItem(itemHeader, () -> cachedItem.getBytes()); } @@ -206,7 +209,8 @@ public static SentryEnvelopeItem fromAttachment( attachment.getFilename(), attachment.getAttachmentType()); - // Don't use method reference. This can cause issues on Android + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef return new SentryEnvelopeItem(itemHeader, () -> cachedItem.getBytes()); } @@ -271,7 +275,8 @@ private static void ensureAttachmentSizeLimit( "application-json", traceFile.getName()); - // Don't use method reference. This can cause issues on Android + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef return new SentryEnvelopeItem(itemHeader, () -> cachedItem.getBytes()); } @@ -340,7 +345,8 @@ private static byte[] readBytesFromFile(String pathname, long maxFileLength) "application/json", null); - // Don't use method reference. This can cause issues on Android + // avoid method refs on Android due to some issues with older AGP setups + // noinspection Convert2MethodRef return new SentryEnvelopeItem(itemHeader, () -> cachedItem.getBytes()); }