Skip to content

Commit b2e03d4

Browse files
committed
Merge branch 'main' into stefanosiano/fix/strict-mode
2 parents c1b6bc6 + e881bae commit b2e03d4

File tree

14 files changed

+160
-46
lines changed

14 files changed

+160
-46
lines changed

.craft.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ targets:
3434
maven:io.sentry:sentry-apache-http-client-5:
3535
maven:io.sentry:sentry-android:
3636
maven:io.sentry:sentry-android-core:
37+
maven:io.sentry:sentry-android-distribution:
3738
maven:io.sentry:sentry-android-ndk:
3839
maven:io.sentry:sentry-android-timber:
3940
maven:io.sentry:sentry-kotlin-extensions:

.github/workflows/danger.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,6 @@ on:
66

77
jobs:
88
danger:
9-
uses: getsentry/github-workflows/.github/workflows/danger.yml@v2
9+
runs-on: ubuntu-latest
10+
steps:
11+
- uses: getsentry/github-workflows/danger@v3

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## Unreleased
44

5+
### Features
6+
7+
- Add experimental Sentry Android Distribution module for integrating with Sentry Build Distribution to check for and install updates ([#4804](https://github.com/getsentry/sentry-java/pull/4804))
8+
59
### Fixes
610

711
- Avoid StrictMode warnings ([#4724](https://github.com/getsentry/sentry-java/pull/4724))

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Sentry SDK for Java and Android
2020
|-----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ------- |
2121
| sentry-android | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android) | 21 |
2222
| sentry-android-core | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android-core/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android-core) | 21 |
23+
| sentry-android-distribution | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android-distribution/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android-distribution) | 21 |
2324
| sentry-android-ndk | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android-ndk/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android-ndk) | 21 |
2425
| sentry-android-timber | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android-timber/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android-timber) | 21 |
2526
| sentry-android-fragment | [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android-fragment/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.sentry/sentry-android-fragment) | 21 |

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ subprojects {
161161
}
162162
}
163163

164-
if (!this.name.contains("sample") && !this.name.contains("integration-tests") && this.name != "sentry-system-test-support" && this.name != "sentry-test-support" && this.name != "sentry-android-distribution") {
164+
if (!this.name.contains("sample") && !this.name.contains("integration-tests") && this.name != "sentry-system-test-support" && this.name != "sentry-test-support") {
165165
apply<DistributionPlugin>()
166166
apply<com.vanniktech.maven.publish.MavenPublishPlugin>()
167167

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# sentry-android-distribution
2+
3+
This module contains the client library for the Sentry Android Build Distribution that checks for updates for your application automatically for internal testing purposes.

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ internal class DistributionHttpClient(private val options: SentryOptions) {
2626
val platform: String = "android",
2727
val versionCode: Long,
2828
val versionName: String,
29+
val buildConfiguration: String,
2930
)
3031

3132
/**
@@ -56,9 +57,12 @@ internal class DistributionHttpClient(private val options: SentryOptions) {
5657
append("&platform=${URLEncoder.encode(params.platform, "UTF-8")}")
5758
append("&build_number=${URLEncoder.encode(params.versionCode.toString(), "UTF-8")}")
5859
append("&build_version=${URLEncoder.encode(params.versionName, "UTF-8")}")
60+
append("&build_configuration=${URLEncoder.encode(params.buildConfiguration, "UTF-8")}")
5961
}
6062
val url = URL(urlString)
6163

64+
options.logger.log(SentryLevel.DEBUG, "Distribution API URL: $urlString")
65+
6266
return try {
6367
makeRequest(url, authToken)
6468
} catch (e: IOException) {

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,16 @@ public class DistributionIntegration(context: Context) : Integration, IDistribut
132132
}
133133
val appId = context.applicationInfo.packageName
134134

135+
val buildConfiguration =
136+
sentryOptions.distribution.buildConfiguration
137+
?: throw IllegalStateException("buildConfiguration must be set in distribution options")
138+
135139
DistributionHttpClient.UpdateCheckParams(
136140
appId = appId,
137141
platform = "android",
138142
versionCode = versionCode,
139143
versionName = versionName,
144+
buildConfiguration = buildConfiguration,
140145
)
141146
} catch (e: PackageManager.NameNotFoundException) {
142147
sentryOptions.logger.log(SentryLevel.ERROR, e, "Failed to get package info")

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ internal class UpdateResponseParser(private val options: SentryOptions) {
3232

3333
options.logger.log(SentryLevel.DEBUG, "Parsing distribution API response")
3434

35-
// Check if there's a new release available
36-
val updateAvailable = json.optBoolean("updateAvailable", false)
35+
// Check if there's an update object in the response
36+
val updateJson = json.optJSONObject("update")
3737

38-
if (updateAvailable) {
39-
val updateInfo = parseUpdateInfo(json)
38+
if (updateJson != null) {
39+
val updateInfo = parseUpdateInfo(updateJson)
4040
UpdateStatus.NewRelease(updateInfo)
4141
} else {
4242
UpdateStatus.UpToDate.getInstance()
@@ -52,11 +52,11 @@ internal class UpdateResponseParser(private val options: SentryOptions) {
5252

5353
private fun parseUpdateInfo(json: JSONObject): UpdateInfo {
5454
val id = json.optString("id", "")
55-
val buildVersion = json.optString("buildVersion", "")
56-
val buildNumber = json.optInt("buildNumber", 0)
57-
val downloadUrl = json.optString("downloadUrl", "")
58-
val appName = json.optString("appName", "")
59-
val createdDate = json.optString("createdDate", "")
55+
val buildVersion = json.optString("build_version", "")
56+
val buildNumber = json.optInt("build_number", 0)
57+
val downloadUrl = json.optString("download_url", "")
58+
val appName = json.optString("app_name", "")
59+
val createdDate = json.optString("created_date", "")
6060

6161
// Validate required fields (optString returns "null" for null values)
6262
val missingFields = mutableListOf<String>()

sentry-android-distribution/src/test/java/io/sentry/android/distribution/DistributionHttpClientTest.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class DistributionHttpClientTest {
3737
appId = "com.emergetools.hackernews",
3838
versionName = "1.0.0",
3939
versionCode = 5L,
40+
buildConfiguration = "release",
4041
)
4142

4243
val response = httpClient.checkForUpdates(params)

0 commit comments

Comments
 (0)