diff --git a/app/build.gradle b/app/build.gradle index f8839bc9..e4693965 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,34 +14,20 @@ if (file("google-services.json").exists()) { logger.lifecycle("Firebase Disabled") } -ext { - okhttp_version = "3.12.12" -} - -configurations { - all { - resolutionStrategy { - eachDependency { DependencyResolveDetails details -> - if (details.requested.group == "com.squareup.okhttp3" && details.requested.name == "okhttp") { - // OkHttp drops support before 5.0 since 3.13.0 - details.useVersion okhttp_version - } - } - } - } -} - android { defaultConfig { applicationId "xyz.quaver.pupil" minSdkVersion 16 - compileSdk 34 - targetSdkVersion 34 + compileSdk 35 + targetSdkVersion 35 versionCode 69 versionName "5.3.15" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } + buildFeatures { + buildConfig true + } buildTypes { debug { defaultConfig.minSdkVersion 21 @@ -68,7 +54,6 @@ android { } kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() - freeCompilerArgs += "-Xuse-experimental=kotlin.Experimental" } compileOptions { sourceCompatibility JavaVersion.VERSION_11 @@ -79,68 +64,68 @@ android { dependencies { implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"]) - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1" - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2" - implementation "org.jetbrains.kotlinx:kotlinx-datetime:0.3.2" + implementation libs.kotlin.stdlib.jdk8 + implementation libs.kotlinx.coroutines.android + implementation libs.kotlinx.serialization.json + implementation libs.kotlinx.datetime - implementation "androidx.core:core-ktx:1.12.0" - implementation "androidx.appcompat:appcompat:1.4.1" - implementation "androidx.activity:activity-ktx:1.4.0" - implementation "androidx.fragment:fragment-ktx:1.4.1" - implementation "androidx.preference:preference-ktx:1.2.0" - implementation "androidx.recyclerview:recyclerview:1.2.1" - implementation "androidx.constraintlayout:constraintlayout:2.1.4" - implementation "androidx.gridlayout:gridlayout:1.0.0" - implementation "androidx.biometric:biometric:1.1.0" - implementation "androidx.work:work-runtime-ktx:2.7.1" + implementation libs.core.ktx + implementation libs.appcompat + implementation libs.activity.ktx + implementation libs.fragment.ktx + implementation libs.preference.ktx + implementation libs.recyclerview + implementation libs.constraintlayout + implementation libs.gridlayout + implementation libs.biometric + implementation libs.work.runtime.ktx - implementation "com.daimajia.swipelayout:library:1.2.0@aar" + implementation libs.library - implementation "com.google.android.material:material:1.11.0" + implementation libs.material - implementation platform('com.google.firebase:firebase-bom:32.7.0') - implementation "com.google.firebase:firebase-analytics-ktx" - implementation "com.google.firebase:firebase-crashlytics-ktx" - implementation "com.google.firebase:firebase-perf-ktx" + implementation platform(libs.firebase.bom) + implementation libs.firebase.analytics.ktx + implementation libs.firebase.crashlytics.ktx + implementation libs.firebase.perf.ktx - implementation "com.google.android.gms:play-services-oss-licenses:17.0.1" - implementation "com.google.android.gms:play-services-mlkit-face-detection:17.1.0" + implementation libs.play.services.oss.licenses + implementation libs.play.services.mlkit.face.detection - implementation "com.github.clans:fab:1.6.4" + implementation libs.fab //implementation "com.quiph.ui:recyclerviewfastscroller:0.2.1" - implementation 'com.github.piasy:BigImageViewer:1.8.1' - implementation 'com.github.piasy:FrescoImageLoader:1.8.1' - implementation 'com.github.piasy:FrescoImageViewFactory:1.8.1' - implementation 'com.facebook.fresco:imagepipeline-okhttp3:2.6.0' + implementation libs.bigimageviewer + implementation libs.frescoimageloader + implementation libs.frescoimageviewfactory + implementation libs.imagepipeline.okhttp3 //noinspection GradleDependency - implementation "com.squareup.okhttp3:okhttp:$okhttp_version" - implementation "io.ktor:ktor-network:2.3.10" + implementation libs.okhttp + implementation libs.ktor.network - implementation "com.tbuonomo.andrui:viewpagerdotsindicator:4.1.2" + implementation libs.viewpagerdotsindicator - implementation "net.rdrei.android.dirchooser:library:3.2@aar" - implementation "com.gu:option:1.3" + implementation libs.dirchooser.library + implementation libs.option - implementation "com.andrognito.patternlockview:patternlockview:1.0.0" + implementation libs.patternlockview //implementation "com.andrognito.pinlockview:pinlockview:2.1.0" - implementation "ru.noties.markwon:core:3.1.0" + implementation libs.core - implementation "com.skyfishjy.ripplebackground:library:1.0.1" + implementation libs.ripplebackground.library - implementation "org.jsoup:jsoup:1.14.3" + implementation libs.jsoup - implementation "xyz.quaver:documentfilex:0.7.2" - implementation "xyz.quaver:floatingsearchview:1.1.7" + implementation libs.documentfilex + implementation libs.floatingsearchview - testImplementation "junit:junit:4.13.2" - testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1" - androidTestImplementation "androidx.test.ext:junit:1.1.3" - androidTestImplementation "androidx.test:rules:1.4.0" - androidTestImplementation "androidx.test:runner:1.4.0" - androidTestImplementation "androidx.test.espresso:espresso-core:3.4.0" + testImplementation libs.junit + testImplementation libs.kotlinx.coroutines.test + androidTestImplementation libs.ext.junit + androidTestImplementation libs.rules + androidTestImplementation libs.runner + androidTestImplementation libs.espresso.core } \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DefaultQueryDialog.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DefaultQueryDialog.kt index c0883922..f9d38565 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DefaultQueryDialog.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DefaultQueryDialog.kt @@ -122,7 +122,7 @@ class DefaultQueryDialog : DialogFragment() { s.replace( 0, s.length, - s.toString().toLowerCase(java.util.Locale.getDefault()) + s.toString().lowercase() ) } }) diff --git a/app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt b/app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt index 93fea583..a8510972 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/view/FloatingSearchView.kt @@ -76,7 +76,7 @@ class FloatingSearchView @JvmOverloads constructor(context: Context, attrs: Attr s ?: return if (s.any { it.isUpperCase() }) - s.replace(0, s.length, s.toString().toLowerCase(Locale.getDefault())) + s.replace(0, s.length, s.toString().lowercase()) } override fun onSuggestionClicked(searchSuggestion: SearchSuggestion?) { diff --git a/build.gradle b/build.gradle index cd56e915..83d44c2c 100644 --- a/build.gradle +++ b/build.gradle @@ -6,16 +6,16 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.8.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" - classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" - classpath "com.google.gms:google-services:4.3.15" + classpath libs.gradle + classpath libs.kotlin.gradle.plugin + classpath libs.kotlin.android.extensions + classpath libs.kotlin.serialization + classpath libs.google.services // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files - classpath "com.google.firebase:firebase-crashlytics-gradle:2.9.9" - classpath "com.google.firebase:perf-plugin:1.4.2" - classpath "com.google.android.gms:oss-licenses-plugin:0.10.6" + classpath libs.firebase.crashlytics.gradle + classpath libs.perf.plugin + classpath libs.oss.licenses.plugin } } diff --git a/gradle.properties b/gradle.properties index 379373b8..45e99ee0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,7 +20,6 @@ kotlin.code.style=official android.enableJetifier=true android.useAndroidX=true -kotlin_version=1.9.0 -android.defaults.buildfeatures.buildconfig=true +kotlin_version=2.1.10 android.nonTransitiveRClass=false android.nonFinalResIds=false \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..c192d785 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,103 @@ +[versions] +activityKtx = "1.10.0" +appcompat = "1.7.0" +bigimageviewer = "1.8.1" +biometric = "1.1.0" +constraintlayout = "2.2.0" +core = "3.1.0" +coreKtx = "1.15.0" +documentfilex = "0.7.2" +espressoCore = "3.6.1" +fab = "1.6.4" +firebaseBom = "33.9.0" +firebaseCrashlyticsGradle = "3.0.3" +floatingsearchview = "1.1.7" +fragmentKtx = "1.8.5" +googleServices = "4.4.2" +gradle = "8.8.0" +gridlayout = "1.0.0" +imagepipelineOkhttp3 = "2.6.0" +jsoup = "1.18.3" +junit = "4.13.2" +junitVersion = "1.2.1" +kotlinAndroidExtensions = "2.1.10" +kotlinGradlePlugin = "2.1.10" +kotlinSerialization = "2.1.10" +kotlinxCoroutinesAndroid = "1.8.0" +kotlinxCoroutinesTest = "1.6.1" +kotlinxDatetime = "0.4.0" +kotlinxSerializationJson = "1.5.1" +ktorNetwork = "2.3.10" +library = "1.2.0" +libraryVersion = "3.2" +material = "1.12.0" +okhttp = "3.12.12" +option = "1.3" +ossLicensesPlugin = "0.10.6" +patternlockview = "1.0.0" +perfPlugin = "1.4.2" +playServicesMlkitFaceDetection = "17.1.0" +playServicesOssLicenses = "17.1.0" +preferenceKtx = "1.2.1" +recyclerview = "1.4.0" +rules = "1.6.1" +runner = "1.6.2" +skyfishjyLibrary = "1.0.1" +viewpagerdotsindicator = "4.1.2" +workRuntimeKtx = "2.10.0" + +[libraries] +activity-ktx = { module = "androidx.activity:activity-ktx", version.ref = "activityKtx" } +appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" } +bigimageviewer = { module = "com.github.piasy:BigImageViewer", version.ref = "bigimageviewer" } +biometric = { module = "androidx.biometric:biometric", version.ref = "biometric" } +constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" } +core = { module = "ru.noties.markwon:core", version.ref = "core" } +core-ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" } +dirchooser-library = { module = "net.rdrei.android.dirchooser:library", version.ref = "libraryVersion" } +documentfilex = { module = "xyz.quaver:documentfilex", version.ref = "documentfilex" } +espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espressoCore" } +ext-junit = { module = "androidx.test.ext:junit", version.ref = "junitVersion" } +fab = { module = "com.github.clans:fab", version.ref = "fab" } +firebase-analytics-ktx = { module = "com.google.firebase:firebase-analytics-ktx" } +firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebaseBom" } +firebase-crashlytics-gradle = { module = "com.google.firebase:firebase-crashlytics-gradle", version.ref = "firebaseCrashlyticsGradle" } +firebase-crashlytics-ktx = { module = "com.google.firebase:firebase-crashlytics-ktx" } +firebase-perf-ktx = { module = "com.google.firebase:firebase-perf-ktx" } +floatingsearchview = { module = "xyz.quaver:floatingsearchview", version.ref = "floatingsearchview" } +fragment-ktx = { module = "androidx.fragment:fragment-ktx", version.ref = "fragmentKtx" } +frescoimageloader = { module = "com.github.piasy:FrescoImageLoader", version.ref = "bigimageviewer" } +frescoimageviewfactory = { module = "com.github.piasy:FrescoImageViewFactory", version.ref = "bigimageviewer" } +google-services = { module = "com.google.gms:google-services", version.ref = "googleServices" } +gradle = { module = "com.android.tools.build:gradle", version.ref = "gradle" } +gridlayout = { module = "androidx.gridlayout:gridlayout", version.ref = "gridlayout" } +imagepipeline-okhttp3 = { module = "com.facebook.fresco:imagepipeline-okhttp3", version.ref = "imagepipelineOkhttp3" } +jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" } +junit = { module = "junit:junit", version.ref = "junit" } +kotlin-android-extensions = { module = "org.jetbrains.kotlin:kotlin-android-extensions", version.ref = "kotlinAndroidExtensions" } +kotlin-gradle-plugin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlinGradlePlugin" } +kotlin-serialization = { module = "org.jetbrains.kotlin:kotlin-serialization", version.ref = "kotlinSerialization" } +kotlin-stdlib-jdk8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8" } +kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "kotlinxCoroutinesAndroid" } +kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinxCoroutinesTest" } +kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinxDatetime" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } +ktor-network = { module = "io.ktor:ktor-network", version.ref = "ktorNetwork" } +library = { module = "com.daimajia.swipelayout:library", version.ref = "library" } +material = { module = "com.google.android.material:material", version.ref = "material" } +okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } +option = { module = "com.gu:option", version.ref = "option" } +oss-licenses-plugin = { module = "com.google.android.gms:oss-licenses-plugin", version.ref = "ossLicensesPlugin" } +patternlockview = { module = "com.andrognito.patternlockview:patternlockview", version.ref = "patternlockview" } +perf-plugin = { module = "com.google.firebase:perf-plugin", version.ref = "perfPlugin" } +play-services-mlkit-face-detection = { module = "com.google.android.gms:play-services-mlkit-face-detection", version.ref = "playServicesMlkitFaceDetection" } +play-services-oss-licenses = { module = "com.google.android.gms:play-services-oss-licenses", version.ref = "playServicesOssLicenses" } +preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preferenceKtx" } +recyclerview = { module = "androidx.recyclerview:recyclerview", version.ref = "recyclerview" } +ripplebackground-library = { module = "com.skyfishjy.ripplebackground:library", version.ref = "skyfishjyLibrary" } +rules = { module = "androidx.test:rules", version.ref = "rules" } +runner = { module = "androidx.test:runner", version.ref = "runner" } +viewpagerdotsindicator = { module = "com.tbuonomo.andrui:viewpagerdotsindicator", version.ref = "viewpagerdotsindicator" } +work-runtime-ktx = { module = "androidx.work:work-runtime-ktx", version.ref = "workRuntimeKtx" } + +[plugins] \ No newline at end of file