Skip to content

Commit b58ede0

Browse files
authored
Merge cbc3217 into ab8a72d
2 parents ab8a72d + cbc3217 commit b58ede0

File tree

11 files changed

+174
-0
lines changed

11 files changed

+174
-0
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: SDK Size Analysis
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
build:
15+
name: Build and Analyze SDK Size
16+
runs-on: ubuntu-latest
17+
18+
env:
19+
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
20+
21+
steps:
22+
- name: Checkout Repo
23+
uses: actions/checkout@v5
24+
25+
- name: Setup Java Version
26+
uses: actions/setup-java@v5
27+
with:
28+
distribution: "temurin"
29+
java-version: "17"
30+
31+
# Workaround for https://github.com/gradle/actions/issues/21 to use config cache
32+
- name: Cache buildSrc
33+
uses: actions/cache@v4
34+
with:
35+
path: buildSrc/build
36+
key: build-logic-${{ hashFiles('buildSrc/src/**', 'buildSrc/build.gradle.kts','buildSrc/settings.gradle.kts') }}
37+
38+
- name: Setup Gradle
39+
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2
40+
with:
41+
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
42+
43+
- name: Size Analysis
44+
run: ./gradlew :sentry-android-integration-tests:test-app-size:bundleRelease
45+
env:
46+
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}

.github/workflows/spring-boot-2-matrix.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ jobs:
8080
-e '/.*"sentry-android-integration-tests:sentry-uitest-android",/d' \
8181
-e '/.*"sentry-android-integration-tests:sentry-uitest-android-critical",/d' \
8282
-e '/.*"sentry-android-integration-tests:test-app-sentry",/d' \
83+
-e '/.*"sentry-android-integration-tests:test-app-size",/d' \
8384
-e '/.*"sentry-samples:sentry-samples-android",/d' \
8485
-e '/.*"sentry-android-replay",/d' \
8586
settings.gradle.kts
@@ -91,6 +92,7 @@ jobs:
9192
-e '/.*"sentry-uitest-android-benchmark",/d' \
9293
-e '/.*"sentry-uitest-android-critical",/d' \
9394
-e '/.*"test-app-sentry",/d' \
95+
-e '/.*"test-app-size",/d' \
9496
-e '/.*"sentry-samples-android",/d' \
9597
build.gradle.kts
9698

.github/workflows/spring-boot-3-matrix.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ jobs:
8080
-e '/.*"sentry-android-integration-tests:sentry-uitest-android",/d' \
8181
-e '/.*"sentry-android-integration-tests:sentry-uitest-android-critical",/d' \
8282
-e '/.*"sentry-android-integration-tests:test-app-sentry",/d' \
83+
-e '/.*"sentry-android-integration-tests:test-app-size",/d' \
8384
-e '/.*"sentry-samples:sentry-samples-android",/d' \
8485
-e '/.*"sentry-android-replay",/d' \
8586
settings.gradle.kts
@@ -91,6 +92,7 @@ jobs:
9192
-e '/.*"sentry-uitest-android-benchmark",/d' \
9293
-e '/.*"sentry-uitest-android-critical",/d' \
9394
-e '/.*"test-app-sentry",/d' \
95+
-e '/.*"test-app-size",/d' \
9496
-e '/.*"sentry-samples-android",/d' \
9597
build.gradle.kts
9698

.github/workflows/spring-boot-4-matrix.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ jobs:
8080
-e '/.*"sentry-android-integration-tests:sentry-uitest-android",/d' \
8181
-e '/.*"sentry-android-integration-tests:sentry-uitest-android-critical",/d' \
8282
-e '/.*"sentry-android-integration-tests:test-app-sentry",/d' \
83+
-e '/.*"sentry-android-integration-tests:test-app-size",/d' \
8384
-e '/.*"sentry-samples:sentry-samples-android",/d' \
8485
-e '/.*"sentry-android-replay",/d' \
8586
settings.gradle.kts
@@ -91,6 +92,7 @@ jobs:
9192
-e '/.*"sentry-uitest-android-benchmark",/d' \
9293
-e '/.*"sentry-uitest-android-critical",/d' \
9394
-e '/.*"test-app-sentry",/d' \
95+
-e '/.*"test-app-size",/d' \
9496
-e '/.*"sentry-samples-android",/d' \
9597
build.gradle.kts
9698

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ plugins {
3030
alias(libs.plugins.gradle.versions) apply false
3131
alias(libs.plugins.spring.dependency.management) apply false
3232
id("io.sentry.javadoc.aggregate")
33+
alias(libs.plugins.sentry) apply false
3334
}
3435

3536
buildscript {
@@ -83,6 +84,7 @@ apiValidation {
8384
"sentry-uitest-android-critical",
8485
"test-app-plain",
8586
"test-app-sentry",
87+
"test-app-size",
8688
"sentry-samples-netflix-dgs"
8789
)
8890
)

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ springboot4 = { id = "org.springframework.boot", version.ref = "springboot4" }
6565
spring-dependency-management = { id = "io.spring.dependency-management", version = "1.0.11.RELEASE" }
6666
gretty = { id = "org.gretty", version = "4.0.0" }
6767
animalsniffer = { id = "ru.vyarus.animalsniffer", version = "2.0.1" }
68+
sentry = { id = "io.sentry.android.gradle", version = "6.0.0-alpha.6"}
6869

