Skip to content

Commit

Permalink
Merge pull request #559 from willowtreeapps/chore/508-abstract-sort-h…
Browse files Browse the repository at this point in the history
…andling-4

Abstract common build logic out to convention plugin
  • Loading branch information
PaulKlauser authored Jun 4, 2024
2 parents 4212039 + deb10a2 commit a4e28a5
Show file tree
Hide file tree
Showing 12 changed files with 110 additions and 47 deletions.
18 changes: 3 additions & 15 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'vocable.application'
id 'kotlin-kapt'
id 'kotlin-parcelize'
id "androidx.navigation.safeargs.kotlin"
Expand All @@ -10,11 +9,9 @@ plugins {

android {
namespace 'com.willowtree.vocable'
compileSdk 33
defaultConfig {
targetSdk 34
applicationId "com.willowtree.vocable"
minSdkVersion 24
targetSdkVersion 33
//30 was the last versionCode used on Play Store before implementing CI with github actions
versionCode Integer.valueOf(System.getenv("VERSION_CODE") ?: 1) + 30
versionName System.getenv("VERSION_NAME") ?: "pre-release" + "(" + versionCode + ")"
Expand Down Expand Up @@ -45,13 +42,6 @@ android {
buildConfigField("boolean", "USE_HEAD_TRACKING", useHeadTracking)
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
viewBinding {
enabled = true
}
Expand All @@ -67,8 +57,6 @@ android {
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.5.1'
Expand Down Expand Up @@ -119,7 +107,7 @@ dependencies {
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-intents:3.4.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test:core:1.4.0'
androidTestImplementation(libs.androidx.test.core)
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:$coroutines_version"
androidTestImplementation 'androidx.test:rules:1.4.0'
Expand Down
1 change: 1 addition & 0 deletions build-logic/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
10 changes: 10 additions & 0 deletions build-logic/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
plugins {
`kotlin-dsl`
}

group = "com.willowtree.vocable.buildlogic"

dependencies {
implementation(libs.android.gradlePlugin)
implementation(libs.kotlin.gradlePlugin)
}
13 changes: 13 additions & 0 deletions build-logic/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}

rootProject.name = "build-logic"
27 changes: 27 additions & 0 deletions build-logic/src/main/java/android.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import com.android.build.api.dsl.CommonExtension
import org.gradle.api.JavaVersion
import org.gradle.api.Project
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

fun Project.commonAndroid(extension: CommonExtension<*, *, *, *, *, *>) {
pluginManager.apply("org.jetbrains.kotlin.android")

extension.apply {
compileSdk = 34
defaultConfig.minSdk = 24
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
}

tasks.withType<KotlinCompile>().configureEach {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
freeCompilerArgs += listOf(
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi"
)
}
}
}
5 changes: 5 additions & 0 deletions build-logic/src/main/java/vocable.application.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
plugins {
id("com.android.application")
}

commonAndroid(android)
5 changes: 5 additions & 0 deletions build-logic/src/main/java/vocable.library.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
plugins {
id("com.android.library")
}

commonAndroid(android)
36 changes: 7 additions & 29 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,30 +1,8 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.8.10'
repositories {
google()
maven { url "https://plugins.gradle.org/m2/" }
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:8.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.6.0"
classpath 'com.google.gms:google-services:4.3.15'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}

allprojects {
repositories {
google()
mavenCentral()
}
}

task clean(type: Delete) {
delete rootProject.buildDir
}
plugins {
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.kotlinAndroid) apply false
alias(libs.plugins.safe.args) apply false
alias(libs.plugins.google.services) apply false
alias(libs.plugins.crashlytics) apply false
}
18 changes: 17 additions & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,21 @@
[versions]
turbine = "1.1.0"
kotlin = "1.8.10"
agp = "8.4.1"
safe-args = "2.6.0"
google-services = "4.3.15"
crashlytics = "2.8.1"
androidx-test = "1.5.0"

[libraries]
turbine = { group = "app.cash.turbine", name = "turbine", version.ref = "turbine" }
turbine = { group = "app.cash.turbine", name = "turbine", version.ref = "turbine" }
android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "agp" }
kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlin" }
androidx-test-core = { group = "androidx.test", name = "core", version.ref = "androidx-test"}

[plugins]
androidApplication = { id = "com.android.application", version.ref = "agp" }
kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
safe-args = { id = "androidx.navigation.safeargs.kotlin", version.ref = "safe-args" }
google-services = { id = "com.google.gms.google-services", version.ref = "google-services" }
crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "crashlytics" }
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip
1 change: 0 additions & 1 deletion settings.gradle

This file was deleted.

21 changes: 21 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
// Needed because of https://issuetracker.google.com/issues/315023802
gradle.startParameter.excludedTaskNames.addAll(listOf(":build-logic:testClasses"))

pluginManagement {
includeBuild("build-logic")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "vocable-android"

include(":app")

0 comments on commit a4e28a5

Please sign in to comment.