Skip to content
Merged
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: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/local.properties
/.idea/*
.DS_Store
/build
build
/captures
.externalNativeBuild
.cxx
112 changes: 54 additions & 58 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
plugins {
id("com.android.application")
kotlin("android")
kotlin("kapt")
kotlin("plugin.serialization") version Versions.kotlin
id("dagger.hilt.android.plugin")
// TODO enable after providing google-services.json
//id("com.google.gms.google-services")
id("com.google.firebase.appdistribution")
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.hilt)
alias(libs.plugins.ksp)
alias(libs.plugins.kotlin.serialization)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.firebase.distribution)
// TODO enable after providing google-services.json
// alias(libs.plugins.google.services)

id(libs.plugins.conventions.lint.get().pluginId)
}

android.apply {
android {
compileSdk = ProjectSettings.compileSdkVersion
namespace = ProjectSettings.applicationId

Expand All @@ -20,8 +23,6 @@ android.apply {
versionCode = ProjectSettings.versionCode
versionName = ProjectSettings.versionName

vectorDrawables.useSupportLibrary = true

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

javaCompileOptions {
Expand Down Expand Up @@ -57,14 +58,6 @@ android.apply {
jvmTarget = JavaVersion.VERSION_17.toString()
}

composeOptions {
kotlinCompilerExtensionVersion = Versions.composeCompilerVersion
}

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach {
kotlinOptions.freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn"
}

sourceSets {
getByName("main").java.setSrcDirs(setOf("src/main/kotlin"))
create(ProjectSettings.Flavor.DEV).java.setSrcDirs(setOf("src/dev/kotlin"))
Expand Down Expand Up @@ -97,7 +90,6 @@ android.apply {
signingConfig = signingConfigs.getByName(ProjectSettings.BuildType.DEBUG)
}
create(ProjectSettings.BuildType.ENTERPRISE) {
isDebuggable = true
isMinifyEnabled = true
isShrinkResources = true
signingConfig = signingConfigs.getByName(ProjectSettings.BuildType.DEBUG)
Expand Down Expand Up @@ -141,67 +133,71 @@ android.apply {

kotlin {
jvmToolchain(JavaVersion.VERSION_17.majorVersion.toInt())

compilerOptions {
optIn.add("kotlin.RequiresOptIn")
}
}

dependencies {
// Kotlin
implementation(platform(Dependencies.Kotlin.kotlinReflect))

// Support
implementation(Dependencies.Support.appcompat)
implementation(Dependencies.Support.ktx)
implementation(Dependencies.Support.lifecycleViewModel)
implementation(Dependencies.Support.lifecycleRuntime)
implementation(Dependencies.Support.activityKtx)
implementation(Dependencies.Support.lifecycleCompiler)
coreLibraryDesugaring(Dependencies.Support.desugarLibs)
implementation(libs.appcompat)
implementation(libs.core.ktx)
implementation(libs.lifecycle.viewmodel)
implementation(libs.lifecycle.runtime)
implementation(libs.activity.ktx)

implementation(Dependencies.Support.datastore)
coreLibraryDesugaring(libs.core.jdk.desugaring)

implementation(Dependencies.Support.vectordrawable)
implementation(libs.androidx.datastore.preferences)
implementation(libs.androidx.splashscreen)

// Compose
implementation(Dependencies.Compose.animation)
implementation(Dependencies.Compose.foundation)
implementation(Dependencies.Compose.foundation_layout)
implementation(Dependencies.Compose.material3)
implementation(Dependencies.Compose.runtime_livedata)
implementation(Dependencies.Compose.runtime)
implementation(Dependencies.Compose.ui)
implementation(Dependencies.Compose.ui_tooling)
implementation(Dependencies.Compose.activity)
implementation(Dependencies.Compose.constraintLayout)
val composeBom = platform(libs.androidx.compose.bom)
implementation(composeBom)
androidTestImplementation(composeBom)

implementation(libs.androidx.activity.compose)
implementation(libs.androidx.compose.foundation)
implementation(libs.androidx.compose.material3)
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.runtime)
debugImplementation(libs.androidx.compose.ui.tooling)

// MVVM
implementation(Dependencies.Taste.mvvmCrInteractors)
implementation(libs.arkitekt.usecases)

// Hilt
implementation(Dependencies.Hilt.hiltAndroid)
kapt(Dependencies.Hilt.hiltCompiler)
implementation(libs.hilt.android)
ksp(libs.hilt.compiler)

// NavigationComponents
implementation(Dependencies.NavigationComponents.navigation)
implementation(Dependencies.NavigationComponents.navigationHilt)
implementation(libs.navigation)
implementation(libs.navigation.hilt)

// Networking
implementation(Dependencies.Networking.okHttp)
implementation(Dependencies.Networking.logging)
implementation(Dependencies.Networking.retrofit)
implementation(libs.okHttp)
implementation(libs.logging)
implementation(libs.retrofit)
implementation(libs.coil)
implementation(libs.coil.network)

// Serialization
implementation(Dependencies.Serialization.serializationJson)
implementation(Dependencies.Serialization.converter)
implementation(libs.serialization.json)
implementation(libs.serialization.converter)

// Other
implementation(Dependencies.Other.timber)
implementation(libs.timber)

// Testing
androidTestImplementation(Dependencies.Test.core)
androidTestImplementation(Dependencies.Test.runner)
androidTestImplementation(Dependencies.Test.junit)
androidTestImplementation(Dependencies.Test.mockk)
testImplementation(Dependencies.Test.junit)
androidTestImplementation(libs.test.core)
androidTestImplementation(libs.test.runner)
androidTestImplementation(libs.test.junit)
androidTestImplementation(libs.test.mockk)
testImplementation(libs.test.junit)

// Lint
lintChecks(Dependencies.Lint.composeLint)
lintChecks(libs.compose.lint)
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ package app.futured.androidprojecttemplate.tools.compose
import android.content.res.Configuration
import androidx.compose.ui.tooling.preview.Preview

private const val PHONE_XHDPI = "spec:id=reference_phone,shape=Normal,width=618,height=1098,unit=dp,dpi=320"
private const val PHONE_XXHDPI = "spec:id=reference_phone,shape=Normal,width=412,height=732,unit=dp,dpi=480"
private const val PHONE_XXXHDPI = "spec:id=reference_phone,shape=Normal,width=316,height=550,unit=dp,dpi=640"

@Preview(
name = "1 - Light mode",
group = "UI mode",
Expand All @@ -33,26 +29,26 @@ annotation class DarkLightPreviews
)
annotation class FontScalePreviews

@Preview(device = PHONE_XHDPI, name = "7 - PHONE PIXEL XHDPI", group = "phoneScreenDensity")
@Preview(name = "7 - PHONE PIXEL XHDPI", group = "phoneScreenDensity", device = "spec:width=1080px,height=2340px,dpi=320")
annotation class PhoneScreenDensityXHDPIPreview

@Preview(device = PHONE_XXHDPI, name = "8 - PHONE PIXEL XXHDPI", group = "phoneScreenDensity")
@Preview(name = "8 - PHONE PIXEL XXHDPI", group = "phoneScreenDensity", device = "spec:width=1080px,height=2340px,dpi=480")
annotation class PhoneScreenDensityXXHDPIPreview

@Preview(device = PHONE_XXXHDPI, name = "9 - PHONE PIXEL XXXHDPI", group = "phoneScreenDensity")
@Preview(name = "9 - PHONE PIXEL XXXHDPI", group = "phoneScreenDensity", device = "spec:width=1080px,height=2340px,dpi=640")
annotation class PhoneScreenDensityXXXHDPIPreview

@Preview(
device = PHONE_XXHDPI,
fontScale = 1.5f,
name = "5 - Large screen density font scale",
group = "phoneScreenDensityFontScale",
device = "spec:width=1080px,height=2340px,dpi=480",
)
@Preview(
device = PHONE_XXXHDPI,
fontScale = 2.0f,
name = "6 - Largest screen density font scale",
group = "phoneScreenDensityFontScale",
device = "spec:width=1080px,height=2340px,dpi=640",
)
annotation class ScreenDensityWithFontScalePreviews

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ fun AddFloatingActionButton(

@ComponentPreviews
@Composable
fun AddFloatingActionButtonPreview() {
private fun AddFloatingActionButtonPreview() {
Showcase {
AddFloatingActionButton(onClick = {})
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ object TEMPLATE {

@ScreenPreviews
@Composable
fun TEMPLATEContentPreview() = Showcase {
private fun TEMPLATEContentPreview() = Showcase {
TEMPLATE.Content(
actions = object : TEMPLATE.Actions {
override fun onNavigateBack() = Unit
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ object Detail {

@ScreenPreviews
@Composable
fun DetailContentPreview() {
private fun DetailContentPreview() {
Showcase {
Detail.Content(
actions = object : Detail.Actions {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ object Home {

@ScreenPreviews
@Composable
fun HomeContentPreview() {
private fun HomeContentPreview() {
Showcase {
Home.Content(
actions = object : Home.Actions {
Expand Down
69 changes: 9 additions & 60 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,71 +1,20 @@
import app.futured.androidprojecttemplate.Clean
import app.futured.androidprojecttemplate.DependencyUpdates
import app.futured.androidprojecttemplate.LintCheck
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
google()
}
dependencies {
classpath(Dependencies.gradlePlugin)
classpath(kotlin(Dependencies.Kotlin.gradlePlugin, Versions.kotlin))
classpath(Dependencies.hiltPlugin)
classpath(Dependencies.googleServices)
classpath(Dependencies.firebaseAppDistribution)
}
}
import io.gitlab.arturbosch.detekt.report.ReportMergeTask

plugins {
idea
id(Dependencies.Plugins.detekt) version Versions.detekt
id(Dependencies.Plugins.ktlint) version Versions.ktlintGradle
alias(libs.plugins.android.application) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.hilt) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.ktlint) apply false
alias(libs.plugins.detekt) apply false
}

tasks {
register<Clean>("clean")
register<LintCheck>("lintCheck")
register<DependencyUpdates>("dependencyUpdates")
}

allprojects {
repositories {
google()
maven { setUrl("https://jitpack.io") }
gradlePluginPortal()
}
}

subprojects {
apply(plugin = Dependencies.Plugins.ktlint)
ktlint.apply {
version.set(Versions.ktlint)
ignoreFailures.set(true)
android.set(true)
outputToConsole.set(true)
reporters {
reporter(ReporterType.PLAIN)
reporter(ReporterType.CHECKSTYLE)
}
}
}

detekt.apply {
version = Versions.detekt
source.from(rootDir, "buildSrc/")
config.from(files("$rootDir/detekt.yml"))
allRules = false
}

ktlint.apply {
version.set(Versions.ktlint)
ignoreFailures.set(true)
android.set(true)
outputToConsole.set(true)
reporters {
reporter(ReporterType.PLAIN)
reporter(ReporterType.CHECKSTYLE)
register<ReportMergeTask>("detektReportMerge") {
output.set(rootProject.layout.buildDirectory.file("reports/detekt/merged.xml"))
}
}
8 changes: 1 addition & 7 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,6 @@ plugins {
`kotlin-dsl`
}

repositories {
google()
mavenCentral()
gradlePluginPortal()
}

dependencies {
implementation("com.github.ben-manes:gradle-versions-plugin:0.50.0")
implementation(libs.gradlePlugin.versions)
}
13 changes: 13 additions & 0 deletions buildSrc/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
dependencyResolutionManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}

versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}
Loading
Loading