From 31a16157f38e400eafdcc70318b647229330da4e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 05:38:13 +0100 Subject: [PATCH] fix(android): make lint pass --- apps/android/app/build.gradle.kts | 6 +++++- .../ai/openclaw/android/gateway/GatewayTls.kt | 9 ++++++--- .../openclaw/android/node/AppUpdateHandler.kt | 20 ++++++++++--------- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/apps/android/app/build.gradle.kts b/apps/android/app/build.gradle.kts index e5110e991c..b7689b252b 100644 --- a/apps/android/app/build.gradle.kts +++ b/apps/android/app/build.gradle.kts @@ -63,7 +63,11 @@ android { } lint { - disable += setOf("IconLauncherShape") + disable += setOf( + "GradleDependency", + "IconLauncherShape", + "NewerVersionAvailable", + ) warningsAsErrors = true } diff --git a/apps/android/app/src/main/java/ai/openclaw/android/gateway/GatewayTls.kt b/apps/android/app/src/main/java/ai/openclaw/android/gateway/GatewayTls.kt index 1e43804d20..0726c94fc9 100644 --- a/apps/android/app/src/main/java/ai/openclaw/android/gateway/GatewayTls.kt +++ b/apps/android/app/src/main/java/ai/openclaw/android/gateway/GatewayTls.kt @@ -8,6 +8,7 @@ import java.security.MessageDigest import java.security.SecureRandom import java.security.cert.CertificateException import java.security.cert.X509Certificate +import java.util.Locale import javax.net.ssl.HttpsURLConnection import javax.net.ssl.HostnameVerifier import javax.net.ssl.SSLContext @@ -91,9 +92,11 @@ suspend fun probeGatewayTlsFingerprint( return withContext(Dispatchers.IO) { val trustAll = - @SuppressLint("CustomX509TrustManager") + @SuppressLint("CustomX509TrustManager", "TrustAllX509TrustManager") object : X509TrustManager { + @SuppressLint("TrustAllX509TrustManager") override fun checkClientTrusted(chain: Array, authType: String) {} + @SuppressLint("TrustAllX509TrustManager") override fun checkServerTrusted(chain: Array, authType: String) {} override fun getAcceptedIssuers(): Array = emptyArray() } @@ -144,7 +147,7 @@ private fun sha256Hex(data: ByteArray): String { val digest = MessageDigest.getInstance("SHA-256").digest(data) val out = StringBuilder(digest.size * 2) for (byte in digest) { - out.append(String.format("%02x", byte)) + out.append(String.format(Locale.US, "%02x", byte)) } return out.toString() } @@ -152,5 +155,5 @@ private fun sha256Hex(data: ByteArray): String { private fun normalizeFingerprint(raw: String): String { val stripped = raw.trim() .replace(Regex("^sha-?256\\s*:?\\s*", RegexOption.IGNORE_CASE), "") - return stripped.lowercase().filter { it in '0'..'9' || it in 'a'..'f' } + return stripped.lowercase(Locale.US).filter { it in '0'..'9' || it in 'a'..'f' } } diff --git a/apps/android/app/src/main/java/ai/openclaw/android/node/AppUpdateHandler.kt b/apps/android/app/src/main/java/ai/openclaw/android/node/AppUpdateHandler.kt index 7472544d31..e54c846c0f 100644 --- a/apps/android/app/src/main/java/ai/openclaw/android/node/AppUpdateHandler.kt +++ b/apps/android/app/src/main/java/ai/openclaw/android/node/AppUpdateHandler.kt @@ -187,11 +187,11 @@ class AppUpdateHandler( lastNotifUpdate = now if (contentLength > 0) { val pct = ((totalBytes * 100) / contentLength).toInt() - val mb = String.format("%.1f", totalBytes / 1048576.0) - val totalMb = String.format("%.1f", contentLength / 1048576.0) + val mb = String.format(Locale.US, "%.1f", totalBytes / 1048576.0) + val totalMb = String.format(Locale.US, "%.1f", contentLength / 1048576.0) notifManager.notify(notifId, buildProgressNotif(pct, 100, "$mb / $totalMb MB ($pct%)")) } else { - val mb = String.format("%.1f", totalBytes / 1048576.0) + val mb = String.format(Locale.US, "%.1f", totalBytes / 1048576.0) notifManager.notify(notifId, buildProgressNotif(0, 0, "${mb} MB downloaded")) } } @@ -239,13 +239,15 @@ class AppUpdateHandler( // Use PackageInstaller session API — works from background on API 34+ // The system handles showing the install confirmation dialog notifManager.cancel(notifId) - notifManager.notify(notifId, android.app.Notification.Builder(appContext, channelId) - .setSmallIcon(android.R.drawable.stat_sys_download_done) - .setContentTitle("Installing Update...") - + notifManager.notify( + notifId, + android.app.Notification.Builder(appContext, channelId) + .setSmallIcon(android.R.drawable.stat_sys_download_done) + .setContentTitle("Installing Update...") .setContentIntent(launchPi) - .setContentText("${String.format("%.1f", totalBytes / 1048576.0)} MB downloaded") - .build()) + .setContentText("${String.format(Locale.US, "%.1f", totalBytes / 1048576.0)} MB downloaded") + .build(), + ) val installer = appContext.packageManager.packageInstaller val params = android.content.pm.PackageInstaller.SessionParams(