Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions .github/workflows/integration-tests-size.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: SDK Size Analysis

on:
push:
branches:
- main
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
name: Build and Analyze SDK Size
runs-on: ubuntu-latest

env:
GRADLE_ENCRYPTION_KEY: ${{ secrets.GRADLE_ENCRYPTION_KEY }}

steps:
- name: Checkout Repo
uses: actions/checkout@v5

- name: Setup Java Version
uses: actions/setup-java@v5
with:
distribution: "temurin"
java-version: "17"

# Workaround for https://github.com/gradle/actions/issues/21 to use config cache
- name: Cache buildSrc
uses: actions/cache@v4
with:
path: buildSrc/build
key: build-logic-${{ hashFiles('buildSrc/src/**', 'buildSrc/build.gradle.kts','buildSrc/settings.gradle.kts') }}

- name: Setup Gradle
uses: gradle/actions/setup-gradle@4d9f0ba0025fe599b4ebab900eb7f3a1d93ef4c2
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}

- name: Size Analysis
run: ./gradlew :sentry-android-integration-tests:test-app-size:bundleRelease
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
2 changes: 2 additions & 0 deletions .github/workflows/spring-boot-2-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ jobs:
-e '/.*"sentry-android-integration-tests:sentry-uitest-android",/d' \
-e '/.*"sentry-android-integration-tests:sentry-uitest-android-critical",/d' \
-e '/.*"sentry-android-integration-tests:test-app-sentry",/d' \
-e '/.*"sentry-android-integration-tests:test-app-size",/d' \
-e '/.*"sentry-samples:sentry-samples-android",/d' \
-e '/.*"sentry-android-replay",/d' \
settings.gradle.kts
Expand All @@ -91,6 +92,7 @@ jobs:
-e '/.*"sentry-uitest-android-benchmark",/d' \
-e '/.*"sentry-uitest-android-critical",/d' \
-e '/.*"test-app-sentry",/d' \
-e '/.*"test-app-size",/d' \
-e '/.*"sentry-samples-android",/d' \
build.gradle.kts

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/spring-boot-3-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ jobs:
-e '/.*"sentry-android-integration-tests:sentry-uitest-android",/d' \
-e '/.*"sentry-android-integration-tests:sentry-uitest-android-critical",/d' \
-e '/.*"sentry-android-integration-tests:test-app-sentry",/d' \
-e '/.*"sentry-android-integration-tests:test-app-size",/d' \
-e '/.*"sentry-samples:sentry-samples-android",/d' \
-e '/.*"sentry-android-replay",/d' \
settings.gradle.kts
Expand All @@ -91,6 +92,7 @@ jobs:
-e '/.*"sentry-uitest-android-benchmark",/d' \
-e '/.*"sentry-uitest-android-critical",/d' \
-e '/.*"test-app-sentry",/d' \
-e '/.*"test-app-size",/d' \
-e '/.*"sentry-samples-android",/d' \
build.gradle.kts

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/spring-boot-4-matrix.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ jobs:
-e '/.*"sentry-android-integration-tests:sentry-uitest-android",/d' \
-e '/.*"sentry-android-integration-tests:sentry-uitest-android-critical",/d' \
-e '/.*"sentry-android-integration-tests:test-app-sentry",/d' \
-e '/.*"sentry-android-integration-tests:test-app-size",/d' \
-e '/.*"sentry-samples:sentry-samples-android",/d' \
-e '/.*"sentry-android-replay",/d' \
settings.gradle.kts
Expand All @@ -91,6 +92,7 @@ jobs:
-e '/.*"sentry-uitest-android-benchmark",/d' \
-e '/.*"sentry-uitest-android-critical",/d' \
-e '/.*"test-app-sentry",/d' \
-e '/.*"test-app-size",/d' \
-e '/.*"sentry-samples-android",/d' \
build.gradle.kts

Expand Down
2 changes: 2 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ plugins {
alias(libs.plugins.gradle.versions) apply false
alias(libs.plugins.spring.dependency.management) apply false
id("io.sentry.javadoc.aggregate")
alias(libs.plugins.sentry) apply false
}

buildscript {
Expand Down Expand Up @@ -83,6 +84,7 @@ apiValidation {
"sentry-uitest-android-critical",
"test-app-plain",
"test-app-sentry",
"test-app-size",
"sentry-samples-netflix-dgs"
)
)
Expand Down
1 change: 1 addition & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ springboot4 = { id = "org.springframework.boot", version.ref = "springboot4" }
spring-dependency-management = { id = "io.spring.dependency-management", version = "1.0.11.RELEASE" }
gretty = { id = "org.gretty", version = "4.0.0" }
animalsniffer = { id = "ru.vyarus.animalsniffer", version = "2.0.1" }
sentry = { id = "io.sentry.android.gradle", version = "6.0.0-alpha.6"}

