diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts index 63dae0c..91143a2 100644 --- a/androidApp/build.gradle.kts +++ b/androidApp/build.gradle.kts @@ -8,15 +8,15 @@ plugins { kotlin("android") kotlin("kapt") id("com.mikepenz.aboutlibraries.plugin") - id("org.jetbrains.kotlinx.kover") version "0.6.1" + id("org.jetbrains.kotlinx.kover") } fun Project.execWithOutput(cmd: String, ignore: Boolean = false): String { - var result: String = ByteArrayOutputStream().use { outputStream -> + val result: String = ByteArrayOutputStream().use { outputStream -> project.exec { commandLine = cmd.split(" ") standardOutput = outputStream - isIgnoreExitValue = ignore ?: false + isIgnoreExitValue = ignore } outputStream.toString() } @@ -24,9 +24,8 @@ fun Project.execWithOutput(cmd: String, ignore: Boolean = false): String { } fun gitVersion(): String { - var process = "" val maybeTagOfCurrentCommit = execWithOutput("git -C ../ describe --contains HEAD", true) - process = if (maybeTagOfCurrentCommit.isEmpty()) { + val process = if (maybeTagOfCurrentCommit.isEmpty()) { println("No tag on current commit. Will take the latest one.") execWithOutput("git -C ../ for-each-ref refs/tags --sort=-refname --format='%(refname:short)' --count=1") } else { @@ -58,23 +57,22 @@ android { compileOptions { isCoreLibraryDesugaringEnabled = true // Flag to enable support for the new language APIs - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } // For Kotlin projects kotlinOptions { - jvmTarget = "11" + jvmTarget = "17" } - compileSdk = 33 - buildToolsVersion = "33.0.0" + compileSdk = 34 buildFeatures { viewBinding = true } defaultConfig { applicationId = "bou.amine.apps.readerforselfossv2.android" minSdk = 21 - targetSdk = 33 + targetSdk = 34 versionCode = versionCodeFromGit() versionName = versionNameFromGit() @@ -87,7 +85,7 @@ android { // tests testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } - packagingOptions { + packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" } @@ -116,25 +114,25 @@ dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.3") implementation(project(":shared")) - implementation("com.google.android.material:material:1.5.0") - implementation("androidx.appcompat:appcompat:1.4.1") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0") + implementation("com.google.android.material:material:1.9.0") + implementation("androidx.appcompat:appcompat:1.6.1") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1") - implementation("androidx.preference:preference-ktx:1.1.1") + implementation("androidx.preference:preference-ktx:1.2.1") implementation(fileTree(mapOf("include" to listOf("*.jar"), "dir" to "libs"))) // Android Support - implementation("androidx.appcompat:appcompat:1.4.1") - implementation("com.google.android.material:material:1.5.0") - implementation("androidx.recyclerview:recyclerview:1.3.0-alpha01") + implementation("androidx.appcompat:appcompat:1.6.1") + implementation("com.google.android.material:material:1.9.0") + implementation("androidx.recyclerview:recyclerview:1.3.1") implementation("androidx.legacy:legacy-support-v4:1.0.0") - implementation("androidx.vectordrawable:vectordrawable:1.2.0-alpha02") + implementation("androidx.vectordrawable:vectordrawable:1.2.0-beta01") implementation("androidx.cardview:cardview:1.0.0") - implementation("androidx.annotation:annotation:1.3.0") - implementation("androidx.work:work-runtime-ktx:2.7.1") + implementation("androidx.annotation:annotation:1.7.0") + implementation("androidx.work:work-runtime-ktx:2.8.1") implementation("androidx.constraintlayout:constraintlayout:2.1.4") - implementation("org.jsoup:jsoup:1.14.3") + implementation("org.jsoup:jsoup:1.15.4") //multidex implementation("androidx.multidex:multidex:2.0.1") @@ -155,7 +153,7 @@ dependencies { // Pager implementation("me.relex:circleindicator:2.1.6") - implementation("androidx.viewpager2:viewpager2:1.1.0-beta01") + implementation("androidx.viewpager2:viewpager2:1.1.0-beta02") //Dependency Injection implementation("org.kodein.di:kodein-di:7.14.0") @@ -171,7 +169,7 @@ dependencies { //PhotoView implementation("com.github.chrisbanes:PhotoView:2.3.0") - implementation("androidx.core:core-ktx:1.8.0") + implementation("androidx.core:core-ktx:1.12.0") implementation("androidx.lifecycle:lifecycle-extensions:2.2.0") @@ -184,7 +182,7 @@ dependencies { //test testImplementation("junit:junit:4.13.2") testImplementation("io.mockk:mockk:1.12.0") - testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0") + testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1") implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0") implementation("ch.acra:acra-http:$acraVersion") diff --git a/androidApp/proguard-rules.pro b/androidApp/proguard-rules.pro index 0162f3e..9c9f8ce 100644 --- a/androidApp/proguard-rules.pro +++ b/androidApp/proguard-rules.pro @@ -55,6 +55,7 @@ # maybe remove later ? -keep class * extends androidx.fragment.app.Fragment +-dontwarn org.slf4j.impl.StaticLoggerBinder # Keep `Companion` object fields of serializable classes. # This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects. diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/FilterSheetFragment.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/FilterSheetFragment.kt index 4c31c07..d065932 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/FilterSheetFragment.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/fragments/FilterSheetFragment.kt @@ -82,7 +82,7 @@ class FilterSheetFragment : BottomSheetDialogFragment(), DIAware { ) { val sourceGroup = binding.sourcesGroup - repository.getSourcesDetailsOrStats().forEach { source -> + repository.getSourcesDetailsOrStats().forEachIndexed { _, source -> val c = Chip(context) c.ellipsize = TextUtils.TruncateAt.END @@ -144,7 +144,7 @@ class FilterSheetFragment : BottomSheetDialogFragment(), DIAware { val tags = repository.getTags() - tags.forEach { tag -> + tags.forEachIndexed { _, tag -> val c = Chip(context) c.ellipsize = TextUtils.TruncateAt.END c.text = tag.tag diff --git a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/settings/SettingsActivity.kt b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/settings/SettingsActivity.kt index 0de8c99..8d79b83 100644 --- a/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/settings/SettingsActivity.kt +++ b/androidApp/src/main/java/bou/amine/apps/readerforselfossv2/android/settings/SettingsActivity.kt @@ -78,7 +78,7 @@ class SettingsActivity : AppCompatActivity(), val args = pref.extras val fragment = supportFragmentManager.fragmentFactory.instantiate( classLoader, - pref.fragment + pref.fragment.toString() ).apply { arguments = args setTargetFragment(caller, 0) diff --git a/build.gradle.kts b/build.gradle.kts index f20c5f3..a254cdf 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,18 +1,18 @@ buildscript { dependencies { // SqlDelight - classpath("com.squareup.sqldelight:gradle-plugin:1.5.4") + classpath("com.squareup.sqldelight:gradle-plugin:1.5.5") } } plugins { //trick: for the same plugin versions in all sub-modules - id("com.android.application").version("7.4.0").apply(false) - id("com.android.library").version("7.4.0").apply(false) - kotlin("android").version("1.7.20").apply(false) - kotlin("multiplatform").version("1.7.20").apply(false) + id("com.android.application").version("8.1.0").apply(false) + id("com.android.library").version("8.1.0").apply(false) + id("org.jetbrains.kotlin.android").version("1.9.10").apply(false) + kotlin("multiplatform").version("1.9.10").apply(false) id("com.mikepenz.aboutlibraries.plugin").version("10.5.1").apply(false) - id("org.jetbrains.kotlinx.kover") version "0.6.1" + id("org.jetbrains.kotlinx.kover").version("0.6.1").apply(true) } allprojects { @@ -20,7 +20,6 @@ allprojects { // maven { url = uri("https://nexus.amine-louveau.fr/repository/maven-public/")} google() mavenCentral() - jcenter() maven { url = uri("https://www.jitpack.io") } } } diff --git a/gradle.properties b/gradle.properties index a7c8941..4bc8df2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,22 +13,15 @@ #Tue Mar 22 16:50:00 CET 2022 #Gradle org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options\="-Xmx2048M" - #Kotlin kotlin.code.style=official - #Android android.useAndroidX=true -kotlin.native.enableDependencyPropagation=false #android.nonTransitiveRClass=true android.enableJetifier=true - - +android.nonTransitiveRClass=false #MPP kotlin.mpp.enableCInteropCommonization=true -kotlin.mpp.enableGranularSourceSetsMetadata=true - - org.gradle.parallel=true org.gradle.caching=true ignoreGitVersion=false diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 881598f..9100ea2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Jan 23 20:47:46 CET 2023 +#Thu Jul 13 11:41:19 CEST 2023 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 24eccab..63e7a88 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -1,3 +1,5 @@ +val ktorVersion = "2.3.2" + object SqlDelight { const val runtime = "com.squareup.sqldelight:runtime:1.5.4" const val android = "com.squareup.sqldelight:android-driver:1.5.4" @@ -9,12 +11,12 @@ plugins { kotlin("multiplatform") id("com.android.library") id("com.squareup.sqldelight") - kotlin("plugin.serialization") version "1.4.10" - id("org.jetbrains.kotlinx.kover") version "0.6.1" + kotlin("plugin.serialization") version "1.9.0" + id("org.jetbrains.kotlinx.kover") } kotlin { - android() + androidTarget() listOf( iosX64(), @@ -29,17 +31,18 @@ kotlin { sourceSets { val commonMain by getting { dependencies { - implementation("io.ktor:ktor-client-core:2.1.1") - implementation("io.ktor:ktor-client-content-negotiation:2.1.1") - implementation("io.ktor:ktor-serialization-kotlinx-json:2.1.1") - implementation("io.ktor:ktor-client-logging:2.1.1") - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0") - implementation("io.ktor:ktor-client-auth:2.1.1") - implementation("io.ktor:ktor-client-cio:2.1.1") - implementation("org.jsoup:jsoup:1.14.3") + implementation("io.ktor:ktor-client-core:$ktorVersion") + implementation("io.ktor:ktor-client-content-negotiation:$ktorVersion") + implementation("io.ktor:ktor-serialization-kotlinx-json:$ktorVersion") + implementation("io.ktor:ktor-client-logging:$ktorVersion") + implementation("io.ktor:ktor-client-auth:$ktorVersion") + implementation("io.ktor:ktor-client-cio:$ktorVersion") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1") + + implementation("org.jsoup:jsoup:1.15.4") //Dependency Injection - implementation("org.kodein.di:kodein-di:7.12.0") + implementation("org.kodein.di:kodein-di:7.14.0") //Settings implementation("com.russhwolf:multiplatform-settings-no-arg:1.0.0-RC") @@ -59,14 +62,15 @@ kotlin { } val androidMain by getting { dependencies { - implementation("io.ktor:ktor-client-okhttp:2.1.1") + implementation("com.squareup.okhttp3:okhttp:4.11.0") + implementation("io.ktor:ktor-client-okhttp:2.2.4") implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.0") // Sql implementation(SqlDelight.android) } } - val androidTest by getting { + val androidUnitTest by getting { dependencies { implementation(kotlin("test-junit")) implementation("junit:junit:4.13.2") @@ -99,15 +103,14 @@ kotlin { } android { - compileSdk = 32 + compileSdk = 33 sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") defaultConfig { minSdk = 21 - targetSdk = 32 } compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } namespace = "bou.amine.apps.readerforselfossv2" }