diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index eeebd2f62665787f3548bb50fbdfda111d4a7033..c1e94bd31c0f29f66f52c86c195ee6964751bcdc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,4 @@
-image: "k8r.eu/justjanne/android-sdk:dfb791e9"
+image: "k8r.eu/justjanne/android-sdk:be7526df"
 
 cache:
   key: "$CI_PROJECT_NAME"
diff --git a/gradle/convention/src/main/kotlin/AndroidLibraryConvention.kt b/gradle/convention/src/main/kotlin/AndroidLibraryConvention.kt
index c048de7841d78191de848ec5808a009d99f0fa52..d5ffa54645b08d43835b4b3b98cb779a4a9772f0 100644
--- a/gradle/convention/src/main/kotlin/AndroidLibraryConvention.kt
+++ b/gradle/convention/src/main/kotlin/AndroidLibraryConvention.kt
@@ -1,3 +1,4 @@
+import org.gradle.api.JavaVersion
 import com.android.build.api.dsl.LibraryExtension
 import org.gradle.api.Plugin
 import org.gradle.api.Project
@@ -24,6 +25,11 @@ class AndroidLibraryConvention : Plugin<Project> {
           testInstrumentationRunnerArguments["disableAnalytics"] = "true"
         }
 
+        compileOptions {
+          sourceCompatibility = JavaVersion.VERSION_11
+          targetCompatibility = JavaVersion.VERSION_11
+        }
+
         lint {
           warningsAsErrors = true
           lintConfig = file("../lint.xml")
diff --git a/gradle/convention/src/main/kotlin/KotlinAndroidConvention.kt b/gradle/convention/src/main/kotlin/KotlinAndroidConvention.kt
index 97df14e91e8adbca5cc3fceddb439781648317db..14fe667592d6bf06b75f40f9b5c62e31a921533d 100644
--- a/gradle/convention/src/main/kotlin/KotlinAndroidConvention.kt
+++ b/gradle/convention/src/main/kotlin/KotlinAndroidConvention.kt
@@ -4,10 +4,13 @@ import org.gradle.api.Project
 import org.gradle.api.plugins.JavaPluginExtension
 import org.gradle.api.tasks.testing.Test
 import org.gradle.jvm.toolchain.JavaLanguageVersion
+import org.gradle.jvm.toolchain.JavaToolchainService
 import org.gradle.kotlin.dsl.configure
+import org.gradle.kotlin.dsl.getByType
 import org.gradle.kotlin.dsl.provideDelegate
 import org.gradle.kotlin.dsl.withType
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+import org.jetbrains.kotlin.gradle.tasks.UsesKotlinJavaToolchain
 
 class KotlinAndroidConvention : Plugin<Project> {
   override fun apply(target: Project) {
@@ -18,6 +21,14 @@ class KotlinAndroidConvention : Plugin<Project> {
         apply("com.google.devtools.ksp")
       }
 
+      val service = project.extensions.getByType<JavaToolchainService>()
+      val customLauncher = service.launcherFor {
+        languageVersion.set(JavaLanguageVersion.of(17))
+      }
+      tasks.withType<UsesKotlinJavaToolchain>().configureEach {
+        kotlinJavaToolchain.toolchain.use(customLauncher)
+      }
+
       // Use withType to workaround https://youtrack.jetbrains.com/issue/KT-55947
       tasks.withType<KotlinCompile>().configureEach {
         kotlinOptions {
diff --git a/gradle/convention/src/main/kotlin/KotlinConvention.kt b/gradle/convention/src/main/kotlin/KotlinConvention.kt
index 45cd6a0cd92e43a7b089a7cffc681bd441abd478..33b80176beb0ab6959c10f56021367ecae7178c1 100644
--- a/gradle/convention/src/main/kotlin/KotlinConvention.kt
+++ b/gradle/convention/src/main/kotlin/KotlinConvention.kt
@@ -4,13 +4,18 @@ import org.gradle.api.Project
 import org.gradle.api.plugins.JavaPluginExtension
 import org.gradle.api.tasks.testing.Test
 import org.gradle.jvm.toolchain.JavaLanguageVersion
+import org.gradle.jvm.toolchain.JavaToolchainService
 import org.gradle.kotlin.dsl.configure
 import org.gradle.kotlin.dsl.dependencies
+import org.gradle.kotlin.dsl.getByType
 import org.gradle.kotlin.dsl.kotlin
 import org.gradle.kotlin.dsl.provideDelegate
 import org.gradle.kotlin.dsl.withType
 import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
+import org.jetbrains.kotlin.gradle.internal.KaptGenerateStubsTask
+import org.jetbrains.kotlin.gradle.tasks.KaptGenerateStubs
 import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
+import org.jetbrains.kotlin.gradle.tasks.UsesKotlinJavaToolchain
 
 class KotlinConvention : Plugin<Project> {
   override fun apply(target: Project) {
@@ -21,6 +26,14 @@ class KotlinConvention : Plugin<Project> {
         apply("com.google.devtools.ksp")
       }
 
+      val service = project.extensions.getByType<JavaToolchainService>()
+      val customLauncher = service.launcherFor {
+        languageVersion.set(JavaLanguageVersion.of(17))
+      }
+      tasks.withType<UsesKotlinJavaToolchain>().configureEach {
+        kotlinJavaToolchain.toolchain.use(customLauncher)
+      }
+
       // Use withType to workaround https://youtrack.jetbrains.com/issue/KT-55947
       tasks.withType<KotlinCompile>().configureEach {
         kotlinOptions {