commit 723ac9401006677a10077c0e5037b772c2bb50d7 parent 3e61a59d9b86028a81df15d157341d7df80aead0 Author: Iván Ávalos <avalos@disroot.org> Date: Fri, 31 Oct 2025 23:37:06 +0100 Bump all dependencies and migrate to SDK 36 Diffstat:
23 files changed, 80 insertions(+), 57 deletions(-)
diff --git a/.idea/compiler.xml b/.idea/compiler.xml @@ -11,7 +11,7 @@ <entry name="!?*.kt" /> <entry name="!?*.clj" /> </wildcardResourcePatterns> - <bytecodeTargetLevel target="17"> + <bytecodeTargetLevel target="21"> <module name="common_commonMain" target="1.6" /> <module name="common_commonTest" target="1.6" /> <module name="common_jvmMain" target="1.6" /> diff --git a/build.gradle b/build.gradle @@ -1,22 +1,22 @@ buildscript { ext { - kotlin_version = '2.1.0' // observe compatibility with compose compiler - ktor_version = '2.3.11' - nav_version = '2.8.9' - material_version = '1.12.0' - lifecycle_version = '2.8.7' + kotlin_version = '2.2.0' // observe compatibility with compose compiler + ktor_version = '3.3.1' + nav_version = '2.9.5' + material_version = '1.13.0' + lifecycle_version = '2.9.4' constraintlayout_version = '2.2.1' junit_version = "4.13.2" datastore_version = "1.1.1" // should debug build types be minified with D8 as well? good for catching issues early - minify_debug = true + minify_debug = false } repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:8.9.2' + classpath 'com.android.tools.build:gradle:8.13.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" diff --git a/cashier/build.gradle b/cashier/build.gradle @@ -23,12 +23,12 @@ plugins { android { namespace 'net.taler.cashier' - compileSdk 35 + compileSdkVersion 36 defaultConfig { applicationId "net.taler.cashier" minSdkVersion 23 - targetSdkVersion 35 + targetSdkVersion 36 versionCode 9 versionName "1.0.3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/cashier/src/main/AndroidManifest.xml b/cashier/src/main/AndroidManifest.xml @@ -20,7 +20,12 @@ android:roundIcon="@mipmap/ic_launcher" android:supportsRtl="true" android:theme="@style/AppTheme" - tools:ignore="GoogleAppIndexingWarning"> + android:enableOnBackInvokedCallback="false" + tools:ignore="GoogleAppIndexingWarning,UnusedAttribute"> + + <property + android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" + android:value="true" /> <activity android:name=".MainActivity" diff --git a/cashier/src/main/java/net/taler/cashier/MainActivity.kt b/cashier/src/main/java/net/taler/cashier/MainActivity.kt @@ -23,6 +23,7 @@ import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.os.Bundle import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.WindowCompat import androidx.navigation.NavController import androidx.navigation.fragment.NavHostFragment import net.taler.cashier.databinding.ActivityMainBinding @@ -38,6 +39,7 @@ class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + WindowCompat.enableEdgeToEdge(window) ui = ActivityMainBinding.inflate(layoutInflater) setContentView(ui.root) setSupportActionBar(ui.toolbar) diff --git a/cashier/src/main/res/layout/activity_main.xml b/cashier/src/main/res/layout/activity_main.xml @@ -19,6 +19,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:fitsSystemWindows="true" tools:context=".MainActivity"> <com.google.android.material.appbar.AppBarLayout @@ -26,11 +27,12 @@ android:layout_height="wrap_content" android:theme="@style/AppTheme.AppBarOverlay"> - <com.google.android.material.appbar.MaterialToolbar + <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" - style="@style/AppTheme.Toolbar" android:layout_width="match_parent" - android:layout_height="wrap_content" /> + android:layout_height="?attr/actionBarSize" + android:background="?attr/colorPrimary" + app:popupTheme="@style/AppTheme.PopupOverlay"/> </com.google.android.material.appbar.AppBarLayout> diff --git a/cashier/src/main/res/values-v35/styles.xml b/cashier/src/main/res/values-v35/styles.xml @@ -22,6 +22,6 @@ <item name="colorSecondary">@color/colorAccent</item> <item name="colorOnSecondary">@color/design_default_color_background</item> <item name="colorAccent">@color/colorAccent</item> - <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item> + <item name="statusBarBackground">@color/colorInversePrimary</item> </style> </resources> \ No newline at end of file diff --git a/cashier/src/main/res/values/colors.xml b/cashier/src/main/res/values/colors.xml @@ -1,8 +1,10 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <color name="colorPrimary">#1565C0</color> + <color name="colorPrimary">#0042b3</color> <color name="colorPrimaryDark">#6A1B9A</color> <color name="colorAccent">#D81B60</color> + <color name="colorTertiary">#338af0</color> + <color name="colorInversePrimary">#afc6ff</color> <color name="background">#F1F1F1</color> <color name="green">#388E3C</color> diff --git a/cashier/src/main/res/values/styles.xml b/cashier/src/main/res/values/styles.xml @@ -12,11 +12,12 @@ <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> + <item name="statusBarBackground">@color/colorInversePrimary</item> </style> - <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.MaterialComponents.ActionBar" /> + <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> - <style name="AppTheme.Toolbar" parent="Widget.MaterialComponents.Toolbar.Primary" /> + <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> <style name="AmountButton" parent="Widget.MaterialComponents.Button"> <item name="android:minWidth">48dp</item> diff --git a/donau-verificator/build.gradle b/donau-verificator/build.gradle @@ -17,12 +17,12 @@ def gitCommit = { -> android { namespace 'net.taler.donauverificator' - compileSdk 34 + compileSdkVersion 36 defaultConfig { applicationId "net.taler.donauverificator" minSdk 30 - targetSdk 34 + targetSdk 36 versionCode 1 versionName "1.0" diff --git a/donau-verificator/src/main/res/layout/activity_main.xml b/donau-verificator/src/main/res/layout/activity_main.xml @@ -5,6 +5,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:padding="16dp" + android:fitsSystemWindows="true" android:background="@color/colorBackground"> <TextView diff --git a/donau-verificator/src/main/res/layout/activity_settings.xml b/donau-verificator/src/main/res/layout/activity_settings.xml @@ -3,6 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" + android:fitsSystemWindows="true" android:background="@color/colorBackground"> <com.google.android.material.appbar.MaterialToolbar diff --git a/donau-verificator/src/main/res/layout/fragment_results.xml b/donau-verificator/src/main/res/layout/fragment_results.xml @@ -8,6 +8,7 @@ android:layout_height="match_parent" android:padding="16dp" android:background="@color/colorBackground" + android:fitsSystemWindows="true" tools:context=".Results"> <com.google.android.material.button.MaterialButton diff --git a/donau-verificator/src/main/res/values-night/themes.xml b/donau-verificator/src/main/res/values-night/themes.xml @@ -11,6 +11,7 @@ <item name="colorOnSecondary">@color/colorOnSecondary</item> <!-- System bar colors. --> <item name="android:statusBarColor">@color/colorPrimary</item> + <item name="statusBarBackground">@color/colorPrimary</item> <item name="android:navigationBarColor">@color/colorBackground</item> <item name="colorControlActivated">@color/colorPrimary</item> <item name="android:colorControlActivated">@color/colorPrimary</item> diff --git a/donau-verificator/src/main/res/values/themes.xml b/donau-verificator/src/main/res/values/themes.xml @@ -11,6 +11,7 @@ <item name="colorOnSecondary">@color/colorOnSecondary</item> <!-- System bar colors. --> <item name="android:statusBarColor">@color/colorPrimary</item> + <item name="statusBarBackground">@color/colorPrimary</item> <item name="android:navigationBarColor">@color/colorBackground</item> <item name="colorControlActivated">@color/colorPrimary</item> <item name="android:colorControlActivated">@color/colorPrimary</item> diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Aug 27 15:56:47 CEST 2021 +#Fri Oct 31 21:28:49 CET 2025 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip distributionPath=wrapper/dists -zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/merchant-lib/build.gradle b/merchant-lib/build.gradle @@ -64,7 +64,7 @@ dependencies { testImplementation "junit:junit:$junit_version" testImplementation "io.ktor:ktor-client-mock-jvm:$ktor_version" - testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3' + testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2' } tasks.withType(KotlinCompile).configureEach { diff --git a/merchant-terminal/build.gradle b/merchant-terminal/build.gradle @@ -7,12 +7,12 @@ plugins { android { namespace 'net.taler.merchantpos' - compileSdk 35 + compileSdkVersion 36 defaultConfig { applicationId "net.taler.merchantpos" - minSdkVersion 21 - targetSdkVersion 35 + minSdkVersion 23 + targetSdkVersion 36 versionCode 16 versionName "1.0.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -69,17 +69,17 @@ dependencies { implementation "com.google.android.material:material:$material_version" implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version" - implementation 'androidx.compose.material3:material3:1.3.2' - implementation "androidx.recyclerview:recyclerview:1.3.2" - implementation "androidx.recyclerview:recyclerview-selection:1.1.0" + implementation 'androidx.compose.material3:material3:1.4.0' + implementation "androidx.recyclerview:recyclerview:1.4.0" + implementation "androidx.recyclerview:recyclerview-selection:1.2.0" // CameraX - implementation "androidx.camera:camera-camera2:1.4.2" - implementation "androidx.camera:camera-lifecycle:1.4.2" - implementation "androidx.camera:camera-view:1.4.2" + implementation "androidx.camera:camera-camera2:1.5.1" + implementation "androidx.camera:camera-lifecycle:1.5.1" + implementation "androidx.camera:camera-view:1.5.1" // ZXING core – on-device barcode/QR detector - implementation "com.google.zxing:core:3.5.2" + implementation "com.google.zxing:core:3.5.3" // Navigation implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" @@ -87,6 +87,6 @@ dependencies { implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" - testImplementation 'androidx.test.ext:junit:1.2.1' - testImplementation 'org.robolectric:robolectric:4.10.3' + testImplementation 'androidx.test.ext:junit:1.3.0' + testImplementation 'org.robolectric:robolectric:4.16' } diff --git a/merchant-terminal/src/main/res/values-v35/styles.xml b/merchant-terminal/src/main/res/values-v35/styles.xml @@ -20,6 +20,5 @@ <item name="colorOnPrimary">@color/colorOnPrimary</item> <item name="colorPrimaryDark">@color/colorInversePrimary</item> <item name="colorAccent">@color/colorTertiary</item> - <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item> </style> </resources> \ No newline at end of file diff --git a/taler-kotlin-android/build.gradle b/taler-kotlin-android/build.gradle @@ -22,7 +22,7 @@ plugins { android { namespace 'net.taler.common' - compileSdk 34 + compileSdkVersion 36 defaultConfig { minSdkVersion 21 @@ -59,9 +59,10 @@ android { } dependencies { - implementation 'androidx.appcompat:appcompat:1.7.0' - implementation 'androidx.core:core-ktx:1.13.1' + implementation 'androidx.appcompat:appcompat:1.7.1' + implementation 'androidx.core:core-ktx:1.17.0' implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version" + implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0' // Navigation implementation "androidx.navigation:navigation-ui-ktx:$nav_version" @@ -71,12 +72,12 @@ dependencies { implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" // QR codes - implementation 'com.google.zxing:core:3.5.0' // needs minSdkVersion 24+ or desugar + implementation 'com.google.zxing:core:3.5.3' // needs minSdkVersion 24+ or desugar // JSON parsing and serialization - api 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2' + api 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0' testImplementation "junit:junit:$junit_version" - testImplementation 'org.json:json:20220320' + testImplementation 'org.json:json:20250517' // Networking api "io.ktor:ktor-client:$ktor_version" diff --git a/taler-kotlin-android/src/main/java/net/taler/common/HttpUtils.kt b/taler-kotlin-android/src/main/java/net/taler/common/HttpUtils.kt @@ -20,6 +20,7 @@ import io.ktor.client.HttpClient import io.ktor.client.engine.okhttp.OkHttp import io.ktor.client.plugins.HttpRedirect import io.ktor.client.plugins.HttpTimeout +import io.ktor.client.plugins.HttpTimeoutConfig.Companion.INFINITE_TIMEOUT_MS import io.ktor.client.plugins.contentnegotiation.ContentNegotiation import io.ktor.client.plugins.logging.ANDROID import io.ktor.client.plugins.logging.LogLevel @@ -54,11 +55,11 @@ fun getDefaultHttpClient( requestTimeoutMillis = if (timeoutMs != null && timeoutMs > 0) { timeoutMs } else { - HttpTimeout.INFINITE_TIMEOUT_MS + INFINITE_TIMEOUT_MS } - socketTimeoutMillis = HttpTimeout.INFINITE_TIMEOUT_MS - connectTimeoutMillis = HttpTimeout.INFINITE_TIMEOUT_MS + socketTimeoutMillis = INFINITE_TIMEOUT_MS + connectTimeoutMillis = INFINITE_TIMEOUT_MS } install(HttpRedirect) { checkHttpMethod = !followRedirect diff --git a/wallet/build.gradle b/wallet/build.gradle @@ -20,7 +20,7 @@ plugins { id "com.android.application" id "kotlin-android" id "kotlinx-serialization" - id "com.google.protobuf" version "0.9.4" + id "com.google.protobuf" version "0.9.5" id "org.jetbrains.kotlin.plugin.compose" version "$kotlin_version" } @@ -40,12 +40,12 @@ def gitCommit = { -> android { namespace 'net.taler.wallet' - compileSdk 35 + compileSdkVersion 36 defaultConfig { applicationId "net.taler.wallet" minSdkVersion 24 - targetSdkVersion 35 + targetSdkVersion 36 versionCode 67 versionName "1.0.11" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -129,25 +129,25 @@ dependencies { implementation 'androidx.preference:preference-ktx:1.2.1' implementation "com.google.android.material:material:$material_version" implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version" - implementation "androidx.browser:browser:1.8.0" + implementation "androidx.browser:browser:1.9.0" implementation "androidx.biometric:biometric-ktx:1.4.0-alpha02" // Compose - implementation platform('androidx.compose:compose-bom:2025.05.00') + implementation platform('androidx.compose:compose-bom:2025.05.01') implementation 'androidx.compose.material3:material3' implementation 'androidx.compose.material:material-icons-extended' implementation "androidx.compose.runtime:runtime-livedata" implementation "androidx.lifecycle:lifecycle-viewmodel-compose" - implementation "com.google.accompanist:accompanist-themeadapter-material3:0.28.0" - implementation 'androidx.activity:activity-compose:1.10.1' + implementation "com.google.accompanist:accompanist-themeadapter-material3:0.36.0" + implementation 'androidx.activity:activity-compose:1.11.0' implementation 'androidx.compose.ui:ui-tooling-preview' implementation 'androidx.compose.ui:ui-viewbinding' - implementation "androidx.fragment:fragment-compose:1.8.6" + implementation "androidx.fragment:fragment-compose:1.8.9" debugImplementation 'androidx.compose.ui:ui-tooling' // Lists and Selection implementation "androidx.recyclerview:recyclerview:1.4.0" - implementation "androidx.recyclerview:recyclerview-selection:1.1.0" + implementation "androidx.recyclerview:recyclerview-selection:1.2.0" // Navigation Library implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" @@ -178,7 +178,7 @@ dependencies { implementation "com.google.protobuf:protobuf-javalite:3.18.0" testImplementation "junit:junit:$junit_version" - testImplementation 'org.json:json:20220320' + testImplementation 'org.json:json:20250517' } tasks.withType(KotlinCompile).configureEach { diff --git a/wallet/src/main/AndroidManifest.xml b/wallet/src/main/AndroidManifest.xml @@ -44,7 +44,12 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme" - tools:ignore="GoogleAppIndexingWarning"> + android:enableOnBackInvokedCallback="false" + tools:ignore="GoogleAppIndexingWarning,UnusedAttribute"> + + <property + android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" + android:value="true" /> <activity android:name=".MainActivity"