diff -r 000000000000 -r 0a13dcabf7d3 buildSrc/src/main/kotlin/AndroidJavaVersion.kt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/buildSrc/src/main/kotlin/AndroidJavaVersion.kt Fri Apr 14 14:29:05 2023 -0400 @@ -0,0 +1,78 @@ +/* + * AboutOss is a utility library to retrieve and display + * opensource licenses in Android applications. + * + * Copyright (C) 2023 by Frederic-Charles Barthelery. + * + * This file is part of AboutOss. + * + * AboutOss is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * AboutOss is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with AboutOss. If not, see . + */ +package com.geekorum.build + +import com.android.build.api.dsl.CommonExtension +import com.android.build.api.dsl.DefaultConfig +import com.android.build.gradle.BaseExtension +import org.gradle.api.JavaVersion +import org.gradle.api.Project +import org.gradle.api.plugins.ExtensionAware +import org.gradle.kotlin.dsl.dependencies +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions + +/** + * Configure java version compile options based on minSdkVersion value + */ +@Suppress("UNCHECKED_CAST") +fun BaseExtension.configureJavaVersion() { + (this as CommonExtension<*, *, DefaultConfig, *>).configureJavaVersion() +} + +fun CommonExtension<*, *, DefaultConfig, *>.configureJavaVersion() { + val api = defaultConfig.minSdk ?: 1 + val version = when { + api >= 30 -> JavaVersion.VERSION_11 + api >= 24 -> JavaVersion.VERSION_1_8 + api >= 19 -> JavaVersion.VERSION_1_7 + else -> JavaVersion.VERSION_1_6 + } + compileOptions { + sourceCompatibility = version + targetCompatibility = version + } + + (this as ExtensionAware).extensions.findByType(KotlinJvmOptions::class.java)?.apply { + if (version >= JavaVersion.VERSION_1_8) { + jvmTarget = "1.8" + } + } +} + +/** + * Add missing annotation processor dependencies to build on Java 11 + */ +fun Project.configureAnnotationProcessorDeps() { + dependencies { + configurations.whenObjectAdded { + when (name) { + "kapt" -> { + add(name, "javax.xml.bind:jaxb-api:2.3.1") + add(name, "com.sun.xml.bind:jaxb-core:2.3.0.1") + add(name, "com.sun.xml.bind:jaxb-impl:2.3.2") + } + + "annotationProcessor" -> add(name, "javax.xml.bind:jaxb-api:2.3.1") + } + } + } +}