Skip to content

Commit a708db7

Browse files
authored
Merge a7bcbf6 into 9dc12d1
2 parents 9dc12d1 + a7bcbf6 commit a708db7

File tree

17 files changed

+29
-350
lines changed

17 files changed

+29
-350
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
### Fixes
2828

29+
- Remove `AndroidRuntimeManager` StrictMode relaxation to prevent ANRs during SDK init ([#5127](https://github.com/getsentry/sentry-java/pull/5127))
2930
- Fix crash when unregistering `SystemEventsBroadcastReceiver` with try-catch block. ([#5106](https://github.com/getsentry/sentry-java/pull/5106))
3031

3132
## 8.33.0

sentry-android-core/src/main/java/io/sentry/android/core/AndroidOptionsInitializer.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
import io.sentry.android.core.internal.modules.AssetsModulesLoader;
3333
import io.sentry.android.core.internal.util.AndroidConnectionStatusProvider;
3434
import io.sentry.android.core.internal.util.AndroidCurrentDateProvider;
35-
import io.sentry.android.core.internal.util.AndroidRuntimeManager;
3635
import io.sentry.android.core.internal.util.AndroidThreadChecker;
3736
import io.sentry.android.core.internal.util.SentryFrameMetricsCollector;
3837
import io.sentry.android.core.performance.AppStartMetrics;
@@ -123,7 +122,6 @@ static void loadDefaultAndMetadataOptions(
123122
options.setDefaultScopeType(ScopeType.CURRENT);
124123
options.setOpenTelemetryMode(SentryOpenTelemetryMode.OFF);
125124
options.setDateProvider(new SentryAndroidDateProvider());
126-
options.setRuntimeManager(new AndroidRuntimeManager());
127125
options.getLogs().setLoggerBatchProcessorFactory(new AndroidLoggerBatchProcessorFactory());
128126
options.getMetrics().setMetricsBatchProcessorFactory(new AndroidMetricsBatchProcessorFactory());
129127

@@ -135,10 +133,7 @@ static void loadDefaultAndMetadataOptions(
135133

136134
ManifestMetadataReader.applyMetadata(finalContext, options, buildInfoProvider);
137135

138-
options.setCacheDirPath(
139-
options
140-
.getRuntimeManager()
141-
.runWithRelaxedPolicy(() -> getCacheDir(finalContext).getAbsolutePath()));
136+
options.setCacheDirPath(getCacheDir(finalContext).getAbsolutePath());
142137

143138
readDefaultOptionValues(options, finalContext, buildInfoProvider);
144139
AppState.getInstance().registerLifecycleObserver(options);
@@ -470,8 +465,7 @@ private static void readDefaultOptionValues(
470465

471466
if (options.getDistinctId() == null) {
472467
try {
473-
options.setDistinctId(
474-
options.getRuntimeManager().runWithRelaxedPolicy(() -> Installation.id(context)));
468+
options.setDistinctId(Installation.id(context));
475469
} catch (RuntimeException e) {
476470
options.getLogger().log(SentryLevel.ERROR, "Could not generate distinct Id.", e);
477471
}

sentry-android-core/src/main/java/io/sentry/android/core/ApplicationExitInfoEventProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ private void mergeUser(final @NotNull SentryBaseEvent event) {
564564

565565
private @Nullable String getDeviceId() {
566566
try {
567-
return options.getRuntimeManager().runWithRelaxedPolicy(() -> Installation.id(context));
567+
return Installation.id(context);
568568
} catch (Throwable e) {
569569
options.getLogger().log(SentryLevel.ERROR, "Error getting installationId.", e);
570570
}

sentry-android-core/src/main/java/io/sentry/android/core/DefaultAndroidEventProcessor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@ private void mergeUser(final @NotNull SentryBaseEvent event) {
174174

175175
// userId should be set even if event is Cached as the userId is static and won't change anyway.
176176
if (user.getId() == null) {
177-
user.setId(options.getRuntimeManager().runWithRelaxedPolicy(() -> Installation.id(context)));
177+
user.setId(Installation.id(context));
178178
}
179179
if (user.getIpAddress() == null && options.isSendDefaultPii()) {
180180
user.setIpAddress(IpAddressUtils.DEFAULT_IP_ADDRESS);
@@ -372,7 +372,7 @@ private void setAppExtras(final @NotNull App app, final @NotNull Hint hint) {
372372
*/
373373
public @NotNull User getDefaultUser(final @NotNull Context context) {
374374
final @NotNull User user = new User();
375-
user.setId(options.getRuntimeManager().runWithRelaxedPolicy(() -> Installation.id(context)));
375+
user.setId(Installation.id(context));
376376
return user;
377377
}
378378

sentry-android-core/src/main/java/io/sentry/android/core/DeviceInfoUtil.java

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -232,27 +232,21 @@ private void setDeviceIO(
232232
// this way of getting the size of storage might be problematic for storages bigger than 2GB
233233
// check the use of
234234
// https://developer.android.com/reference/java/io/File.html#getFreeSpace%28%29
235-
options
236-
.getRuntimeManager()
237-
.runWithRelaxedPolicy(
238-
() -> {
239-
final @Nullable File dataDir = Environment.getDataDirectory();
240-
if (dataDir != null) {
241-
StatFs internalStorageStat = new StatFs(dataDir.getPath());
242-
device.setStorageSize(getTotalInternalStorage(internalStorageStat));
243-
device.setFreeStorage(getUnusedInternalStorage(internalStorageStat));
244-
}
245-
246-
if (includeExternalStorage) {
247-
final @Nullable File internalStorageFile = context.getExternalFilesDir(null);
248-
final @Nullable StatFs externalStorageStat =
249-
getExternalStorageStat(internalStorageFile);
250-
if (externalStorageStat != null) {
251-
device.setExternalStorageSize(getTotalExternalStorage(externalStorageStat));
252-
device.setExternalFreeStorage(getUnusedExternalStorage(externalStorageStat));
253-
}
254-
}
255-
});
235+
final @Nullable File dataDir = Environment.getDataDirectory();
236+
if (dataDir != null) {
237+
StatFs internalStorageStat = new StatFs(dataDir.getPath());
238+
device.setStorageSize(getTotalInternalStorage(internalStorageStat));
239+
device.setFreeStorage(getUnusedInternalStorage(internalStorageStat));
240+
}
241+
242+
if (includeExternalStorage) {
243+
final @Nullable File internalStorageFile = context.getExternalFilesDir(null);
244+
final @Nullable StatFs externalStorageStat = getExternalStorageStat(internalStorageFile);
245+
if (externalStorageStat != null) {
246+
device.setExternalStorageSize(getTotalExternalStorage(externalStorageStat));
247+
device.setExternalFreeStorage(getUnusedExternalStorage(externalStorageStat));
248+
}
249+
}
256250

257251
if (device.getConnectionType() == null) {
258252
// wifi, ethernet or cellular, null if none
@@ -493,7 +487,7 @@ private Long getUnusedExternalStorage(final @NotNull StatFs stat) {
493487
@Nullable
494488
private String getDeviceId() {
495489
try {
496-
return options.getRuntimeManager().runWithRelaxedPolicy(() -> Installation.id(context));
490+
return Installation.id(context);
497491
} catch (Throwable e) {
498492
options.getLogger().log(SentryLevel.ERROR, "Error getting installationId.", e);
499493
}

sentry-android-core/src/main/java/io/sentry/android/core/InternalSentrySdk.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,7 @@ public static Map<String, Object> serializeScope(
102102
}
103103
if (user.getId() == null) {
104104
try {
105-
user.setId(
106-
options.getRuntimeManager().runWithRelaxedPolicy(() -> Installation.id(context)));
105+
user.setId(Installation.id(context));
107106
} catch (RuntimeException e) {
108107
logger.log(SentryLevel.ERROR, "Could not retrieve installation ID", e);
109108
}

sentry-android-core/src/main/java/io/sentry/android/core/SentryPerformanceProvider.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,10 @@
2020
import io.sentry.SentryOptions;
2121
import io.sentry.TracesSampler;
2222
import io.sentry.TracesSamplingDecision;
23-
import io.sentry.android.core.internal.util.AndroidRuntimeManager;
2423
import io.sentry.android.core.internal.util.SentryFrameMetricsCollector;
2524
import io.sentry.android.core.performance.AppStartMetrics;
2625
import io.sentry.android.core.performance.TimeSpan;
2726
import io.sentry.util.AutoClosableReentrantLock;
28-
import io.sentry.util.runtime.IRuntimeManager;
2927
import java.io.BufferedReader;
3028
import java.io.File;
3129
import java.io.FileInputStream;
@@ -110,9 +108,7 @@ private void launchAppStartProfiler(final @NotNull AppStartMetrics appStartMetri
110108
return;
111109
}
112110

113-
final @NotNull IRuntimeManager runtimeManager = new AndroidRuntimeManager();
114-
final @NotNull File cacheDir =
115-
runtimeManager.runWithRelaxedPolicy(() -> AndroidOptionsInitializer.getCacheDir(context));
111+
final @NotNull File cacheDir = AndroidOptionsInitializer.getCacheDir(context);
116112
final @NotNull File configFile = new File(cacheDir, APP_START_PROFILING_CONFIG_FILE_NAME);
117113

118114
// No config exists: app start profiling is not enabled

sentry-android-core/src/main/java/io/sentry/android/core/cache/AndroidEnvelopeCache.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,9 @@ public static boolean hasStartupCrashMarker(final @NotNull SentryOptions options
125125

126126
final File crashMarkerFile = new File(outboxPath, STARTUP_CRASH_MARKER_FILE);
127127
try {
128-
final boolean exists =
129-
options.getRuntimeManager().runWithRelaxedPolicy(() -> crashMarkerFile.exists());
128+
final boolean exists = crashMarkerFile.exists();
130129
if (exists) {
131-
if (!options.getRuntimeManager().runWithRelaxedPolicy(() -> crashMarkerFile.delete())) {
130+
if (!crashMarkerFile.delete()) {
132131
options
133132
.getLogger()
134133
.log(

sentry-android-core/src/main/java/io/sentry/android/core/internal/util/AndroidRuntimeManager.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

sentry-android-core/src/test/java/io/sentry/android/core/AndroidOptionsInitializerTest.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ import io.sentry.android.core.internal.debugmeta.AssetsDebugMetaLoader
2424
import io.sentry.android.core.internal.gestures.AndroidViewGestureTargetLocator
2525
import io.sentry.android.core.internal.modules.AssetsModulesLoader
2626
import io.sentry.android.core.internal.util.AndroidConnectionStatusProvider
27-
import io.sentry.android.core.internal.util.AndroidRuntimeManager
2827
import io.sentry.android.core.internal.util.AndroidThreadChecker
2928
import io.sentry.android.core.performance.AppStartMetrics
3029
import io.sentry.android.fragment.FragmentLifecycleIntegration
@@ -930,10 +929,4 @@ class AndroidOptionsInitializerTest {
930929
fixture.sentryOptions.compositePerformanceCollector is DefaultCompositePerformanceCollector
931930
}
932931
}
933-
934-
@Test
935-
fun `AndroidRuntimeManager is set in the options`() {
936-
fixture.initSut()
937-
assertIs<AndroidRuntimeManager>(fixture.sentryOptions.runtimeManager)
938-
}
939932
}

0 commit comments

Comments
 (0)