6970
[libraries]
7071
apache-httpclient = { module = "org.apache.httpcomponents.client5:httpclient5", version = "5.0.4" }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
plugins {
2+
id("com.android.application")
3+
id("io.sentry.android.gradle")
4+
}
5+
6+
android {
7+
namespace = "io.sentry.tests.size"
8+
compileSdk = libs.versions.compileSdk.get().toInt()
9+
10+
defaultConfig {
11+
applicationId = "io.sentry.tests.size"
12+
minSdk = libs.versions.minSdk.get().toInt()
13+
targetSdk = libs.versions.targetSdk.get().toInt()
14+
versionCode = 1
15+
versionName = project.version.toString()
16+
}
17+
18+
buildTypes {
19+
release {
20+
isMinifyEnabled = true
21+
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
22+
ndk {
23+
abiFilters.clear()
24+
abiFilters.add("arm64-v8a")
25+
}
26+
}
27+
}
28+
compileOptions {
29+
sourceCompatibility = JavaVersion.VERSION_17
30+
targetCompatibility = JavaVersion.VERSION_17
31+
}
32+
androidComponents.beforeVariants {
33+
it.enable = !Config.Android.shouldSkipDebugVariant(it.buildType)
34+
}
35+
}
36+
37+
configurations.configureEach {
38+
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib-jdk8")
39+
exclude(group = "androidx.core")
40+
exclude(group = "androidx.lifecycle")
41+
}
42+
43+
dependencies {
44+
implementation(projects.sentryAndroidTimber)
45+
implementation(projects.sentryAndroidSqlite)
46+
implementation(projects.sentryOkhttp)
47+
implementation(projects.sentryCompose)
48+
implementation(projects.sentryAndroidFragment)
49+
}
50+
51+
sentry {
52+
org.set("sentry-sdks")
53+
projectName.set("sentry-android")
54+
authToken.set(System.getenv("SENTRY_AUTH_TOKEN"))
55+
includeProguardMapping.set(false)
56+
tracingInstrumentation.enabled.set(false)
57+
includeDependenciesReport.set(false)
58+
telemetry.set(false)
59+
sizeAnalysis.enabled.set(true)
60+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Rules to not warn about missing classes. We use them, but we only want to measure the SDK size overhead and not run the app, so we keep it lean
2+
# This is generated automatically by the Android Gradle plugin.
3+
-dontwarn kotlin.Lazy
4+
-dontwarn kotlin.LazyKt
5+
-dontwarn kotlin.LazyThreadSafetyMode
6+
-dontwarn kotlin.Metadata
7+
-dontwarn kotlin.NoWhenBranchMatchedException
8+
-dontwarn kotlin.Pair
9+
-dontwarn kotlin.TuplesKt
10+
-dontwarn kotlin.Unit
11+
-dontwarn kotlin.collections.CollectionsKt
12+
-dontwarn kotlin.comparisons.ComparisonsKt
13+
-dontwarn kotlin.enums.EnumEntries
14+
-dontwarn kotlin.enums.EnumEntriesKt
15+
-dontwarn kotlin.io.CloseableKt
16+
-dontwarn kotlin.io.FilesKt
17+
-dontwarn kotlin.io.TextStreamsKt
18+
-dontwarn kotlin.jdk7.AutoCloseableKt
19+
-dontwarn kotlin.jvm.functions.Function0
20+
-dontwarn kotlin.jvm.functions.Function1
21+
-dontwarn kotlin.jvm.internal.DefaultConstructorMarker
22+
-dontwarn kotlin.jvm.internal.Intrinsics
23+
-dontwarn kotlin.jvm.internal.Lambda
24+
-dontwarn kotlin.jvm.internal.MutablePropertyReference1
25+
-dontwarn kotlin.jvm.internal.MutablePropertyReference1Impl
26+
-dontwarn kotlin.jvm.internal.Ref$ObjectRef
27+
-dontwarn kotlin.jvm.internal.Reflection
28+
-dontwarn kotlin.jvm.internal.SourceDebugExtension
29+
-dontwarn kotlin.jvm.internal.TypeIntrinsics
30+
-dontwarn kotlin.properties.ReadWriteProperty
31+
-dontwarn kotlin.ranges.LongProgression
32+
-dontwarn kotlin.ranges.LongRange
33+
-dontwarn kotlin.ranges.RangesKt
34+
-dontwarn kotlin.reflect.KMutableProperty1
35+
-dontwarn kotlin.reflect.KProperty
36+
-dontwarn kotlin.sequences.Sequence
37+
-dontwarn kotlin.text.Charsets
38+
-dontwarn kotlin.text.Regex
39+
-dontwarn kotlin.text.StringsKt
40+
-dontwarn timber.log.Timber$Tree
41+
-dontwarn kotlin.Deprecated
42+
-dontwarn kotlin.Function
43+
-dontwarn kotlin.jvm.JvmStatic
44+
-dontwarn kotlin.jvm.functions.Function2
45+
-dontwarn kotlin.jvm.functions.Function3
46+
-dontwarn kotlin.jvm.internal.Ref$BooleanRef
47+
-dontwarn kotlin.math.MathKt
48+
-dontwarn okhttp3.EventListener
49+
-dontwarn okhttp3.Interceptor
50+
# Assume all classes are used to not strip them out, e.g. integrations like Compose or Sqlite
51+
-keep class io.sentry.**
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<manifest xmlns:tools="http://schemas.android.com/tools"
2+
xmlns:android="http://schemas.android.com/apk/res/android">
3+
<application
4+
android:label="SDK Size"
5+
tools:ignore="MissingApplicationIcon" />
6+
</manifest>

0 commit comments

Comments
 (0)