Skip to content

Commit 42eb560

Browse files
committed
* Created AndroidLibraryPlugin convention plugin to centralize Android library configurations
* Added build-logic module with convention plugin infrastructure * Updated all library modules (store, directdownload, compose, appupdater) to use the new convention plugin
1 parent 5702f4f commit 42eb560

File tree

13 files changed

+112
-71
lines changed

13 files changed

+112
-71
lines changed

appupdater/build.gradle.kts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,9 @@
11
import com.vanniktech.maven.publish.AndroidSingleVariantLibrary
22

33
plugins {
4-
alias(libs.plugins.androidLibrary)
5-
alias(libs.plugins.jetbrainsKotlinAndroid)
6-
alias(libs.plugins.maven.publish)
4+
alias(libs.plugins.project.androidLibrary)
75
}
86
android {
9-
compileSdk = libs.versions.compileSdkVersion.get().toInt()
10-
defaultConfig {
11-
minSdk = libs.versions.minSdkVersion.get().toInt()
12-
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
13-
}
14-
compileOptions {
15-
sourceCompatibility = JavaVersion.VERSION_17
16-
targetCompatibility = JavaVersion.VERSION_17
17-
}
18-
19-
kotlin {
20-
jvmToolchain(17)
21-
}
22-
237
buildFeatures {
248
viewBinding = true
259
}
@@ -52,7 +36,7 @@ dependencies {
5236
testImplementation(libs.junit4)
5337
testImplementation(libs.mockito.kotlin)
5438
testImplementation(libs.turbine)
55-
testImplementation (libs.kotlinx.coroutines.test)
39+
testImplementation(libs.kotlinx.coroutines.test)
5640
androidTestImplementation(libs.androidx.test.junit)
5741
androidTestImplementation(libs.androidx.test.rules)
5842
androidTestImplementation(libs.androidx.test.ui.espresso.core)

build-logic/convention/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
plugins {
2+
`kotlin-dsl`
3+
}
4+
5+
group = "com.pouyaheydari.appupdater.convention"
6+
7+
java {
8+
sourceCompatibility = JavaVersion.VERSION_17
9+
targetCompatibility = JavaVersion.VERSION_17
10+
}
11+
12+
dependencies {
13+
compileOnly(libs.android.gradlePlugin)
14+
compileOnly(libs.kotlin.gradlePlugin)
15+
}
16+
17+
gradlePlugin {
18+
plugins {
19+
create("androidLibraryPlugin") {
20+
id = "com.pouyaheydari.androidLibraryPlugin"
21+
implementationClass = "com.pouyaheydari.appupdater.convention.plugins.AndroidLibraryPlugin"
22+
}
23+
}
24+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.pouyaheydari.appupdater.convention.helpers
2+
3+
import org.gradle.api.JavaVersion
4+
5+
fun javaVersion(): JavaVersion = JavaVersion.VERSION_17
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.pouyaheydari.appupdater.convention.helpers
2+
3+
import org.gradle.api.Project
4+
import org.gradle.api.artifacts.VersionCatalog
5+
import org.gradle.api.artifacts.VersionCatalogsExtension
6+
import org.gradle.kotlin.dsl.getByType
7+
8+
fun Project.compileSdk(): Int = baseLibs.findVersion("compileSdkVersion").get().requiredVersion.toInt()
9+
10+
fun Project.minSdk(): Int = baseLibs.findVersion("minSdkVersion").get().requiredVersion.toInt()
11+
12+
val Project.baseLibs
13+
get(): VersionCatalog = extensions.getByType<VersionCatalogsExtension>().named("libs")
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.pouyaheydari.appupdater.convention.plugins
2+
3+
import com.android.build.gradle.LibraryExtension
4+
import com.pouyaheydari.appupdater.convention.helpers.baseLibs
5+
import com.pouyaheydari.appupdater.convention.helpers.compileSdk
6+
import com.pouyaheydari.appupdater.convention.helpers.javaVersion
7+
import com.pouyaheydari.appupdater.convention.helpers.minSdk
8+
import org.gradle.api.Plugin
9+
import org.gradle.api.Project
10+
import org.gradle.jvm.toolchain.JavaLanguageVersion
11+
import org.gradle.kotlin.dsl.configure
12+
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
13+
14+
class AndroidLibraryPlugin : Plugin<Project> {
15+
override fun apply(target: Project) {
16+
with(target) {
17+
with(pluginManager) {
18+
apply(baseLibs.findPlugin("androidLibrary").get().get().pluginId)
19+
apply(baseLibs.findPlugin("jetbrainsKotlinAndroid").get().get().pluginId)
20+
apply(baseLibs.findPlugin("maven.publish").get().get().pluginId)
21+
}
22+
23+
extensions.configure<LibraryExtension> {
24+
compileSdk = compileSdk()
25+
defaultConfig {
26+
minSdk = minSdk()
27+
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
28+
}
29+
compileOptions {
30+
sourceCompatibility = javaVersion()
31+
targetCompatibility = javaVersion()
32+
}
33+
}
34+
extensions.configure<KotlinAndroidProjectExtension> {
35+
jvmToolchain {
36+
languageVersion.set(JavaLanguageVersion.of(17))
37+
}
38+
}
39+
}
40+
}
41+
}

build-logic/settings.gradle.kts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
dependencyResolutionManagement {
2+
3+
repositories {
4+
google()
5+
mavenCentral()
6+
}
7+
8+
versionCatalogs {
9+
create("libs") {
10+
from(files("../gradle/libs.versions.toml"))
11+
}
12+
}
13+
}
14+
15+
rootProject.name = "build-logic"
16+
include(":convention")

build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
plugins {
22
alias(libs.plugins.androidApplication) apply false
3-
alias(libs.plugins.androidLibrary) apply false
43
alias(libs.plugins.jetbrainsKotlinAndroid) apply false
54
alias(libs.plugins.kotlin.jvm) apply false
65
alias(libs.plugins.compose.compiler) apply false

compose/build.gradle.kts

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,18 @@
11
plugins {
2-
alias(libs.plugins.androidLibrary)
3-
alias(libs.plugins.jetbrainsKotlinAndroid)
2+
alias(libs.plugins.project.androidLibrary)
43
alias(libs.plugins.compose.compiler)
5-
alias(libs.plugins.maven.publish)
64
}
75

86
android {
9-
compileSdk = libs.versions.compileSdkVersion.get().toInt()
107
defaultConfig {
11-
minSdk = libs.versions.minSdkVersion.get().toInt()
12-
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
138
vectorDrawables {
149
useSupportLibrary = true
1510
}
1611
}
1712

1813
namespace = "com.pouyaheydari.appupdater.compose"
19-
2014
testOptions.unitTests.isIncludeAndroidResources = true
2115

22-
compileOptions {
23-
sourceCompatibility = JavaVersion.VERSION_17
24-
targetCompatibility = JavaVersion.VERSION_17
25-
}
26-
kotlin {
27-
jvmToolchain(17)
28-
}
2916
buildFeatures {
3017
compose = true
3118
}

directdownload/build.gradle.kts

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,8 @@
11
plugins {
2-
alias(libs.plugins.androidLibrary)
3-
alias(libs.plugins.jetbrainsKotlinAndroid)
4-
alias(libs.plugins.maven.publish)
2+
alias(libs.plugins.project.androidLibrary)
53
}
64

75
android {
8-
compileSdk = libs.versions.compileSdkVersion.get().toInt()
9-
defaultConfig {
10-
minSdk = libs.versions.minSdkVersion.get().toInt()
11-
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
12-
}
13-
14-
compileOptions {
15-
sourceCompatibility = JavaVersion.VERSION_17
16-
targetCompatibility = JavaVersion.VERSION_17
17-
}
18-
kotlin {
19-
jvmToolchain(17)
20-
}
216
namespace = "com.pouyaheydari.appupdater.directdownload"
227
}
238

@@ -33,7 +18,6 @@ dependencies {
3318
testImplementation(libs.mockito.kotlin)
3419
testImplementation(libs.kotlinx.coroutines.test)
3520
testImplementation(libs.roboelectric)
36-
3721
androidTestImplementation(libs.androidx.test.junit)
3822
androidTestImplementation(libs.androidx.test.rules)
3923
androidTestImplementation(libs.androidx.test.ui.espresso.core)

0 commit comments

Comments
 (0)