Skip to content

Commit 51f81d1

Browse files
runningcodeclaude
andcommitted
refactor(distribution): Move DistributionOptions to SentryOptions to resolve circular dependency
- Move DistributionOptions from SentryAndroidOptions to SentryOptions to resolve circular dependency between sentry-android-core and sentry-android-distribution modules - Simplify DistributionIntegration.register() to work with SentryOptions directly instead of requiring SentryAndroidOptions - Remove separate DistributionOptions.kt file - Update API dumps 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 9e1c66b commit 51f81d1

File tree

5 files changed

+43
-61
lines changed

5 files changed

+43
-61
lines changed

sentry-android-distribution/api/sentry-android-distribution.api

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,6 @@ public final class io/sentry/android/distribution/DistributionIntegration : io/s
33
public fun checkForUpdate (Lio/sentry/IDistributionApi$UpdateCallback;)V
44
public fun checkForUpdateBlocking ()Lio/sentry/UpdateStatus;
55
public fun downloadUpdate (Lio/sentry/UpdateInfo;)V
6-
public final fun init ()V
7-
public final fun init (Lkotlin/jvm/functions/Function1;)V
86
public fun register (Lio/sentry/IScopes;Lio/sentry/SentryOptions;)V
97
}
108

11-
public final class io/sentry/android/distribution/DistributionOptions {
12-
public fun <init> ()V
13-
public final fun getBuildConfiguration ()Ljava/lang/String;
14-
public final fun getOrgAuthToken ()Ljava/lang/String;
15-
public final fun getOrgSlug ()Ljava/lang/String;
16-
public final fun getProjectSlug ()Ljava/lang/String;
17-
public final fun getSentryBaseUrl ()Ljava/lang/String;
18-
public final fun setBuildConfiguration (Ljava/lang/String;)V
19-
public final fun setOrgAuthToken (Ljava/lang/String;)V
20-
public final fun setOrgSlug (Ljava/lang/String;)V
21-
public final fun setProjectSlug (Ljava/lang/String;)V
22-
public final fun setSentryBaseUrl (Ljava/lang/String;)V
23-
}
24-

sentry-android-distribution/src/main/java/io/sentry/android/distribution/DistributionIntegration.kt

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -32,32 +32,6 @@ public class DistributionIntegration(context: Context) : Integration, IDistribut
3232
// Store scopes and options for use by distribution functionality
3333
this.scopes = scopes
3434
this.sentryOptions = options
35-
// Distribution integration is registered but initialization still requires manual call to
36-
// init()
37-
// This allows the integration to be discovered by Sentry's auto-discovery mechanism
38-
// while maintaining explicit control over when distribution functionality is enabled
39-
}
40-
41-
/**
42-
* Initialize build distribution with default options. This should be called once per process,
43-
* typically in Application.onCreate().
44-
*
45-
* @param context Android context
46-
*/
47-
public fun init() {
48-
init {}
49-
}
50-
51-
/**
52-
* Initialize build distribution with the provided configuration. This should be called once per
53-
* process, typically in Application.onCreate().
54-
*
55-
* @param context Android context
56-
* @param configuration Configuration handler for build distribution options
57-
*/
58-
public fun init(configuration: (DistributionOptions) -> Unit) {
59-
val options = DistributionOptions()
60-
configuration(options)
6135
}
6236

6337
/**

sentry-android-distribution/src/main/java/io/sentry/android/distribution/DistributionOptions.kt

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

sentry/api/sentry.api

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3323,6 +3323,7 @@ public class io/sentry/SentryOptions {
33233323
public fun getDiagnosticLevel ()Lio/sentry/SentryLevel;
33243324
public fun getDist ()Ljava/lang/String;
33253325
public fun getDistinctId ()Ljava/lang/String;
3326+
public fun getDistribution ()Lio/sentry/SentryOptions$DistributionOptions;
33263327
public fun getDistributionController ()Lio/sentry/IDistributionApi;
33273328
public fun getDsn ()Ljava/lang/String;
33283329
public fun getEnvelopeDiskCache ()Lio/sentry/cache/IEnvelopeCache;
@@ -3458,6 +3459,7 @@ public class io/sentry/SentryOptions {
34583459
public fun setDiagnosticLevel (Lio/sentry/SentryLevel;)V
34593460
public fun setDist (Ljava/lang/String;)V
34603461
public fun setDistinctId (Ljava/lang/String;)V
3462+
public fun setDistribution (Lio/sentry/SentryOptions$DistributionOptions;)V
34613463
public fun setDistributionController (Lio/sentry/IDistributionApi;)V
34623464
public fun setDsn (Ljava/lang/String;)V
34633465
public fun setEnableAppStartProfiling (Z)V
@@ -3587,6 +3589,15 @@ public final class io/sentry/SentryOptions$Cron {
35873589
public fun setDefaultTimezone (Ljava/lang/String;)V
35883590
}
35893591

3592+
public final class io/sentry/SentryOptions$DistributionOptions {
3593+
public field buildConfiguration Ljava/lang/String;
3594+
public field orgAuthToken Ljava/lang/String;
3595+
public field orgSlug Ljava/lang/String;
3596+
public field projectSlug Ljava/lang/String;
3597+
public field sentryBaseUrl Ljava/lang/String;
3598+
public fun <init> ()V
3599+
}
3600+
35903601
public final class io/sentry/SentryOptions$Logs {
35913602
public fun <init> ()V
35923603
public fun getBeforeSend ()Lio/sentry/SentryOptions$Logs$BeforeSendLogCallback;

sentry/src/main/java/io/sentry/SentryOptions.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,30 @@ public class SentryOptions {
597597

598598
private @NotNull ISocketTagger socketTagger = NoOpSocketTagger.getInstance();
599599

600+
/**
601+
* Configuration options for Sentry Build Distribution. NOTE: Ideally this would be in
602+
* SentryAndroidOptions, but there's a circular dependency issue between sentry-android-core and
603+
* sentry-android-distribution modules.
604+
*/
605+
public static final class DistributionOptions {
606+
/** Organization authentication token for API access */
607+
public String orgAuthToken = "";
608+
609+
/** Sentry organization slug */
610+
public String orgSlug = "";
611+
612+
/** Sentry project slug */
613+
public String projectSlug = "";
614+
615+
/** Base URL for Sentry API (defaults to https://sentry.io) */
616+
public String sentryBaseUrl = "https://sentry.io";
617+
618+
/** Optional build configuration name for filtering (e.g., "debug", "release", "staging") */
619+
public @Nullable String buildConfiguration = null;
620+
}
621+
622+
private @NotNull DistributionOptions distribution = new DistributionOptions();
623+
600624
/**
601625
* Adds an event processor
602626
*
@@ -3543,6 +3567,14 @@ public interface BeforeSendLogCallback {
35433567
}
35443568
}
35453569

3570+
public @NotNull DistributionOptions getDistribution() {
3571+
return distribution;
3572+
}
3573+
3574+
public void setDistribution(final @NotNull DistributionOptions distribution) {
3575+
this.distribution = distribution != null ? distribution : new DistributionOptions();
3576+
}
3577+
35463578
public enum RequestSize {
35473579
NONE,
35483580
SMALL,

0 commit comments

Comments
 (0)