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
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Changelog

## 0.3.0 (TBD)
## 0.3.0 (2026-06-23)

- Lowered the minimum supported Android API level from 29 (Android 10) to 27
(Android 8.1). Device data collection on API 27 and 28 falls back to
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ Android SDK for collecting and reporting device data to MaxMind.
## Requirements

- Android API 27+ (Android 8.1+)
- Kotlin 2.2.21+
- A recent stable version of Kotlin

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To align with the pull request's goal of referencing version sources of truth in the documentation instead of hard-coding, we should reference gradle/libs.versions.toml for the Kotlin version rather than using a vague description like 'A recent stable version of Kotlin'.

Suggested change
- A recent stable version of Kotlin
- Kotlin (see gradle/libs.versions.toml for the configured version)

- AndroidX libraries

## Installation
Expand All @@ -16,15 +16,15 @@ Add the dependency to your app's `build.gradle.kts`:

```kotlin
dependencies {
implementation("com.maxmind.device:device-sdk:0.2.0")
implementation("com.maxmind.device:device-sdk:0.3.0")
}
```

### Gradle (Groovy)

```groovy
dependencies {
implementation 'com.maxmind.device:device-sdk:0.2.0'
implementation 'com.maxmind.device:device-sdk:0.3.0'
}
```

Expand Down
42 changes: 26 additions & 16 deletions SETUP.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,50 @@

## Prerequisites

- Java 17+ (Android Studio includes JDK 21)
- Android SDK with API 34
- Gradle 8.5+ (included via wrapper)
- Java (the required version is pinned in `mise.toml`)
- Android SDK (install the platform and build-tools matching the `compileSdk` in
`gradle/libs.versions.toml`)
- Gradle (included via the wrapper)

## Initial Setup

### 1. Install Android SDK

#### Option A: Using Android Studio (Recommended)
#### Option A: Using mise (Recommended)

[mise](https://mise.jdx.dev/) reads `mise.toml` and installs the toolchain at
the versions this project expects, so you don't have to track them by hand:

```bash
mise install # Installs Java, the Android SDK command-line tools, etc.
mise run setup # Accepts licenses, installs platform packages, writes local.properties
```

This also creates `local.properties`, so you can skip step 2 below.

#### Option B: Using Android Studio

1. Open Android Studio
2. Navigate to **Tools → SDK Manager**
3. Install the following components:
- **SDK Platforms**: Android 14.0 (API 34)
- **SDK Tools**:
- Android SDK Build-Tools 34
- Android SDK Command-line Tools
- Android SDK Platform-Tools
3. Install the platform and build-tools matching the `compileSdk` in
`gradle/libs.versions.toml`, plus the Command-line Tools and Platform-Tools
4. Accept all licenses when prompted
5. Note the SDK location path (shown at top of SDK Manager)

#### Option B: Command Line
#### Option C: Command Line

```bash
# Download command-line tools
# Download the latest command-line tools ("Command line tools only") from
# https://developer.android.com/studio and unpack them:
mkdir -p ~/Android/Sdk/cmdline-tools
cd ~/Android/Sdk/cmdline-tools
wget https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip
unzip commandlinetools-linux-9477386_latest.zip
unzip ~/Downloads/commandlinetools-linux-*.zip
mv cmdline-tools latest

# Accept licenses and install components
# Accept licenses, then install the platform and build-tools for the project's
# compileSdk (see gradle/libs.versions.toml). For example, if compileSdk = 36:
~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager --licenses
~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0"
~/Android/Sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-36" "build-tools;36.0.0"
```

### 2. Configure SDK Location
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ plugins {

allprojects {
group = "com.maxmind.device"
version = "0.2.0"
version = "0.3.0"
}

tasks.register("clean", Delete::class) {
Expand Down
2 changes: 1 addition & 1 deletion device-sdk/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ signing {
// API compatibility checking with japicmp
// Compares the current build against the latest released version on Maven Central
// Update this version after each release (the release script should do this automatically)
val baselineVersion = "0.2.0"
val baselineVersion = "0.3.0"

// Download baseline AAR directly from Maven Central to avoid local project resolution
val downloadBaselineAar by tasks.registering {
Expand Down
22 changes: 11 additions & 11 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@ targetSdk = "36"
compileSdk = "36"

# Core dependencies
kotlin = "2.2.21"
coroutines = "1.10.2"
serialization = "1.10.0"
kotlin = "2.3.21"
coroutines = "1.11.0"
serialization = "1.11.0"

# Android
androidGradlePlugin = "8.13.1"
androidxCore = "1.18.0"
androidxAppCompat = "1.7.1"
androidxLifecycle = "2.10.0"
androidxLifecycle = "2.11.0"

# Networking
ktor = "3.4.2"
ktor = "3.5.0"

# Code quality
detekt = "1.23.8"
Expand All @@ -27,21 +27,21 @@ dokka = "2.2.0"

# Testing
junit = "4.13.2"
junitJupiter = "6.0.1"
junitPlatform = "6.0.1"
mockk = "1.14.9"
junitJupiter = "6.1.0"
junitPlatform = "6.1.0"
mockk = "1.14.11"
androidxTestCore = "1.7.0"
androidxTestRunner = "1.7.0"
androidxTestJunit = "1.3.0"
robolectric = "4.16.1"
turbine = "1.2.1"

# Material (for sample app)
material = "1.12.0"
material = "1.14.0"

# Publishing
mavenPublish = "0.36.0"
dependencyUpdates = "0.53.0"
mavenPublish = "0.37.0"
dependencyUpdates = "0.54.0"

[libraries]
# Kotlin
Expand Down
Loading