Skip to content

Commit 0a5a2c5

Browse files
committed
Added a versioning page for the Android SDK
1 parent d471ec1 commit 0a5a2c5

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed

docs/android/versioning.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Embrace Android SDK versioning strategy
2+
3+
The Embrace Android SDK is built to evolve with the Android ecosystem while maintaining a stable integration experience.
4+
This document explains how we choose which versions of Android build tools and technologies to support, and what guarantees you can expect when upgrading.
5+
6+
---
7+
8+
## Minimum supported versions
9+
10+
For versions **8.0.0 and newer**, the Embrace Android SDK requires the following minimum tool and platform versions:
11+
12+
| **Technology** | **Minimum Version** |
13+
| --- | --- |
14+
| **Kotlin** | 2.0.21 |
15+
| **Gradle** | 8.0.2 |
16+
| **Android Gradle Plugin (AGP)** | 8.0.2 |
17+
| **minSdk** | 26 * |
18+
| **minCompileSdk** | 34 |
19+
| **Build JDK version** | 17 |
20+
| **sourceCompatibility** | 11 |
21+
22+
\* Due to a dependency in **opentelemetry-java** that requires a Java 11 class, **desugaring is required** to use Embrace with a lower `minSdk`.
23+
With desugaring enabled, Embrace supports `minSdk 21`, though Gradle should be updated to 8.4 and AGP to 8.3.0.
24+
25+
---
26+
27+
## Why we don’t support every version
28+
29+
Supporting very old versions of build tools and libraries has an ongoing maintenance cost.
30+
Outdated toolchains often prevent us from adopting newer Android APIs and features.
31+
32+
To provide the best experience — modern APIs, better performance, and faster support — we intentionally follow the evolution of the Android toolchain.
33+
While we aim to minimize disruption and support a reasonable range of versions, we expect occasional updates to be necessary.
34+
35+
---
36+
37+
## Our versioning principles
38+
39+
We follow these principles to stay aligned with the Android ecosystem:
40+
41+
### **Kotlin**
42+
43+
We build with the latest Kotlin version and target up to four versions behind it.
44+
Dropping support for older Kotlin versions only happens in a major SDK release.
45+
46+
### **AGP and Gradle**
47+
48+
We support the latest two major versions of AGP and Gradle, or higher if required by Kotlin.
49+
Because these tools don’t strictly follow semantic versioning, we may drop older versions when necessary to maintain compatibility or stability.
50+
51+
### **minSdk and minCompileSdk**
52+
53+
We align our `minSdk` with the minimum required by Jetpack Compose, since most Android projects adopt new minimums when Compose does.
54+
55+
### **Build-time JDK**
56+
57+
We require the JDK version needed by the minimum supported version of Gradle.
58+
59+
### **sourceCompatibility**
60+
61+
We set `sourceCompatibility = 11` and rely on **desugaring**, which allows apps with lower `minSdk` values to use modern Java 11+ language features.
62+
More info: [Java 8+ desugaring in Android Studio](https://developer.android.com/studio/write/java8-support)
63+
64+
### **OpenTelemetry API**
65+
66+
We track the latest stable OpenTelemetry Java and Kotlin APIs.
67+
Breaking changes in these projects are rare; if they occur, we will assess whether they require a major SDK release.
68+
69+
### **NDK**
70+
71+
We always build with the latest stable NDK, since apps don’t link against our native libraries directly.

0 commit comments

Comments
 (0)