1111import io .sentry .ISentryLifecycleToken ;
1212import io .sentry .ITransactionProfiler ;
1313import io .sentry .NoOpConnectionStatusProvider ;
14+ import io .sentry .NoOpTransactionPerformanceCollector ;
1415import io .sentry .ScopeType ;
1516import io .sentry .SendFireAndForgetEnvelopeSender ;
1617import io .sentry .SendFireAndForgetOutboxSender ;
3233import io .sentry .cache .PersistingScopeObserver ;
3334import io .sentry .compose .gestures .ComposeGestureTargetLocator ;
3435import io .sentry .compose .viewhierarchy .ComposeViewHierarchyExporter ;
36+ import io .sentry .internal .debugmeta .NoOpDebugMetaLoader ;
3537import io .sentry .internal .gestures .GestureTargetLocator ;
38+ import io .sentry .internal .modules .NoOpModulesLoader ;
3639import io .sentry .internal .viewhierarchy .ViewHierarchyExporter ;
3740import io .sentry .transport .CurrentDateProvider ;
3841import io .sentry .transport .NoOpEnvelopeCache ;
42+ import io .sentry .transport .NoOpTransportGate ;
3943import io .sentry .util .LazyEvaluator ;
4044import io .sentry .util .Objects ;
45+ import io .sentry .util .thread .NoOpThreadChecker ;
4146import java .io .File ;
4247import java .util .ArrayList ;
4348import java .util .List ;
@@ -160,7 +165,9 @@ static void initializeIntegrationsAndProcessors(
160165 options .addEventProcessor (new ScreenshotEventProcessor (options , buildInfoProvider ));
161166 options .addEventProcessor (new ViewHierarchyEventProcessor (options ));
162167 options .addEventProcessor (new AnrV2EventProcessor (context , options , buildInfoProvider ));
163- options .setTransportGate (new AndroidTransportGate (options ));
168+ if (options .getTransportGate () instanceof NoOpTransportGate ) {
169+ options .setTransportGate (new AndroidTransportGate (options ));
170+ }
164171
165172 // Check if the profiler was already instantiated in the app start.
166173 // We use the Android profiler, that uses a global start/stop api, so we need to preserve the
@@ -182,8 +189,12 @@ static void initializeIntegrationsAndProcessors(
182189 "options.getFrameMetricsCollector is required" )));
183190 }
184191 }
185- options .setModulesLoader (new AssetsModulesLoader (context , options .getLogger ()));
186- options .setDebugMetaLoader (new AssetsDebugMetaLoader (context , options .getLogger ()));
192+ if (options .getModulesLoader () instanceof NoOpModulesLoader ) {
193+ options .setModulesLoader (new AssetsModulesLoader (context , options .getLogger ()));
194+ }
195+ if (options .getDebugMetaLoader () instanceof NoOpDebugMetaLoader ) {
196+ options .setDebugMetaLoader (new AssetsDebugMetaLoader (context , options .getLogger ()));
197+ }
187198
188199 final boolean isAndroidXScrollViewAvailable =
189200 loadClass .isClassAvailable ("androidx.core.view.ScrollingView" , options );
@@ -215,7 +226,9 @@ static void initializeIntegrationsAndProcessors(
215226 options .setViewHierarchyExporters (viewHierarchyExporters );
216227 }
217228
218- options .setThreadChecker (AndroidThreadChecker .getInstance ());
229+ if (options .getThreadChecker () instanceof NoOpThreadChecker ) {
230+ options .setThreadChecker (AndroidThreadChecker .getInstance ());
231+ }
219232 if (options .getPerformanceCollectors ().isEmpty ()) {
220233 options .addPerformanceCollector (new AndroidMemoryCollector ());
221234 options .addPerformanceCollector (new AndroidCpuCollector (options .getLogger ()));
@@ -229,7 +242,11 @@ static void initializeIntegrationsAndProcessors(
229242 "options.getFrameMetricsCollector is required" )));
230243 }
231244 }
232- options .setTransactionPerformanceCollector (new DefaultTransactionPerformanceCollector (options ));
245+ if (options .getTransactionPerformanceCollector ()
246+ instanceof NoOpTransactionPerformanceCollector ) {
247+ options .setTransactionPerformanceCollector (
248+ new DefaultTransactionPerformanceCollector (options ));
249+ }
233250 }
234251
235252 static void installDefaultIntegrations (
0 commit comments