Skip to content

Commit 8e7f9fd

Browse files
committed
feat(size-analysis): Integrate Size Analysis to measure SDK size overhead
1 parent 27d7cf8 commit 8e7f9fd

File tree

8 files changed

+140
-0
lines changed

8 files changed

+140
-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
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 }}

build.gradle.kts

Lines changed: 1 addition & 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 {

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: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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+
}
23+
}
24+
compileOptions {
25+
sourceCompatibility = JavaVersion.VERSION_17
26+
targetCompatibility = JavaVersion.VERSION_17
27+
}
28+
}
29+
30+
sentry {
31+
org.set("sentry-sdks")
32+
projectName.set("sentry-android")
33+
authToken.set(System.getenv("SENTRY_AUTH_TOKEN"))
34+
autoUploadProguardMapping.set(true)
35+
tracingInstrumentation.enabled.set(false)
36+
includeDependenciesReport.set(false)
37+
telemetry.set(false)
38+
sizeAnalysis.enabled.set(true)
39+
}
40+
41+
configurations.configureEach {
42+
exclude(group = "org.jetbrains.kotlin")
43+
exclude(group = "androidx.core")
44+
exclude(group = "androidx.lifecycle")
45+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Rules to not warn about missing classes for Kotlin stdlib. We use it, but we only want to measure the SDK size overhead, so we keep the test app 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
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>

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,6 @@ include(
9797
"sentry-android-integration-tests:sentry-uitest-android",
9898
"sentry-android-integration-tests:test-app-plain",
9999
"sentry-android-integration-tests:test-app-sentry",
100+
"sentry-android-integration-tests:test-app-size",
100101
"sentry-samples:sentry-samples-openfeign"
101102
)

0 commit comments

Comments
 (0)