build: enable explicit API automatically on all library projects
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
cada2353c1
commit
a13176a23d
3 changed files with 15 additions and 8 deletions
|
@ -16,10 +16,6 @@ android {
|
||||||
versionName = "2.0"
|
versionName = "2.0"
|
||||||
consumerProguardFiles("consumer-rules.pro")
|
consumerProguardFiles("consumer-rules.pro")
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin { explicitApi() }
|
|
||||||
|
|
||||||
kotlinOptions { freeCompilerArgs = freeCompilerArgs + listOf("-Xexplicit-api=strict") }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
|
@ -14,10 +14,14 @@ import org.gradle.api.Project
|
||||||
import org.gradle.api.plugins.JavaLibraryPlugin
|
import org.gradle.api.plugins.JavaLibraryPlugin
|
||||||
import org.gradle.api.plugins.JavaPlugin
|
import org.gradle.api.plugins.JavaPlugin
|
||||||
import org.gradle.api.tasks.compile.JavaCompile
|
import org.gradle.api.tasks.compile.JavaCompile
|
||||||
|
import org.gradle.kotlin.dsl.configure
|
||||||
import org.gradle.kotlin.dsl.getByType
|
import org.gradle.kotlin.dsl.getByType
|
||||||
import org.gradle.kotlin.dsl.withType
|
import org.gradle.kotlin.dsl.withType
|
||||||
import org.gradle.plugins.signing.SigningExtension
|
import org.gradle.plugins.signing.SigningExtension
|
||||||
import org.gradle.plugins.signing.SigningPlugin
|
import org.gradle.plugins.signing.SigningPlugin
|
||||||
|
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
|
||||||
|
import org.jetbrains.kotlin.gradle.plugin.KotlinPluginWrapper
|
||||||
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||||
|
|
||||||
class PasswordStorePlugin : Plugin<Project> {
|
class PasswordStorePlugin : Plugin<Project> {
|
||||||
|
|
||||||
|
@ -38,6 +42,7 @@ class PasswordStorePlugin : Plugin<Project> {
|
||||||
}
|
}
|
||||||
is LibraryPlugin -> {
|
is LibraryPlugin -> {
|
||||||
project.extensions.getByType<TestedExtension>().configureCommonAndroidOptions()
|
project.extensions.getByType<TestedExtension>().configureCommonAndroidOptions()
|
||||||
|
project.configureExplicitApi()
|
||||||
}
|
}
|
||||||
is AppPlugin -> {
|
is AppPlugin -> {
|
||||||
project.extensions.getByType<BaseAppModuleExtension>().configureAndroidApplicationOptions(project)
|
project.extensions.getByType<BaseAppModuleExtension>().configureAndroidApplicationOptions(project)
|
||||||
|
@ -50,9 +55,19 @@ class PasswordStorePlugin : Plugin<Project> {
|
||||||
is SigningPlugin -> {
|
is SigningPlugin -> {
|
||||||
project.extensions.getByType<SigningExtension>().configureBuildSigning()
|
project.extensions.getByType<SigningExtension>().configureBuildSigning()
|
||||||
}
|
}
|
||||||
|
is KotlinPluginWrapper -> {
|
||||||
|
project.configureExplicitApi()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun Project.configureExplicitApi() {
|
||||||
|
configure<KotlinProjectExtension> { explicitApi() }
|
||||||
|
tasks.withType<KotlinCompile> {
|
||||||
|
kotlinOptions { freeCompilerArgs = freeCompilerArgs + listOf("-Xexplicit-api=strict") }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val Project.isRoot
|
private val Project.isRoot
|
||||||
|
|
|
@ -14,10 +14,6 @@ android {
|
||||||
defaultConfig { consumerProguardFiles("consumer-proguard-rules.pro") }
|
defaultConfig { consumerProguardFiles("consumer-proguard-rules.pro") }
|
||||||
|
|
||||||
buildFeatures.aidl = true
|
buildFeatures.aidl = true
|
||||||
|
|
||||||
kotlin { explicitApi() }
|
|
||||||
|
|
||||||
kotlinOptions { freeCompilerArgs = freeCompilerArgs + listOf("-Xexplicit-api=strict") }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies { implementation(libs.kotlin.coroutines.core) }
|
dependencies { implementation(libs.kotlin.coroutines.core) }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue