From c7725af5084b666fae1757c82825ed51c472a56d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2026 22:25:03 +0000 Subject: [PATCH 1/2] Update all dependencies --- .github/workflows/build.yml | 6 +-- .github/workflows/issues-stale.yml | 2 +- app/build.gradle.kts | 2 +- gradle/libs.versions.toml | 50 +++++++++---------- gradle/spotless-init.gradle.kts | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- .../connectivity/UwbRanging/build.gradle.kts | 10 ++-- samples/media/video/build.gradle.kts | 2 +- 8 files changed, 38 insertions(+), 38 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5fb82c3c..77874def 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Set up JDK 17 - uses: actions/setup-java@v5 + uses: actions/setup-java@v6 with: distribution: 'zulu' java-version: 17 @@ -72,7 +72,7 @@ jobs: steps: - name: Delete unnecessary tools 🔧 - uses: jlumbroso/free-disk-space@v1.3.1 + uses: jlumbroso/free-disk-space@v2.0.0 with: android: false # Don't remove Android tools tool-cache: true # Remove image tool cache - rm -rf "$AGENT_TOOLSDIRECTORY" @@ -96,7 +96,7 @@ jobs: run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Set up JDK 17 - uses: actions/setup-java@v5 + uses: actions/setup-java@v6 with: distribution: 'zulu' java-version: 17 diff --git a/.github/workflows/issues-stale.yml b/.github/workflows/issues-stale.yml index d707d5dd..78c62178 100644 --- a/.github/workflows/issues-stale.yml +++ b/.github/workflows/issues-stale.yml @@ -8,7 +8,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v10 + - uses: actions/stale@v11 with: stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.' days-before-stale: 30 diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 323affa0..da4ccc82 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -18,7 +18,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) - kotlin("plugin.serialization") version "2.4.0" + kotlin("plugin.serialization") version "2.4.21" } android { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5c337518..9cec5264 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,28 +14,28 @@ # limitations under the License. # [versions] -agp = "9.2.1" -fragmentCompose = "1.8.9" -kotlin = "2.4.0" -coreKtx = "1.19.0" +agp = "9.5.0" +fragmentCompose = "1.9.1" +kotlin = "2.4.21" +coreKtx = "1.19.1" junit = "4.13.2" junitVersion = "1.3.0" espressoCore = "3.7.0" -kotlinxSerializationJson = "1.11.0" +kotlinxSerializationJson = "1.12.0" lifecycleRuntimeKtx = "2.11.0" activityCompose = "1.13.0" -composeBom = "2026.06.01" -appcompat = "1.7.1" +composeBom = "2026.09.00" +appcompat = "1.8.0" material = "1.14.0" coil = "2.7.0" -navigationCompose = "2.9.8" +navigationCompose = "2.10.2" coroutines = "1.11.0" photopickerCompose = "1.0.0-SNAPSHOT" play-services-location = "21.4.0" accompanist = "0.37.3" -androidx-datastore = "1.2.1" -androidx-navigation = "2.9.8" +androidx-datastore = "1.3.0" +androidx-navigation = "2.10.2" androidx-window = "1.5.1" hilt = "2.60.1" junit4 = "4.13.2" @@ -45,20 +45,20 @@ androidxTestExtJunit = "1.3.0" androidxTestExtTruth = "1.7.0" androidxTestRules = "1.7.0" androidxTestRunner = "1.7.0" -camerax = "1.6.1" +camerax = "1.6.2" material3Android = "1.4.0" -media3 = "1.10.1" -glide-compose = "1.0.0-beta09" -glance = "1.3.0-alpha02" -tensorflowLite = "2.16.1" +media3 = "1.11.1" +glide-compose = "1.0.0-beta10" +glance = "1.3.0-SNAPSHOT" +tensorflowLite = "2.17.0" tensorflowLiteGpuDelegatePlugin = "0.4.4" -tensorflowLiteSupport = "0.4.4" +tensorflowLiteSupport = "0.5.0" barcodeScanningCommon = "17.0.0" playServicesMlkitBarcodeScanning = "18.3.1" protobuf = "0.10.0" -firebaseCrashlyticsBuildtools = "3.0.7" +firebaseCrashlyticsBuildtools = "3.0.8" uwb = "1.0.0" -remoteCompose = "1.0.0-alpha20" +remoteCompose = "1.0.0-SNAPSHOT" telecom = "1.1.0-SNAPSHOT" @@ -96,11 +96,11 @@ androidx-core-telecom = { module = "androidx.core:core-telecom", version.ref = " androidx-activity = "androidx.activity:activity-ktx:1.13.0" -androidx-core = "androidx.core:core-ktx:1.19.0" +androidx-core = "androidx.core:core-ktx:1.19.1" androidx-exifinterface = "androidx.exifinterface:exifinterface:1.4.2" # Fragment 1.7.0 alpha and Transition 1.5.0 alpha are required for predictive back to work with Fragments and transitions -androidx-fragment = "androidx.fragment:fragment-ktx:1.8.9" -androidx-transition = "androidx.transition:transition-ktx:1.7.0" +androidx-fragment = "androidx.fragment:fragment-ktx:1.9.1" +androidx-transition = "androidx.transition:transition-ktx:1.7.2" androidx-navigation-fragment = { module = "androidx.navigation:navigation-fragment", version.ref = "androidx-navigation" } androidx-navigation-ui = { module = "androidx.navigation:navigation-ui", version.ref = "androidx-navigation" } androidx-lifecycle-viewmodel-compose = "androidx.lifecycle:lifecycle-viewmodel-compose:2.11.0" @@ -120,7 +120,7 @@ junit4 = { group = "junit", name = "junit", version.ref = "junit4" } # Sample specific dependencies lottie = "com.airbnb.android:lottie:6.7.1" rxjava2-android = 'io.reactivex.rxjava2:rxandroid:2.1.1' -androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.11.2" +androidx-work-runtime-ktx = "androidx.work:work-runtime-ktx:2.12.0" androidx-glance-appwidget = {group = "androidx.glance", name = "glance-appwidget", version.ref = "glance"} androidx-glance-preview = {group = "androidx.glance", name = "glance-preview", version.ref = "glance"} androidx-glance-appwidget-preview = {group = "androidx.glance", name = "glance-appwidget-preview", version.ref = "glance"} @@ -135,7 +135,7 @@ androidx-window-java = { module = "androidx.window:window-java", version.ref = " androidx-window-rxjava2 = { module = "androidx.window:window-rxjava2", version.ref = "androidx-window" } androidx-window-core = { module = "androidx.window:window-core", version.ref = "androidx-window" } androidx-media = "androidx.media:media:1.8.0" -androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.2.1" +androidx-constraintlayout = "androidx.constraintlayout:constraintlayout:2.2.2" androidx-corepip = "androidx.core:core-pip:1.0.0-SNAPSHOT" androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "androidx-datastore" } androidx-draganddrop = "androidx.draganddrop:draganddrop:1.0.0" @@ -157,9 +157,9 @@ androidx-camerax-view = { module = "androidx.camera:camera-view", version.ref = androidx-camerax-mlkit-vision = { module = "androidx.camera:camera-mlkit-vision", version.ref = "camerax" } androidx-camerax-extensions = { module = "androidx.camera:camera-extensions", version.ref = "camerax" } -fresco = "com.facebook.fresco:fresco:3.7.0" +fresco = "com.facebook.fresco:fresco:3.9.0" fresco-nativeimagetranscoder = "com.facebook.fresco:nativeimagetranscoder:2.6.0!!" -glide = "com.github.bumptech.glide:glide:5.0.7" +glide = "com.github.bumptech.glide:glide:5.0.9" glide-compose = { group = "com.github.bumptech.glide", name = "compose", version.ref = "glide-compose" } appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } tensorflow-lite = { module = "org.tensorflow:tensorflow-lite", version.ref = "tensorflowLite" } diff --git a/gradle/spotless-init.gradle.kts b/gradle/spotless-init.gradle.kts index 3c17d5f7..cca93cd8 100644 --- a/gradle/spotless-init.gradle.kts +++ b/gradle/spotless-init.gradle.kts @@ -17,7 +17,7 @@ val ktlintVersion = "0.48.1" initscript { - val spotlessVersion = "8.8.0" + val spotlessVersion = "8.11.0" repositories { mavenCentral() diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index a351597e..2a66ec2c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.8.2-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/samples/connectivity/UwbRanging/build.gradle.kts b/samples/connectivity/UwbRanging/build.gradle.kts index 1b7f7d20..e3ffa77c 100644 --- a/samples/connectivity/UwbRanging/build.gradle.kts +++ b/samples/connectivity/UwbRanging/build.gradle.kts @@ -55,7 +55,7 @@ protobuf { // Configures the protoc compiler protoc { // Automatically download protoc from Maven Central - artifact = "com.google.protobuf:protoc:4.35.1" + artifact = "com.google.protobuf:protoc:4.36.2" } // Configures the code generation tasks @@ -85,10 +85,10 @@ dependencies { implementation(libs.androidx.navigation.compose) implementation(libs.compose.material.iconsext) implementation(libs.kotlin.coroutines.play) - implementation("com.google.android.gms:play-services-nearby:19.3.0") - implementation("com.google.protobuf:protobuf-java:4.35.1") - implementation("com.google.protobuf:protobuf-kotlin:4.35.1") - implementation("androidx.datastore:datastore:1.2.1") + implementation("com.google.android.gms:play-services-nearby:19.5.1") + implementation("com.google.protobuf:protobuf-java:4.36.2") + implementation("com.google.protobuf:protobuf-kotlin:4.36.2") + implementation("androidx.datastore:datastore:1.3.0") implementation(libs.androidx.appcompat) implementation(libs.kotlinx.serialization.json) implementation(libs.firebase.crashlytics.buildtools) diff --git a/samples/media/video/build.gradle.kts b/samples/media/video/build.gradle.kts index 5e7075df..2ebb6238 100644 --- a/samples/media/video/build.gradle.kts +++ b/samples/media/video/build.gradle.kts @@ -82,7 +82,7 @@ dependencies { // Tensorflow lite dependencies implementation(libs.tensorflow.lite) implementation(libs.tensorflow.lite.gpu) - implementation("org.tensorflow:tensorflow-lite-gpu-api:2.16.1") + implementation("org.tensorflow:tensorflow-lite-gpu-api:2.17.0") implementation(libs.tensorflow.lite.gpu.delegate.plugin) implementation(libs.tensorflow.lite.support) implementation(libs.tensorflow.lite.select.tf.ops) From 551b2708198f53e8f35d5f773d6b0be396a24482 Mon Sep 17 00:00:00 2001 From: Yacine Rezgui Date: Tue, 3 Nov 2026 10:58:55 +0100 Subject: [PATCH 2/2] Fix build, lint, and zizmor failures on renovate/all - Split tensorflowLiteSelectTfOps = "2.16.1" in gradle/libs.versions.toml since org.tensorflow:tensorflow-lite-select-tf-ops has no 2.17.0 release on Maven Central. - Restore glance = "1.3.0-alpha02" and remoteCompose = "1.0.0-alpha20" in gradle/libs.versions.toml so they do not resolve to older January 2026 -SNAPSHOT artifacts from the pinned snapshot repository. - Run bitmap decoding and compression on Dispatchers.IO and UI updates on Dispatchers.Main in CompressingUltraHDRImages.kt to satisfy AGP 9.5.0's ThreadConstraint lint check. - Pin GitHub Actions references to commit SHAs, replace archived gradle/gradle-build-action@v3 with gradle/actions/setup-gradle@v6, and add explicit workflow permissions in .github/workflows/build.yml and .github/workflows/issues-stale.yml to pass zizmor checks. --- .github/workflows/build.yml | 27 +++++++++-------- .github/workflows/issues-stale.yml | 7 ++++- gradle/libs.versions.toml | 7 +++-- .../display/CompressingUltraHDRImages.kt | 29 ++++++++++++------- 4 files changed, 44 insertions(+), 26 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 77874def..8319f062 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,5 +1,8 @@ name: Build +permissions: + contents: read + on: workflow_dispatch: push: @@ -17,22 +20,22 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Validate Gradle Wrapper - uses: gradle/actions/wrapper-validation@v6 + uses: gradle/actions/wrapper-validation@8da46b539cd8fe6ab27ca75128919a18d757604c # v6 - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Set up JDK 17 - uses: actions/setup-java@v6 + uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6 with: distribution: 'zulu' java-version: 17 - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6 - name: Check spotless run: ./gradlew spotlessCheck --init-script gradle/spotless-init.gradle.kts --no-configuration-cache @@ -48,7 +51,7 @@ jobs: # run: ./gradlew testDebug - name: Upload build outputs (APKs) - uses: actions/upload-artifact@v7 + uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7 with: name: build-outputs path: app/build/outputs @@ -56,7 +59,7 @@ jobs: - name: Upload build reports if: always() - uses: actions/upload-artifact@v7 + uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7 with: name: build-reports path: app/build/reports @@ -72,7 +75,7 @@ jobs: steps: - name: Delete unnecessary tools 🔧 - uses: jlumbroso/free-disk-space@v2.0.0 + uses: jlumbroso/free-disk-space@ceedf095f4ec1a097402bc6bd80831f2e1a6fde6 # v2.0.0 with: android: false # Don't remove Android tools tool-cache: true # Remove image tool cache - rm -rf "$AGENT_TOOLSDIRECTORY" @@ -90,22 +93,22 @@ jobs: ls /dev/kvm - name: Checkout - uses: actions/checkout@v7 + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Copy CI gradle.properties run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties - name: Set up JDK 17 - uses: actions/setup-java@v6 + uses: actions/setup-java@b843ebf9b913146b38da2eaa7aeddf76074ae1ad # v6 with: distribution: 'zulu' java-version: 17 - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@8da46b539cd8fe6ab27ca75128919a18d757604c # v6 - name: Run instrumentation tests - uses: reactivecircus/android-emulator-runner@v2 + uses: reactivecircus/android-emulator-runner@a421e43855164a8197daf9d8d40fe71c6996bb0d # v2 with: api-level: ${{ matrix.api-level }} arch: x86_64 @@ -116,7 +119,7 @@ jobs: - name: Upload test reports if: always() - uses: actions/upload-artifact@v7 + uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7 with: name: test-reports-${{ matrix.api-level }} path: '*/build/reports/androidTests' diff --git a/.github/workflows/issues-stale.yml b/.github/workflows/issues-stale.yml index 78c62178..da84dee2 100644 --- a/.github/workflows/issues-stale.yml +++ b/.github/workflows/issues-stale.yml @@ -1,4 +1,9 @@ name: 'Close stale issues and PRs' + +permissions: + issues: write + pull-requests: write + on: workflow_dispatch: schedule: @@ -8,7 +13,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v11 + - uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11 with: stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.' days-before-stale: 30 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9cec5264..903cf9dc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -49,16 +49,17 @@ camerax = "1.6.2" material3Android = "1.4.0" media3 = "1.11.1" glide-compose = "1.0.0-beta10" -glance = "1.3.0-SNAPSHOT" +glance = "1.3.0-alpha02" tensorflowLite = "2.17.0" tensorflowLiteGpuDelegatePlugin = "0.4.4" +tensorflowLiteSelectTfOps = "2.16.1" tensorflowLiteSupport = "0.5.0" barcodeScanningCommon = "17.0.0" playServicesMlkitBarcodeScanning = "18.3.1" protobuf = "0.10.0" firebaseCrashlyticsBuildtools = "3.0.8" uwb = "1.0.0" -remoteCompose = "1.0.0-SNAPSHOT" +remoteCompose = "1.0.0-alpha20" telecom = "1.1.0-SNAPSHOT" @@ -165,7 +166,7 @@ appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "a tensorflow-lite = { module = "org.tensorflow:tensorflow-lite", version.ref = "tensorflowLite" } tensorflow-lite-gpu = { module = "org.tensorflow:tensorflow-lite-gpu", version.ref = "tensorflowLite" } tensorflow-lite-gpu-delegate-plugin = { module = "org.tensorflow:tensorflow-lite-gpu-delegate-plugin", version.ref = "tensorflowLiteGpuDelegatePlugin" } -tensorflow-lite-select-tf-ops = { module = "org.tensorflow:tensorflow-lite-select-tf-ops", version.ref = "tensorflowLite" } +tensorflow-lite-select-tf-ops = { module = "org.tensorflow:tensorflow-lite-select-tf-ops", version.ref = "tensorflowLiteSelectTfOps" } tensorflow-lite-support = { module = "org.tensorflow:tensorflow-lite-support", version.ref = "tensorflowLiteSupport" } barcode-scanning-common = { group = "com.google.mlkit", name = "barcode-scanning-common", version.ref = "barcodeScanningCommon" } play-services-mlkit-barcode-scanning = { group = "com.google.android.gms", name = "play-services-mlkit-barcode-scanning", version.ref = "playServicesMlkitBarcodeScanning" } diff --git a/samples/graphics/ultrahdr/src/main/java/com/example/platform/graphics/ultrahdr/display/CompressingUltraHDRImages.kt b/samples/graphics/ultrahdr/src/main/java/com/example/platform/graphics/ultrahdr/display/CompressingUltraHDRImages.kt index cc4a28af..0f70f22f 100644 --- a/samples/graphics/ultrahdr/src/main/java/com/example/platform/graphics/ultrahdr/display/CompressingUltraHDRImages.kt +++ b/samples/graphics/ultrahdr/src/main/java/com/example/platform/graphics/ultrahdr/display/CompressingUltraHDRImages.kt @@ -24,8 +24,12 @@ import android.view.View import android.view.ViewGroup import androidx.annotation.RequiresApi import androidx.fragment.app.Fragment +import androidx.lifecycle.lifecycleScope import com.example.platform.graphics.ultrahdr.databinding.CompressUltrahdrBinding import java.io.ByteArrayOutputStream +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext @RequiresApi(34) @@ -78,11 +82,10 @@ class CompressingUltraHDRImages : Fragment() { /** * Updated the currently displayed UltraHDR ORIGINAL image. */ - private fun displayOriginalUltraHDRImage() { + private fun displayOriginalUltraHDRImage() = lifecycleScope.launch(Dispatchers.IO) { val stream = context?.assets?.open(ULTRA_HDR_IMAGE) val bitmap = BitmapFactory.decodeStream(stream) - binding.imageContainer.setImageBitmap(bitmap) // display original size of image val outputStream = ByteArrayOutputStream() @@ -92,15 +95,19 @@ class CompressingUltraHDRImages : Fragment() { // convert from bytes to MB for displaying text orignalImageSize = (outputStreamSize / (1024 * 1024)) - " Displayed Original Image size : $orignalImageSize MB".also { - binding.ultrahdrImageSizeText.text = it + withContext(Dispatchers.Main) { + binding.imageContainer.setImageBitmap(bitmap) + + " Displayed Original Image size : $orignalImageSize MB".also { + binding.ultrahdrImageSizeText.text = it + } } } /** * Updated the currently displayed UltraHDR ORIGINAL image. */ - private fun compressAndDisplayUltraHDRImage() { + private fun compressAndDisplayUltraHDRImage() = lifecycleScope.launch(Dispatchers.IO) { //open original image val stream = context?.assets?.open(ULTRA_HDR_IMAGE) @@ -127,12 +134,14 @@ class CompressingUltraHDRImages : Fragment() { .decodeByteArray(compressedByteArray, 0, compressedByteArray.size) - //Load the compressed bitmap - binding.imageContainer.setImageBitmap(compressedBitmap) + withContext(Dispatchers.Main) { + //Load the compressed bitmap + binding.imageContainer.setImageBitmap(compressedBitmap) - //Set compressed image details as text for informational purposes - ("Compressed Image Quality : ${ULTRA_HDR_IMAGE_COMPRESSION_QUALITY}% \n Displayed Compressed Image Size : ${compressedImageSizeInMegabytes} MB ").also { - binding.ultrahdrImageSizeText.text = it + //Set compressed image details as text for informational purposes + ("Compressed Image Quality : ${ULTRA_HDR_IMAGE_COMPRESSION_QUALITY}% \n Displayed Compressed Image Size : ${compressedImageSizeInMegabytes} MB ").also { + binding.ultrahdrImageSizeText.text = it + } } }