Skip to content

Commit

Permalink
refactor: migrate build to version catalogs
Browse files Browse the repository at this point in the history
  • Loading branch information
jelychow committed Feb 4, 2025
1 parent 4d2336c commit d6291c2
Show file tree
Hide file tree
Showing 9 changed files with 328 additions and 148 deletions.
172 changes: 80 additions & 92 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'com.google.devtools.ksp'
id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.22'
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.ksp)
alias(libs.plugins.kotlin.serialization)
}

android {
Expand Down Expand Up @@ -32,8 +32,6 @@ android {

release {
minifyEnabled true
// Enables resource shrinking, which is performed by the
// Android Gradle plugin.
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
Expand All @@ -51,7 +49,7 @@ android {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion '1.5.9'
kotlinCompilerExtensionVersion libs.versions.compose.compiler.get()
}
packagingOptions {
resources {
Expand All @@ -61,96 +59,86 @@ android {
buildToolsVersion = '34.0.0'
}


dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation platform('androidx.compose:compose-bom:2023.03.00')
implementation 'androidx.compose.ui:ui-graphics'

implementation "androidx.compose.material:material-icons-extended:$compose_ui_version"
implementation platform('androidx.compose:compose-bom:2023.03.00')
// implementation project(':features:mobileclip')
// implementation project(':features:clip')
// implementation project(':base:clipcore')
// implementation project(':base:core')
// implementation project(':features:mobileclip')
androidTestImplementation platform('androidx.compose:compose-bom:2023.03.00')

def m3_version = "1.2.0-alpha06"
implementation "androidx.compose.material3:material3:$m3_version"

implementation platform('androidx.compose:compose-bom:2023.03.00')
androidTestImplementation platform('androidx.compose:compose-bom:2023.03.00')
androidTestImplementation platform('androidx.compose:compose-bom:2023.03.00')

def nav_version = "2.5.3"
implementation "androidx.navigation:navigation-compose:$nav_version"

implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1'
implementation 'androidx.activity:activity-compose:1.4.0'
implementation "androidx.compose.ui:ui:$compose_ui_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_ui_version"
// implementation 'androidx.compose.material:material:1.4.0'
implementation 'androidx.test:monitor:1.5.0'
implementation 'androidx.test.ext:junit-ktx:1.1.3'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_ui_version"
debugImplementation "androidx.compose.ui:ui-tooling:$compose_ui_version"
debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_ui_version"

/// AI & Model
def onnx_version = "1.16.1"
implementation "com.microsoft.onnxruntime:onnxruntime-android:$onnx_version"
implementation 'com.google.mlkit:translate:17.0.1'

/// LiteRT
implementation 'com.google.ai.edge.litert:litert:1.0.1'
implementation 'com.google.ai.edge.litert:litert-support:1.0.1'
implementation 'com.google.ai.edge.litert:litert-gpu-api:1.0.1'
implementation 'com.google.ai.edge.litert:litert-gpu:1.0.1'

// Glide Image Loader
implementation 'com.github.bumptech.glide:glide:4.14.0'
implementation 'com.github.bumptech.glide:compose:1.0.0-alpha.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
def composeBom = platform(libs.compose.bom)
implementation composeBom
androidTestImplementation composeBom

// Compose
implementation(libs.compose.ui)
implementation(libs.compose.ui.graphics)
implementation(libs.compose.ui.tooling.preview)
implementation(libs.compose.material3)
implementation(libs.compose.material.icons.extended)
debugImplementation(libs.compose.ui.tooling)

// SplashScreen
implementation(libs.androidx.splashscreen)

// Accompanist
implementation(libs.accompanist.systemuicontroller)
implementation(libs.accompanist.navigation.animation)
implementation(libs.accompanist.permissions)

// Koin
implementation(libs.koin.core)
implementation(libs.koin.android)
implementation(libs.koin.compose)
implementation(libs.koin.androidx.compose)
implementation(libs.koin.androidx.compose.navigation)

// DataStore
implementation(libs.androidx.dataStore)

// Coroutines
implementation(libs.coroutines.core)
implementation(libs.coroutines.android)

// Serialization
implementation(libs.kotlinx.serialization)

// AndroidX
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.legacy)
implementation(libs.androidx.test.monitor)
implementation(libs.androidx.test.ext)
implementation(libs.androidx.lifecycle.livedata)
implementation(libs.androidx.lifecycle.viewmodel)
implementation(libs.androidx.datastore)
implementation(libs.androidx.work.runtime)
implementation(libs.androidx.navigation.compose)

// Utility
implementation 'net.engawapg.lib:zoomable:1.5.0'
implementation 'com.guolindev.permissionx:permissionx:1.7.1'

// Crash Collection
// Room
implementation(libs.room.runtime)
implementation(libs.room.ktx)
ksp(libs.room.compiler)

// Logging
implementation(libs.timber)

def koin_android_compose_version = "3.5.0"
def koin_android_compose_navigation_version = "3.5.0"
implementation "io.insert-koin:koin-androidx-compose:$koin_android_compose_version"
implementation "io.insert-koin:koin-androidx-compose-navigation:$koin_android_compose_navigation_version"
// Image Loading
implementation(libs.glide)
implementation(libs.glide.compose)
annotationProcessor(libs.glide.compiler)

def accompanist_version = "0.32.0"
implementation "com.google.accompanist:accompanist-systemuicontroller:$accompanist_version"
implementation "com.google.accompanist:accompanist-navigation-animation:$accompanist_version"
implementation "com.google.accompanist:accompanist-permissions:$accompanist_version"
// Other Libraries
implementation(libs.zoomable)
implementation(libs.permissionx)

// Optional - APIs for SplashScreen, including compatiblity helpers on devices prior Android 12
// https://juejin.cn/post/6997217571208445965
implementation "androidx.core:core-splashscreen:1.0.0-alpha01"
// AI & ML
implementation(libs.onnx.runtime)
implementation(libs.mlkit.translate)

// Room
def room_version = "2.5.0"
implementation "androidx.room:room-runtime:$room_version"
implementation "androidx.room:room-ktx:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"
// To use Kotlin Symbol Processing (KSP)
ksp "androidx.room:room-compiler:$room_version"

implementation "androidx.datastore:datastore-preferences:1.0.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.2"
/// LiteRT
implementation libs.litert
implementation libs.litert.support
implementation libs.litert.gpu.api
implementation libs.litert.gpu

// Testing
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.test.ext)
androidTestImplementation(libs.espresso.core)
}
3 changes: 0 additions & 3 deletions app/src/main/java/me/grey/picquery/domain/AlbumManager.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
@file:OptIn(ExperimentalPermissionsApi::class)

package me.grey.picquery.domain

import android.util.Log
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.mutableStateOf
import com.google.accompanist.permissions.ExperimentalPermissionsApi
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
Expand Down
1 change: 1 addition & 0 deletions app/src/main/java/me/grey/picquery/domain/ImageSearcher.kt
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,7 @@ class ImageSearcher(
}
.filterNotNull()
.buffer(1000)

.chunked(100)
.onEach { Log.d(TAG, "onEach: ${it.size}") }
.onCompletion {
Expand Down
56 changes: 38 additions & 18 deletions app/src/main/java/me/grey/picquery/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,17 @@ import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
import me.grey.picquery.R
import me.grey.picquery.common.InitializeEffect
Expand All @@ -34,29 +40,43 @@ class MainActivity : ComponentActivity() {

@OptIn(KoinExperimentalAPI::class)
override fun onCreate(savedInstanceState: Bundle?) {
val agreeStateFlow = preferenceRepo.getAgreement()

super.onCreate(savedInstanceState)
setContent {
val agreeState = remember { mutableStateOf(true) }

InitializeEffect {
lifecycleScope.launch {
agreeStateFlow.collect { agree ->
agreeState.value = agree
Log.d(TAG, "onCreate: $agreeState")
}
lifecycleScope.launch {
val agreeStateFlow = preferenceRepo.getAgreement()
.stateIn(
scope = lifecycleScope,
started = SharingStarted.Eagerly,
initialValue = false
)

setContent {
KoinAndroidContext {
MainContent(agreeStateFlow)
}
}
}
}

KoinAndroidContext {
PicQueryThemeM3 {
Surface(Modifier.fillMaxSize()) {
PrivacyAgreementDialog(agreeState.value)
if (agreeState.value) {
AppNavHost()
}
}
@Composable
private fun MainContent(agreeStateFlow: StateFlow<Boolean>) {
var agreeState by remember { mutableStateOf(false) }

InitializeEffect {
lifecycleScope.launch {
agreeStateFlow.collect { agree ->
agreeState = agree
Log.d(TAG, "onCreate: $agreeState")
}
}
}

PicQueryThemeM3 {
Surface(modifier = Modifier.fillMaxSize()) {
if (!agreeState) {
PrivacyAgreementDialog(agreeState)
} else {
AppNavHost()
}
}
}
Expand Down
11 changes: 0 additions & 11 deletions build.gradle

This file was deleted.

30 changes: 30 additions & 0 deletions build.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()

}
dependencies {
classpath(libs.google.oss.licenses.plugin) {
exclude(group = "com.google.protobuf")
}
}

}


plugins {
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.ksp) apply false
alias(libs.plugins.compose.compiler) apply false

}
Loading

0 comments on commit d6291c2

Please sign in to comment.