Skip to content

Commit 0e4b4bf

Browse files
StaehliJMGaetan89
andauthored
Enable java 8 features on android < 26 (#1035)
Co-authored-by: Gaëtan Muller <[email protected]>
1 parent d689d0f commit 0e4b4bf

File tree

6 files changed

+31
-3
lines changed

6 files changed

+31
-3
lines changed

build-logic/plugins/src/main/java/ch/srgssr/pillarbox/gradle/PillarboxAndroidApplicationPlugin.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ import ch.srgssr.pillarbox.gradle.internal.VersionConfig
99
import ch.srgssr.pillarbox.gradle.internal.configureAndroidLintModule
1010
import ch.srgssr.pillarbox.gradle.internal.configureAndroidModule
1111
import ch.srgssr.pillarbox.gradle.internal.configureKotlinModule
12+
import ch.srgssr.pillarbox.gradle.internal.libs
1213
import com.android.build.api.dsl.ApplicationExtension
1314
import org.gradle.api.Plugin
1415
import org.gradle.api.Project
1516
import org.gradle.kotlin.dsl.configure
17+
import org.gradle.kotlin.dsl.dependencies
1618
import org.gradle.kotlin.dsl.extra
1719

1820
/**
@@ -69,5 +71,9 @@ class PillarboxAndroidApplicationPlugin : Plugin<Project> {
6971
}
7072
}
7173
}
74+
75+
dependencies {
76+
add("coreLibraryDesugaring", libs.findLibrary("desugar_jdk_libs").get())
77+
}
7278
}
7379
}

build-logic/plugins/src/main/java/ch/srgssr/pillarbox/gradle/PillarboxAndroidLibraryPlugin.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ package ch.srgssr.pillarbox.gradle
66

77
import ch.srgssr.pillarbox.gradle.internal.configureAndroidModule
88
import ch.srgssr.pillarbox.gradle.internal.configureKotlinModule
9+
import ch.srgssr.pillarbox.gradle.internal.libs
910
import com.android.build.api.dsl.LibraryExtension
1011
import org.gradle.api.Plugin
1112
import org.gradle.api.Project
1213
import org.gradle.kotlin.dsl.configure
14+
import org.gradle.kotlin.dsl.dependencies
1315

1416
/**
1517
* Custom Gradle plugin to configure an Android library module for Pillarbox.
@@ -22,7 +24,6 @@ class PillarboxAndroidLibraryPlugin : Plugin<Project> {
2224

2325
extensions.configure<LibraryExtension> {
2426
configureAndroidModule(this)
25-
2627
defaultConfig {
2728
consumerProguardFiles("consumer-rules.pro")
2829
}
@@ -35,7 +36,10 @@ class PillarboxAndroidLibraryPlugin : Plugin<Project> {
3536
}
3637
}
3738
}
38-
3939
configureKotlinModule()
40+
41+
dependencies {
42+
add("coreLibraryDesugaring", libs.findLibrary("desugar_jdk_libs").get())
43+
}
4044
}
4145
}

build-logic/plugins/src/main/java/ch/srgssr/pillarbox/gradle/internal/ProjectExtensions.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ internal fun Project.configureAndroidModule(extension: CommonExtension<*, *, *,
2626
compileOptions {
2727
sourceCompatibility = AppConfig.javaVersion
2828
targetCompatibility = AppConfig.javaVersion
29+
isCoreLibraryDesugaringEnabled = true
2930
}
3031

3132
buildFeatures {

docs/README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,22 @@ kotlinOptions {
154154
}
155155
```
156156

157+
### Support Android API < 26
158+
159+
If your min SDK version is below 26, you have to enable library desugaring as described in the [Android documentation](https://developer.android.com/studio/write/java8-support#library-desugaring):
160+
161+
```kotlin
162+
android {
163+
compileOptions {
164+
isCoreLibraryDesugaringEnabled = true
165+
}
166+
}
167+
168+
dependencies {
169+
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
170+
}
171+
```
172+
157173
### Integrate Pillarbox
158174

159175
To start using Pillarbox in your project, you can check each module's documentation:

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ androidx-tv-material = "1.0.0"
1717
coil = "3.2.0"
1818
comscore = "6.11.1"
1919
dependency-analysis-gradle-plugin = "2.17.0"
20+
desugar_jdk_libs = "2.1.5"
2021
detekt = "1.23.8"
2122
dokka = "2.0.0"
2223
guava = "33.3.1-android"
@@ -68,6 +69,7 @@ coil-core = { group = "io.coil-kt.coil3", name = "coil-core", version.ref = "coi
6869
coil-network-cache-control = { group = "io.coil-kt.coil3", name = "coil-network-cache-control", version.ref = "coil" }
6970
coil-network-core = { group = "io.coil-kt.coil3", name = "coil-network-core", version.ref = "coil" }
7071
coil-network-okhttp = { group = "io.coil-kt.coil3", name = "coil-network-okhttp", version.ref = "coil" }
72+
desugar_jdk_libs = { module = "com.android.tools:desugar_jdk_libs", version.ref = "desugar_jdk_libs" }
7173
dokka-gradle-plugin = { module = "org.jetbrains.dokka:dokka-gradle-plugin", version.ref = "dokka" }
7274
json = { module = "org.json:json", version.ref = "json" }
7375
kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }

pillarbox-demo/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,5 @@ dependencies {
9595
implementation(libs.okhttp)
9696
implementation(libs.srg.data)
9797
implementation(libs.srg.dataprovider.retrofit)
98-
9998
debugImplementation(libs.androidx.compose.ui.tooling)
10099
}

0 commit comments

Comments
 (0)