[libraries]
apache-httpclient = { module = "org.apache.httpcomponents.client5:httpclient5", version = "5.0.4" }
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
60 changes: 60 additions & 0 deletions sentry-android-integration-tests/test-app-size/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
plugins {
id("com.android.application")
id("io.sentry.android.gradle")
}

android {
namespace = "io.sentry.tests.size"
compileSdk = libs.versions.compileSdk.get().toInt()

defaultConfig {
applicationId = "io.sentry.tests.size"
minSdk = libs.versions.minSdk.get().toInt()
targetSdk = libs.versions.targetSdk.get().toInt()
versionCode = 1
versionName = project.version.toString()
}

buildTypes {
release {
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
ndk {
abiFilters.clear()
abiFilters.add("arm64-v8a")
}
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
androidComponents.beforeVariants {
it.enable = !Config.Android.shouldSkipDebugVariant(it.buildType)
}
}

configurations.configureEach {
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib-jdk8")
exclude(group = "androidx.core")
exclude(group = "androidx.lifecycle")
}

dependencies {
implementation(projects.sentryAndroidTimber)
implementation(projects.sentryAndroidSqlite)
implementation(projects.sentryOkhttp)
implementation(projects.sentryCompose)
implementation(projects.sentryAndroidFragment)
}

sentry {
org.set("sentry-sdks")
projectName.set("sentry-android")
authToken.set(System.getenv("SENTRY_AUTH_TOKEN"))
includeProguardMapping.set(false)
tracingInstrumentation.enabled.set(false)
includeDependenciesReport.set(false)
telemetry.set(false)
sizeAnalysis.enabled.set(providers.environmentVariable("SENTRY_AUTH_TOKEN").isPresent)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# 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
# This is generated automatically by the Android Gradle plugin.
-dontwarn kotlin.Lazy
-dontwarn kotlin.LazyKt
-dontwarn kotlin.LazyThreadSafetyMode
-dontwarn kotlin.Metadata
-dontwarn kotlin.NoWhenBranchMatchedException
-dontwarn kotlin.Pair
-dontwarn kotlin.TuplesKt
-dontwarn kotlin.Unit
-dontwarn kotlin.collections.CollectionsKt
-dontwarn kotlin.comparisons.ComparisonsKt
-dontwarn kotlin.enums.EnumEntries
-dontwarn kotlin.enums.EnumEntriesKt
-dontwarn kotlin.io.CloseableKt
-dontwarn kotlin.io.FilesKt
-dontwarn kotlin.io.TextStreamsKt
-dontwarn kotlin.jdk7.AutoCloseableKt
-dontwarn kotlin.jvm.functions.Function0
-dontwarn kotlin.jvm.functions.Function1
-dontwarn kotlin.jvm.internal.DefaultConstructorMarker
-dontwarn kotlin.jvm.internal.Intrinsics
-dontwarn kotlin.jvm.internal.Lambda
-dontwarn kotlin.jvm.internal.MutablePropertyReference1
-dontwarn kotlin.jvm.internal.MutablePropertyReference1Impl
-dontwarn kotlin.jvm.internal.Ref$ObjectRef
-dontwarn kotlin.jvm.internal.Reflection
-dontwarn kotlin.jvm.internal.SourceDebugExtension
-dontwarn kotlin.jvm.internal.TypeIntrinsics
-dontwarn kotlin.properties.ReadWriteProperty
-dontwarn kotlin.ranges.LongProgression
-dontwarn kotlin.ranges.LongRange
-dontwarn kotlin.ranges.RangesKt
-dontwarn kotlin.reflect.KMutableProperty1
-dontwarn kotlin.reflect.KProperty
-dontwarn kotlin.sequences.Sequence
-dontwarn kotlin.text.Charsets
-dontwarn kotlin.text.Regex
-dontwarn kotlin.text.StringsKt
-dontwarn timber.log.Timber$Tree
-dontwarn kotlin.Deprecated
-dontwarn kotlin.Function
-dontwarn kotlin.jvm.JvmStatic
-dontwarn kotlin.jvm.functions.Function2
-dontwarn kotlin.jvm.functions.Function3
-dontwarn kotlin.jvm.internal.Ref$BooleanRef
-dontwarn kotlin.math.MathKt
-dontwarn okhttp3.EventListener
-dontwarn okhttp3.Interceptor
# Assume all classes are used to not strip them out, e.g. integrations like Compose or Sqlite
-keep class io.sentry.**
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<manifest xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
<application
android:label="SDK Size"
tools:ignore="MissingApplicationIcon" />
</manifest>
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -97,5 +97,6 @@ include(
"sentry-android-integration-tests:sentry-uitest-android",
"sentry-android-integration-tests:test-app-plain",
"sentry-android-integration-tests:test-app-sentry",
"sentry-android-integration-tests:test-app-size",
"sentry-samples:sentry-samples-openfeign"
)
Loading