Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,5 @@
/app/src/release/generated/*
/core/build/
/feature/build/
/build-plugin/build
/build-plugin/.gradle/*
21 changes: 1 addition & 20 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,7 @@
import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension

plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.androidify.androidApplication)
alias(libs.plugins.serialization)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.hilt)
Expand All @@ -31,20 +29,10 @@ plugins {

android {
namespace = "com.android.developers.androidify"
compileSdk = libs.versions.compileSdk.get().toInt()

defaultConfig {
applicationId = "com.android.developers.androidify"
minSdk = libs.versions.minSdk.get().toInt()
targetSdk = 36
versionCode = libs.versions.appVersionCode.get().toInt()
versionName = libs.versions.appVersionName.get()

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

signingConfigs {

}

buildTypes {
Expand Down Expand Up @@ -84,13 +72,6 @@ android {
}
}
}
compileOptions {
sourceCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
}
kotlinOptions {
jvmTarget = libs.versions.javaVersion.get()
}
testOptions {
unitTests {
isIncludeAndroidResources = true
Expand Down
15 changes: 7 additions & 8 deletions benchmark/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/
import com.android.build.api.dsl.ManagedVirtualDevice
import org.gradle.kotlin.dsl.create
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

/*
* Copyright 2025 The Android Open Source Project
Expand All @@ -39,21 +40,13 @@ plugins {

android {
namespace = "com.android.developers.androidify.benchmark"
compileSdk = libs.versions.compileSdk.get().toInt()

compileOptions {
sourceCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
}

kotlinOptions {
jvmTarget = libs.versions.javaVersion.get()
}

defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
targetSdk = libs.versions.compileSdk.get().toInt()

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

Expand All @@ -80,6 +73,12 @@ android {
}
}

kotlin {
compilerOptions {
jvmTarget = JvmTarget.fromTarget(libs.versions.javaVersion.get())
}
}

// This is the configuration block for the Baseline Profile plugin.
// You can specify to run the generators on a managed devices or connected devices.
baselineProfile {
Expand Down
33 changes: 33 additions & 0 deletions build-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
plugins {
`kotlin-dsl`
}

dependencies {
compileOnly(libs.android.gradlePluginApi)
compileOnly(libs.kotlin.gradlePlugin)
}


tasks {
validatePlugins {
enableStricterValidation = true
failOnWarning = true
}
}

gradlePlugin {
plugins {
register(libs.plugins.androidify.androidLibrary.get().pluginId) {
id = libs.plugins.androidify.androidLibrary.get().pluginId
implementationClass = "com.android.developers.androidify.plugin.AndroidLibraryPlugin"
}
register(libs.plugins.androidify.androidComposeLibrary.get().pluginId) {
id = libs.plugins.androidify.androidComposeLibrary.get().pluginId
implementationClass = "com.android.developers.androidify.plugin.AndroidComposeLibraryPlugin"
}
register(libs.plugins.androidify.androidApplication.get().pluginId) {
id = libs.plugins.androidify.androidApplication.get().pluginId
implementationClass = "com.android.developers.androidify.plugin.AndroidApplicationPlugin"
}
}
}
26 changes: 26 additions & 0 deletions build-plugin/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
pluginManagement {
repositories {
gradlePluginPortal()
google()
}
}

dependencyResolutionManagement {
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
}
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}

rootProject.name = "build-logic"
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.android.developers.androidify.plugin

import com.android.build.api.dsl.ApplicationExtension
import org.gradle.api.JavaVersion
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.assign
import org.gradle.kotlin.dsl.configure
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension

class AndroidApplicationPlugin : Plugin<Project> {
override fun apply(project: Project) {
with(project) {
apply(plugin = "com.android.application")
apply(plugin = "org.jetbrains.kotlin.android")
apply(plugin = "org.jetbrains.kotlin.plugin.compose")

extensions.configure<ApplicationExtension> {
defaultConfig {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
val javaVersion = JavaVersion.toVersion(getVersionByName("javaVersion"))
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
}
buildFeatures {
compose = true
}
}
extensions.configure<KotlinAndroidProjectExtension> {
compilerOptions {
jvmTarget = JvmTarget.fromTarget(getVersionByName("javaVersion"))
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.android.developers.androidify.plugin

import com.android.build.api.dsl.LibraryExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure

class AndroidComposeLibraryPlugin : Plugin<Project> {
override fun apply(project: Project) {
with(project) {
apply(plugin = "androidify.androidLibrary")
apply(plugin = "org.jetbrains.kotlin.plugin.compose")
apply(plugin = "com.android.compose.screenshot")

extensions.configure<LibraryExtension> {
defaultConfig {
testInstrumentationRunner = "com.android.developers.testing.AndroidifyTestRunner"
}
buildFeatures.compose = true
experimentalProperties["android.experimental.enableScreenshotTest"] = true
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.android.developers.androidify.plugin

import com.android.build.api.dsl.LibraryExtension
import org.gradle.api.JavaVersion
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.assign
import org.gradle.kotlin.dsl.configure
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension

class AndroidLibraryPlugin : Plugin<Project> {
override fun apply(project: Project) {
with(project) {
apply(plugin = "com.android.library")
apply(plugin = "org.jetbrains.kotlin.android")

extensions.configure<LibraryExtension> {
compileOptions {
val javaVersion = JavaVersion.toVersion(getVersionByName("javaVersion"))
sourceCompatibility = javaVersion
targetCompatibility = javaVersion
}
}
extensions.configure<KotlinAndroidProjectExtension> {
compilerOptions {
jvmTarget = JvmTarget.fromTarget(getVersionByName("javaVersion"))
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.android.developers.androidify.plugin

import org.gradle.api.GradleException
import org.gradle.api.Project
import org.gradle.api.artifacts.VersionCatalog
import org.gradle.api.artifacts.VersionCatalogsExtension
import org.gradle.kotlin.dsl.getByType

private val Project.versionCatalog: VersionCatalog
get() = project.extensions.getByType<VersionCatalogsExtension>().find("libs").get()

internal fun Project.getVersionByName(name: String): String {
val version = versionCatalog.findVersion(name)
return if (version.isPresent) {
version.get().requiredVersion
} else {
throw GradleException("Could not find a version for `$name`")
}
}
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ plugins {
alias(libs.plugins.android.test) apply false
alias(libs.plugins.baselineprofile) apply false
alias(libs.plugins.spotless) apply false
alias(libs.plugins.composeScreenshot) apply false
}
buildscript {
repositories {
Expand Down
14 changes: 1 addition & 13 deletions core/network/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,15 @@
* limitations under the License.
*/
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.androidify.androidLibrary)
alias(libs.plugins.serialization)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.hilt)
}

