Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
b643633
Update dependencies, migrate to latest AGP, refactor targets, and adj…
qiaoyuang May 16, 2026
7f18a2a
Fix unit test
qiaoyuang May 16, 2026
5b7c232
Update Android test commands to use `connectedAndroidDeviceTest`
qiaoyuang May 16, 2026
e5f2c8f
Refactor `androidDeviceTest` to depend on `commonTest` and group depe…
qiaoyuang May 16, 2026
72242c3
Extract driver tests into a new `sqllin-driver-test` module, upgrade …
qiaoyuang May 16, 2026
85d525f
Simplify array declarations and update imports in `CommonBasicTest`
qiaoyuang May 16, 2026
6f4fe46
Explicitly specify array types in `CommonBasicTest` and update `.giti…
qiaoyuang May 16, 2026
d4ada54
Rename macOS CI/CD tasks
qiaoyuang May 16, 2026
8c6cdc9
Refactor Android instrumented test in Github Actions
qiaoyuang May 17, 2026
f06c886
Fix an issue for Android instrumented test
qiaoyuang May 17, 2026
003df9c
Fix an issue for Android instrumented test
qiaoyuang May 17, 2026
5aafd8a
Fix an issue for Android instrumented test
qiaoyuang May 17, 2026
762be9a
Fix an issue for Android instrumented test
qiaoyuang May 17, 2026
d65331b
Fix an issue for Android instrumented test
qiaoyuang May 17, 2026
ceacb15
Fix an issue for Android instrumented test
qiaoyuang May 17, 2026
506dc60
Fix an issue for Android instrumented test
qiaoyuang May 17, 2026
de76669
Fix an issue for Android instrumented test
qiaoyuang May 17, 2026
54dda27
Fix an issue for Android instrumented test
qiaoyuang May 18, 2026
14ea820
Fix an issue for Android instrumented test
qiaoyuang May 18, 2026
b5bcb56
Fix an issue for Android instrumented test
qiaoyuang May 18, 2026
4522d3a
Fix an issue for Android instrumented test
qiaoyuang May 18, 2026
d12be91
Fix an issue for Android instrumented test
qiaoyuang May 18, 2026
56feb6f
Fix an issue for Android instrumented test
qiaoyuang May 18, 2026
0083d8c
Fix an issue for Android instrumented test
qiaoyuang May 18, 2026
274133b
Fix an issue for Android instrumented test
qiaoyuang May 18, 2026
73ba62e
Refactor Android CI
qiaoyuang May 18, 2026
79c70ac
Update build workflow to run Android device tests in parallel
qiaoyuang May 18, 2026
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
142 changes: 76 additions & 66 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ on:
jobs:

build-on-macos:
runs-on: macos-15-intel
runs-on: macos-latest
timeout-minutes: 60

steps:
Expand Down Expand Up @@ -41,56 +41,20 @@ jobs:
- name: Build sqllin-driver
run: ./gradlew :sqllin-driver:assemble -PonCICD

- name: Run sqllin-driver macOS X64 Tests
run: ./test_driver_macos.sh
- name: Run sqllin-driver macOS Arm64 Tests
run: ./gradlew :sqllin-driver-test:cleanMacosArm64Test :sqllin-driver-test:macosArm64Test --stacktrace

- name: Run sqllin-driver JVM Unit Tests on macOS X64
run: ./test_driver_jvm.sh
- name: Run sqllin-driver JVM Unit Tests on macOS Arm64
run: ./gradlew :sqllin-driver-test:cleanJvmTest :sqllin-driver-test:jvmTest --stacktrace

- name: Build sqllin-dsl
run: ./gradlew :sqllin-dsl:assemble -PonCICD

- name: Run sqllin-dsl macOS X64 Tests
run: ./test_dsl_macos.sh
- name: Run sqllin-dsl macOS Arm64 Tests
run: ./gradlew :sqllin-dsl-test:cleanMacosArm64Test :sqllin-dsl-test:macosArm64Test --stacktrace

- name: Run sqllin-dsl JVM Unit Tests on macOS X64
run: ./test_dsl_jvm.sh

- name: AVD Cache
uses: actions/cache@v4
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-36

- name: Create AVD and Generate Snapshot for Caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 36
target: google_apis
arch: x86_64
profile: pixel_6
emulator-build: 14257411
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: echo "Generated AVD snapshot for caching."

- name: Run Android 16 Instrumented Tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 36
target: google_apis
arch: x86_64
profile: pixel_6
emulator-build: 14257411
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: ./test_android.sh
- name: Run sqllin-dsl JVM Unit Tests on macOS Arm64
run: ./gradlew :sqllin-dsl-test:cleanJvmTest :sqllin-dsl-test:jvmTest --stacktrace

- name: Upload sqllin-driver Reports
uses: actions/upload-artifact@v4
Expand Down Expand Up @@ -135,7 +99,7 @@ jobs:
${{ runner.os }}-konan-

- name: Build sqllin-driver
run: ./gradlew :sqllin-driver:mingwX64MainKlibrary
run: ./gradlew :sqllin-driver:mingwX64MainKlibrary :sqllin-driver:jvmJar

- name: Run sqllin-driver MinGW X64 Tests
run: ./gradlew :sqllin-driver:cleanMingwX64Test && ./gradlew :sqllin-driver:mingwX64Test --stacktrace
Expand All @@ -144,7 +108,7 @@ jobs:
run: ./gradlew :sqllin-driver:cleanJvmTest && ./gradlew :sqllin-driver:jvmTest --stacktrace

- name: Build sqllin-dsl
run: ./gradlew :sqllin-dsl:mingwX64MainKlibrary
run: ./gradlew :sqllin-dsl:mingwX64MainKlibrary :sqllin-dsl:jvmJar

- name: Run sqllin-dsl MinGW X64 Tests
run: ./gradlew :sqllin-dsl-test:cleanMingwX64Test && ./gradlew :sqllin-dsl-test:mingwX64Test --stacktrace
Expand Down Expand Up @@ -195,25 +159,71 @@ jobs:
${{ runner.os }}-konan-

- name: Build sqllin-driver
run: ./gradlew :sqllin-driver:assemble -PonCICD
run: ./gradlew :sqllin-driver:linuxX64MainKlibrary :sqllin-driver:jvmJar

- name: Run sqllin-driver Linux X64 Tests
run: ./test_driver_linux.sh
run: ./gradlew :sqllin-driver-test:cleanLinuxX64Test :sqllin-driver-test:linuxX64Test --stacktrace

- name: Run sqllin-driver JVM Unit Tests on Linux X64
run: ./test_driver_jvm.sh
run: ./gradlew :sqllin-driver-test:cleanJvmTest :sqllin-driver-test:jvmTest --stacktrace

- name: Build sqllin-processor
run: ./gradlew :sqllin-processor:assemble

- name: Build sqllin-dsl
run: ./gradlew :sqllin-dsl:assemble -PonCICD
run: ./gradlew :sqllin-dsl:linuxX64MainKlibrary :sqllin-dsl:jvmJar

- name: Run sqllin-dsl Linux X64 Tests
run: ./test_dsl_linux.sh
run: ./gradlew :sqllin-dsl-test:cleanLinuxX64Test :sqllin-dsl-test:linuxX64Test --stacktrace

- name: Run sqllin-dsl JVM Unit Tests on Linux X64
run: ./test_dsl_jvm.sh
run: ./gradlew :sqllin-dsl-test:cleanJvmTest :sqllin-dsl-test:jvmTest --stacktrace

- name: Upload sqllin-driver Reports
uses: actions/upload-artifact@v4
with:
name: Test-Reports-Linux-driver
path: sqllin-driver/build/reports
if: failure()

- name: Upload sqllin-dsl Reports
uses: actions/upload-artifact@v4
with:
name: Test-Reports-Linux-dsl
path: sqllin-dsl/build/reports
if: failure()

build-android-and-test:
runs-on: ubuntu-latest
timeout-minutes: 60
strategy:
matrix:
include:
- api-level: 26
target: default
device: pixel_2
- api-level: 36
target: google_apis
device: pixel_6

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Validate Gradle Wrapper
uses: gradle/actions/wrapper-validation@v3

- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 21

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Build Android
run: ./gradlew :sqllin-driver:assembleAndroidMain :sqllin-dsl:assembleAndroidMain

- name: AVD Cache
uses: actions/cache@v4
Expand All @@ -222,45 +232,45 @@ jobs:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-26
key: avd-${{ matrix.api-level }}

- name: Create AVD and Generate Snapshot for Caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 26
target: default
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
arch: x86_64
profile: pixel_2
emulator-build: 14257411
profile: ${{ matrix.device }}
emulator-build: 15368433
force-avd-creation: false
emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: echo "Generated AVD snapshot for caching."

- name: Run Android 8 Instrumented Tests
- name: Run Android Instrumented Tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 26
target: default
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
arch: x86_64
profile: pixel_2
emulator-build: 14257411
profile: ${{ matrix.device }}
emulator-build: 15368433
force-avd-creation: false
emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
disable-animations: true
script: ./test_android.sh
script: ./gradlew :sqllin-driver-test:connectedAndroidDeviceTest --stacktrace & ./gradlew :sqllin-dsl-test:connectedAndroidDeviceTest --stacktrace

- name: Upload sqllin-driver Reports
uses: actions/upload-artifact@v4
with:
name: Test-Reports-Linux-driver
name: Test-Reports-Android-driver-API${{ matrix.api-level }}
path: sqllin-driver/build/reports
if: failure()

- name: Upload sqllin-dsl Reports
uses: actions/upload-artifact@v4
with:
name: Test-Reports-Linux-dsl
name: Test-Reports-Android-dsl-API${{ matrix.api-level }}
path: sqllin-dsl/build/reports
if: failure()
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ env:
jobs:

build-on-macos:
runs-on: macos-15-intel
runs-on: macos-latest
timeout-minutes: 60

steps:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ local.properties
/sqllin-driver/build
/sqllin-dsl/build
/sqllin-processor/build
/sqllin-driver-test/build
/sqllin-dsl-test/build
/sample/build
*.podspec
Expand Down
19 changes: 19 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,25 @@

- Date format: YYYY-MM-dd

## 2.3.0 / 2026-05-16

### All

* Update `Kotlin`'s version to `2.3.21`
* Update `AGP`'s version to `9.0.0`, migrated from `com.android.library` plugin to `com.android.kotlin.multiplatform.library`
* Update `kotlinx.serialization`'s version to `1.11.0`
* Update `kotlinx.coroutines`'s version to `1.11.0`
* Fix documentation: Android minimum supported version has been `7.0+` (API 24) since `2.0.0`, the README incorrectly stated `6.0+`
* **Breaking change**: Drop `iosX64`, `macosX64`, `watchosX64`, and `tvosX64` target support

### sqllin-driver

* Update `sqlite-jdbc`'s version to `3.53.1.0`

### sqllin-processor

* Update `KSP`'s version to `2.3.7`

## 2.2.0 / 2025-12-15

### sqllin-dsl
Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ and deserialization ability is based on [kotlinx.serialization](https://github.c
SQLlin supports these platforms:

- Multiplatform Common
- Android (6.0+)
- Android (7.0+)
- JVM (Java 11+, since `1.2.0`)
- iOS (x64, arm64, simulatorArm64)
- macOS (x64, arm64)
- watchOS (x64, arm32, arm64, simulatorArm64, deviceArm64)
- tvOS (x64, arm64, simulatorArm64)
- iOS (arm64, simulatorArm64)
- macOS (arm64)
- watchOS (arm32, arm64, simulatorArm64, deviceArm64)
- tvOS (arm64, simulatorArm64)
- Linux (x64, arm64)
- Windows (mingwX64)

Expand Down
10 changes: 5 additions & 5 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ SQLlin 能够直接向数据库插入 Kotlin 对象,也能够直接从数据
SQLlin 支持如下平台:

- Multiplatform Common
- Android (6.0+)
- Android (7.0+)
- JVM (Java 11+, since `1.2.0`)
- iOS (x64, arm64, simulatorArm64)
- macOS (x64, arm64)
- watchOS (x64, arm32, arm64, simulatorArm64, deviceArm64)
- tvOS (x64, arm64, simulatorArm64)
- iOS (arm64, simulatorArm64)
- macOS (arm64)
- watchOS (arm32, arm64, simulatorArm64, deviceArm64)
- tvOS (arm64, simulatorArm64)
- Linux (x64, arm64)
- Windows (mingwX64)

Expand Down
1 change: 1 addition & 0 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

* Support FOREIGN KEY DSL (2.2.0 ✅)
* Support CREATE INDEX DSL (2.2.0 ✅)
* Support INSERT OR REPLACE

## Medium Priority

Expand Down
3 changes: 1 addition & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
VERSION=2.2.0
VERSION=2.3.0
GROUP_ID=com.ctrip.kotlin

#Maven Publishing Information
Expand Down Expand Up @@ -31,5 +31,4 @@ kotlin.native.ignoreDisabledTargets=true
kotlin.jvm.target.validation.mode=warning
kotlin.native.binary.pagedAllocator=false
kotlin.native.binary.latin1Strings=true
kotlin.native.cacheKind.linuxX64=none
#kotlin.compiler.execution.strategy=out-of-process
20 changes: 10 additions & 10 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
[versions]

kotlin = "2.2.21"
agp = "8.12.3"
ksp = "2.3.3"
serialization = "1.9.0"
coroutines = "1.10.2"
androidx-annotation = "1.9.1"
kotlin = "2.3.21"
agp = "9.2.1"
ksp = "2.3.7"
serialization = "1.11.0"
coroutines = "1.11.0"
androidx-annotation = "1.10.0"
androidx-test = "1.7.0"
androidx-test-runner = "1.7.0"
sqlite-jdbc = "3.51.1.0"
sqlite-jdbc = "3.53.1.0"
jvm-toolchain = "21"
android-sdk-compile = "36"
android-sdk-compile = "37"
android-sdk-min = "24"
vanniktech-maven-publish = "0.35.0"
vanniktech-maven-publish = "0.36.0"

[libraries]

Expand All @@ -35,5 +35,5 @@ kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
android-library = { id = "com.android.library", version.ref = "agp" }
android-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" }
vanniktech-maven-publish = { id = "com.vanniktech.maven.publish", version.ref = "vanniktech-maven-publish" }
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Tue Mar 08 15:11:46 CST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
Loading
Loading