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
26 changes: 26 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
root = true

[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
max_line_length = 120
tab_width = 4

[*.{kt,kts}]
# Disable specific ktlint rules
ktlint_disabled_rules = no-wildcard-imports,filename,package-name,max-line-length,comment-spacing
# Enable experimental ktlint rules
ktlint_experimental = true
# Android style rules
ktlint_standard_filename = false
ktlint_standard_class-naming = true
ktlint_standard_import-ordering = true

[*.{yml,yaml}]
indent_size = 2

[*.{md,markdown}]
trim_trailing_whitespace = false
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,5 @@ key.properties
website/docs/.vitepress/cache/
website/docs/.vitepress/dist/
website/docs/.vitepress/dist-ssr/
node_modules/
node_modules/
/.vscode/
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"java.configuration.updateBuildConfiguration": "interactive"
}
131 changes: 76 additions & 55 deletions app/build.gradle → app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,77 +3,92 @@ plugins {
alias(libs.plugins.kotlin.android)
alias(libs.plugins.ksp)
alias(libs.plugins.kotlin.serialization)
id("io.objectbox")
id("io.gitlab.arturbosch.detekt")
}

android {
namespace 'me.grey.picquery'
compileSdk 34
namespace = "me.grey.picquery"
compileSdk = 36

defaultConfig {
applicationId "me.grey.picquery"
minSdk 29
targetSdk 35
versionCode 8
versionName "1.2.0"
applicationId = "me.grey.picquery"
minSdk = 29
targetSdk = 35
versionCode = 8
versionName = "1.2.0"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
useSupportLibrary = true
}

ndk {
//noinspection ChromeOsAbiSupport
abiFilters 'armeabi-v7a', 'arm64-v8a'
abiFilters += listOf("armeabi-v7a", "arm64-v8a")
}
}

buildTypes {
debug {}

release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
jvmTarget = "17"
}

buildFeatures {
compose true
compose = true
}
composeOptions {
kotlinCompilerExtensionVersion libs.versions.compose.compiler.get()
kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get()
}
packagingOptions {
packaging {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
excludes.add("/META-INF/{AL2.0,LGPL2.1}")
}
}
buildToolsVersion = '34.0.0'
buildToolsVersion = "34.0.0"
}

dependencies {
def composeBom = platform(libs.compose.bom)
implementation composeBom
androidTestImplementation composeBom
// Bill of Materials
val composeBom = platform(libs.compose.bom)
implementation(composeBom)
androidTestImplementation(composeBom)

// Implementation dependencies
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime)
implementation(libs.androidx.lifecycle.livedata)
implementation(libs.androidx.lifecycle.viewmodel)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.legacy)
implementation(libs.androidx.datastore)
implementation(libs.androidx.dataStore)
implementation(libs.androidx.work.runtime)
implementation(libs.androidx.navigation.compose)
implementation(libs.androidx.splashscreen)

// 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)
Expand All @@ -87,61 +102,67 @@ dependencies {
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)

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

// Logging
implementation(libs.timber)

// Image Loading
implementation(libs.glide)
implementation(libs.glide.compose)
annotationProcessor(libs.glide.compiler)

// Other Libraries
implementation(libs.zoomable)
implementation(libs.permissionx)
implementation(libs.work.runtime)

// AI & ML
implementation(libs.onnx.runtime)
implementation(libs.mlkit.translate)

/// LiteRT
implementation libs.litert
implementation libs.litert.support
implementation libs.litert.gpu.api
implementation libs.litert.gpu
// LiteRT
implementation(libs.litert)
implementation(libs.litert.support)
implementation(libs.litert.gpu.api)
implementation(libs.litert.gpu)

// Debug implementation
debugImplementation(libs.compose.ui.tooling)

// Annotation processors
annotationProcessor(libs.glide.compiler)

// Testing
// KSP
ksp(libs.room.compiler)

// Test implementation
testImplementation(libs.junit)

// Android test implementation
androidTestImplementation(libs.androidx.test.ext)
androidTestImplementation(libs.espresso.core)
androidTestImplementation(libs.androidx.test.monitor)
androidTestImplementation(libs.androidx.test.ext)
}

implementation libs.androidx.work.runtime
implementation libs.work.runtime
}
detekt {
toolVersion = "1.23.3"
config.setFrom(files("${project.rootDir}/config/detekt/detekt.yml"))
buildUponDefaultConfig = true
autoCorrect = true
parallel = true
ignoreFailures = true // Set to true to make detekt non-blocking
}

tasks.withType<io.gitlab.arturbosch.detekt.Detekt>().configureEach {
jvmTarget = "17"
}
53 changes: 53 additions & 0 deletions app/objectbox-models/default.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"_note1": "KEEP THIS FILE! Check it into a version control system (VCS) like git.",
"_note2": "ObjectBox manages crucial IDs for your object model. See docs for details.",
"_note3": "If you have VCS merge conflicts, you must resolve them according to ObjectBox docs.",
"entities": [
{
"id": "1:6256215631497182449",
"lastPropertyId": "4:8708513969305822242",
"name": "ObjectBoxEmbedding",
"properties": [
{
"id": "1:6545944855726584292",
"name": "id",
"type": 6,
"flags": 1
},
{
"id": "2:2952332731167717730",
"name": "photoId",
"indexId": "1:2288798603681999270",
"type": 6,
"flags": 8
},
{
"id": "3:5902302075074261439",
"name": "albumId",
"indexId": "2:2918075261928380804",
"type": 6,
"flags": 8
},
{
"id": "4:8708513969305822242",
"name": "data",
"indexId": "3:7623933702471750709",
"type": 28,
"flags": 8
}
],
"relations": []
}
],
"lastEntityId": "1:6256215631497182449",
"lastIndexId": "3:7623933702471750709",
"lastRelationId": "0:0",
"lastSequenceId": "0:0",
"modelVersion": 5,
"modelVersionParserMinimum": 5,
"retiredEntityUids": [],
"retiredIndexUids": [],
"retiredPropertyUids": [],
"retiredRelationUids": [],
"version": 1
}
2 changes: 1 addition & 1 deletion app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
# proguardFiles setting in build.gradle.kts.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,12 @@
package me.grey.picquery

import android.util.Log
import androidx.test.ext.junit.runners.AndroidJUnit4

import org.junit.Test
import org.junit.runner.RunWith

import org.junit.Assert.*

/**
* Instrumented test, which will execute on an Android device.
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {

}
class ExampleInstrumentedTest
1 change: 0 additions & 1 deletion app/src/androidTest/java/me/grey/picquery/TopkTest.kt
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
package me.grey.picquery

3 changes: 2 additions & 1 deletion app/src/main/java/me/grey/picquery/PicQueryApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.app.Application
import android.content.Context
import me.grey.picquery.common.AppModules
import me.grey.picquery.data.ObjectBoxDatabase
import org.koin.android.ext.koin.androidContext
import org.koin.android.ext.koin.androidLogger
import org.koin.core.context.startKoin
Expand All @@ -27,7 +28,7 @@ class PicQueryApplication : Application() {
androidLogger()
androidContext(this@PicQueryApplication)
modules(AppModules)
ObjectBoxDatabase.getDatabase().initialize(this@PicQueryApplication)
}
}
}

Loading