android {
namespace = "com.android.developers.androidify.network"
compileSdk = libs.versions.compileSdk.get().toInt()

defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
testInstrumentationRunner = "com.android.developers.testing.AndroidifyTestRunner"
}
buildFeatures {
Expand All @@ -40,14 +36,6 @@ android {
buildConfigField("boolean", "debug", "false")
}
}

compileOptions {
sourceCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
}
kotlinOptions {
jvmTarget = libs.versions.jvmTarget.get()
}
}

// Explicitly disable the connectedAndroidTest task for this module
Expand Down
18 changes: 1 addition & 17 deletions core/testing/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,29 +14,13 @@
* limitations under the License.
*/
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.androidify.androidComposeLibrary)
alias(libs.plugins.kotlin.ksp)
alias(libs.plugins.hilt)
}

android {
namespace = "com.android.developers.androidify.testing"
compileSdk = libs.versions.compileSdk.get().toInt()

defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
testInstrumentationRunner = "com.android.developers.testing.AndroidifyTestRunner"
}

compileOptions {
sourceCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
}
kotlinOptions {
jvmTarget = libs.versions.jvmTarget.get()
}
}

// Explicitly disable the connectedAndroidTest task for this module
Expand Down
19 changes: 1 addition & 18 deletions core/theme/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,25 +14,15 @@
* limitations under the License.
*/
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.androidify.androidComposeLibrary)
}
val fontName = properties["fontName"] as String?

android {
namespace = "com.android.developers.androidify.theme"
compileSdk = libs.versions.compileSdk.get().toInt()

defaultConfig {
minSdk = libs.versions.minSdk.get().toInt()
}

buildFeatures {
compose = true
buildConfig = true
}

buildTypes {
debug {
buildConfigField("String" , "fontName" , fontName ?: "\"Roboto Flex\"")
Expand All @@ -41,13 +31,6 @@ android {
buildConfigField("String" , "fontName" , fontName ?: "\"Roboto Flex\"")
}
}
compileOptions {
sourceCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
}
kotlinOptions {
jvmTarget = libs.versions.jvmTarget.get()
}
// To avoid packaging conflicts when using bouncycastle
packaging {
resources {
Expand Down
Loading
Loading