@@ -31,6 +31,10 @@ public final class SentryAndroid {
3131 static final String SENTRY_TIMBER_INTEGRATION_CLASS_NAME =
3232 "io.sentry.android.timber.SentryTimberIntegration" ;
3333
34+ private static final String TIMBER_CLASS_NAME = "timber.log.Timber" ;
35+ private static final String FRAGMENT_CLASS_NAME =
36+ "androidx.fragment.app.FragmentManager$FragmentLifecycleCallbacks" ;
37+
3438 private SentryAndroid () {}
3539
3640 /**
@@ -84,10 +88,17 @@ public static synchronized void init(
8488 OptionsContainer .create (SentryAndroidOptions .class ),
8589 options -> {
8690 final LoadClass classLoader = new LoadClass ();
91+ final boolean isTimberUpstreamAvailable =
92+ classLoader .isClassAvailable (TIMBER_CLASS_NAME , options );
93+ final boolean isFragmentUpstreamAvailable =
94+ classLoader .isClassAvailable (FRAGMENT_CLASS_NAME , options );
8795 final boolean isFragmentAvailable =
88- classLoader .isClassAvailable (SENTRY_FRAGMENT_INTEGRATION_CLASS_NAME , options );
96+ (isFragmentUpstreamAvailable
97+ && classLoader .isClassAvailable (
98+ SENTRY_FRAGMENT_INTEGRATION_CLASS_NAME , options ));
8999 final boolean isTimberAvailable =
90- classLoader .isClassAvailable (SENTRY_TIMBER_INTEGRATION_CLASS_NAME , options );
100+ (isTimberUpstreamAvailable
101+ && classLoader .isClassAvailable (SENTRY_TIMBER_INTEGRATION_CLASS_NAME , options ));
91102
92103 AndroidOptionsInitializer .init (
93104 options , context , logger , isFragmentAvailable , isTimberAvailable );
0 commit comments