diff --git a/sentry-android-distribution/build.gradle.kts b/sentry-android-distribution/build.gradle.kts index aff4a7b9230..dd9a278aa3c 100644 --- a/sentry-android-distribution/build.gradle.kts +++ b/sentry-android-distribution/build.gradle.kts @@ -25,5 +25,8 @@ androidComponents.beforeVariants { dependencies { implementation(projects.sentry) + implementation( + libs.jetbrains.annotations + ) // Use implementation instead of compileOnly to override kotlin stdlib's version implementation(kotlin(Config.kotlinStdLib, Config.kotlinStdLibVersionAndroid)) } diff --git a/sentry-android-distribution/src/main/java/io/sentry/android/distribution/DistributionIntegration.kt b/sentry-android-distribution/src/main/java/io/sentry/android/distribution/DistributionIntegration.kt index 53fda5f35db..7490e8d627f 100644 --- a/sentry-android-distribution/src/main/java/io/sentry/android/distribution/DistributionIntegration.kt +++ b/sentry-android-distribution/src/main/java/io/sentry/android/distribution/DistributionIntegration.kt @@ -9,6 +9,7 @@ import io.sentry.Integration import io.sentry.SentryOptions import io.sentry.UpdateInfo import io.sentry.UpdateStatus +import org.jetbrains.annotations.ApiStatus /** * The public Android SDK for Sentry Build Distribution. @@ -16,6 +17,7 @@ import io.sentry.UpdateStatus * Provides functionality to check for app updates and download new versions from Sentry's preprod * artifacts system. */ +@ApiStatus.Experimental public class DistributionIntegration(context: Context) : Integration, IDistributionApi { private lateinit var scopes: IScopes diff --git a/sentry/src/main/java/io/sentry/IDistributionApi.java b/sentry/src/main/java/io/sentry/IDistributionApi.java index ef0ac25d467..d3482f71db1 100644 --- a/sentry/src/main/java/io/sentry/IDistributionApi.java +++ b/sentry/src/main/java/io/sentry/IDistributionApi.java @@ -1,5 +1,6 @@ package io.sentry; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; /** @@ -8,6 +9,7 @@ *
Provides methods to check for app updates and download new versions from Sentry's preprod * artifacts system. */ +@ApiStatus.Experimental public interface IDistributionApi { /** diff --git a/sentry/src/main/java/io/sentry/NoOpDistributionApi.java b/sentry/src/main/java/io/sentry/NoOpDistributionApi.java index 15470524342..d46fe4364ca 100644 --- a/sentry/src/main/java/io/sentry/NoOpDistributionApi.java +++ b/sentry/src/main/java/io/sentry/NoOpDistributionApi.java @@ -1,8 +1,10 @@ package io.sentry; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; /** No-op implementation of IDistributionApi. Used when distribution module is not available. */ +@ApiStatus.Experimental public final class NoOpDistributionApi implements IDistributionApi { private static final NoOpDistributionApi instance = new NoOpDistributionApi(); diff --git a/sentry/src/main/java/io/sentry/SentryOptions.java b/sentry/src/main/java/io/sentry/SentryOptions.java index dee3788bc6c..ddb6dda361a 100644 --- a/sentry/src/main/java/io/sentry/SentryOptions.java +++ b/sentry/src/main/java/io/sentry/SentryOptions.java @@ -602,6 +602,7 @@ public class SentryOptions { * SentryAndroidOptions, but there's a circular dependency issue between sentry-android-core and * sentry-android-distribution modules. */ + @ApiStatus.Experimental public static final class DistributionOptions { /** Organization authentication token for API access */ public String orgAuthToken = ""; @@ -2848,10 +2849,12 @@ public void setReplayController(final @Nullable ReplayController replayControlle replayController != null ? replayController : NoOpReplayController.getInstance(); } + @ApiStatus.Experimental public @NotNull IDistributionApi getDistributionController() { return distributionController; } + @ApiStatus.Experimental public void setDistributionController(final @Nullable IDistributionApi distributionController) { this.distributionController = distributionController != null ? distributionController : NoOpDistributionApi.getInstance(); @@ -3567,10 +3570,12 @@ public interface BeforeSendLogCallback { } } + @ApiStatus.Experimental public @NotNull DistributionOptions getDistribution() { return distribution; } + @ApiStatus.Experimental public void setDistribution(final @NotNull DistributionOptions distribution) { this.distribution = distribution != null ? distribution : new DistributionOptions(); } diff --git a/sentry/src/main/java/io/sentry/UpdateInfo.java b/sentry/src/main/java/io/sentry/UpdateInfo.java index 95fe8bd7e9c..84edd7c4c59 100644 --- a/sentry/src/main/java/io/sentry/UpdateInfo.java +++ b/sentry/src/main/java/io/sentry/UpdateInfo.java @@ -1,8 +1,10 @@ package io.sentry; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; /** Information about an available app update. */ +@ApiStatus.Experimental public final class UpdateInfo { private final @NotNull String id; private final @NotNull String buildVersion; diff --git a/sentry/src/main/java/io/sentry/UpdateStatus.java b/sentry/src/main/java/io/sentry/UpdateStatus.java index d2d9ac830d8..3de15680a0c 100644 --- a/sentry/src/main/java/io/sentry/UpdateStatus.java +++ b/sentry/src/main/java/io/sentry/UpdateStatus.java @@ -1,8 +1,10 @@ package io.sentry; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; /** Represents the result of checking for app updates. */ +@ApiStatus.Experimental public abstract class UpdateStatus { /** Current app version is up to date, no update available. */