From 6f93f74f8056470461abdef1aabccf068854071c Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Sat, 21 Mar 2026 06:57:09 +0000 Subject: [PATCH] app-ng: Fix several compile warnings --- .../main/java/com/topjohnwu/magisk/ui/deny/DenyListScreen.kt | 2 +- .../src/main/java/com/topjohnwu/magisk/ui/log/LogScreen.kt | 4 ++-- .../main/java/com/topjohnwu/magisk/ui/module/ModuleScreen.kt | 4 ++-- .../src/main/java/com/topjohnwu/magisk/core/AppContext.kt | 1 + app/core/src/main/java/com/topjohnwu/magisk/core/Config.kt | 1 + .../src/main/java/com/topjohnwu/magisk/core/JobService.kt | 1 + app/core/src/main/java/com/topjohnwu/magisk/core/Receiver.kt | 1 + app/core/src/main/java/com/topjohnwu/magisk/core/ktx/XJVM.kt | 1 + .../main/java/com/topjohnwu/magisk/core/utils/RootUtils.kt | 2 +- 9 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/deny/DenyListScreen.kt b/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/deny/DenyListScreen.kt index 7801f3a31..21df2ceac 100644 --- a/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/deny/DenyListScreen.kt +++ b/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/deny/DenyListScreen.kt @@ -231,7 +231,7 @@ private fun DenyAppCard(app: DenyAppState) { Column { if (app.checkedPercent > 0f) { LinearProgressIndicator( - progress = app.checkedPercent, + progress = { app.checkedPercent }, modifier = Modifier.fillMaxWidth() ) } diff --git a/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/log/LogScreen.kt b/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/log/LogScreen.kt index 97d74fc8d..7b4d39fdd 100644 --- a/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/log/LogScreen.kt +++ b/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/log/LogScreen.kt @@ -31,7 +31,7 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Tab -import androidx.compose.material3.TabRow +import androidx.compose.material3.PrimaryTabRow import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults @@ -109,7 +109,7 @@ fun LogScreen(viewModel: LogViewModel) { .fillMaxSize() .padding(padding) ) { - TabRow( + PrimaryTabRow( selectedTabIndex = selectedTab, modifier = Modifier .fillMaxWidth() diff --git a/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/module/ModuleScreen.kt b/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/module/ModuleScreen.kt index c0768ee72..a7f1c99d4 100644 --- a/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/module/ModuleScreen.kt +++ b/app/apk-ng/src/main/java/com/topjohnwu/magisk/ui/module/ModuleScreen.kt @@ -29,7 +29,7 @@ import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.CloudUpload import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.PlayArrow -import androidx.compose.material.icons.filled.Undo +import androidx.compose.material.icons.automirrored.filled.Undo import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults @@ -376,7 +376,7 @@ private fun ModuleCard(item: ModuleItem, viewModel: ModuleViewModel, onUpdateCli ) { Icon( modifier = Modifier.size(20.dp), - imageVector = if (item.isRemoved) Icons.Default.Undo else Icons.Default.Delete, + imageVector = if (item.isRemoved) Icons.AutoMirrored.Filled.Undo else Icons.Default.Delete, tint = tint, contentDescription = null ) diff --git a/app/core/src/main/java/com/topjohnwu/magisk/core/AppContext.kt b/app/core/src/main/java/com/topjohnwu/magisk/core/AppContext.kt index 52ea40b01..5fa3fed80 100644 --- a/app/core/src/main/java/com/topjohnwu/magisk/core/AppContext.kt +++ b/app/core/src/main/java/com/topjohnwu/magisk/core/AppContext.kt @@ -108,6 +108,7 @@ object AppContext : ContextWrapper(null), } networkObserver = NetworkObserver.init(this) if (!BuildConfig.DEBUG && !isRunningAsStub) { + @OptIn(kotlinx.coroutines.DelicateCoroutinesApi::class) GlobalScope.launch(Dispatchers.IO) { ProfileInstaller.writeProfile(this@AppContext) } diff --git a/app/core/src/main/java/com/topjohnwu/magisk/core/Config.kt b/app/core/src/main/java/com/topjohnwu/magisk/core/Config.kt index e2dd5a928..6b6b61d45 100644 --- a/app/core/src/main/java/com/topjohnwu/magisk/core/Config.kt +++ b/app/core/src/main/java/com/topjohnwu/magisk/core/Config.kt @@ -13,6 +13,7 @@ object Config : PreferenceConfig, DBConfig { override val stringDB get() = ServiceLocator.stringDB override val settingsDB get() = ServiceLocator.settingsDB override val context get() = ServiceLocator.deContext + @OptIn(kotlinx.coroutines.DelicateCoroutinesApi::class) override val coroutineScope get() = GlobalScope object Key { diff --git a/app/core/src/main/java/com/topjohnwu/magisk/core/JobService.kt b/app/core/src/main/java/com/topjohnwu/magisk/core/JobService.kt index 7019f2735..b3504623b 100644 --- a/app/core/src/main/java/com/topjohnwu/magisk/core/JobService.kt +++ b/app/core/src/main/java/com/topjohnwu/magisk/core/JobService.kt @@ -73,6 +73,7 @@ class JobService : BaseJobService() { return true } + @OptIn(kotlinx.coroutines.DelicateCoroutinesApi::class) private fun checkUpdate(params: JobParameters): Boolean { GlobalScope.launch(Dispatchers.IO) { Info.fetchUpdate(ServiceLocator.networkService)?.let { diff --git a/app/core/src/main/java/com/topjohnwu/magisk/core/Receiver.kt b/app/core/src/main/java/com/topjohnwu/magisk/core/Receiver.kt index 635e384a1..b5c8be56c 100644 --- a/app/core/src/main/java/com/topjohnwu/magisk/core/Receiver.kt +++ b/app/core/src/main/java/com/topjohnwu/magisk/core/Receiver.kt @@ -33,6 +33,7 @@ open class Receiver : BaseReceiver() { intent ?: return super.onReceive(context, intent) + @OptIn(kotlinx.coroutines.DelicateCoroutinesApi::class) fun rmPolicy(uid: Int) = GlobalScope.launch { policyDB.delete(uid) } diff --git a/app/core/src/main/java/com/topjohnwu/magisk/core/ktx/XJVM.kt b/app/core/src/main/java/com/topjohnwu/magisk/core/ktx/XJVM.kt index cebd3b74f..624e36501 100644 --- a/app/core/src/main/java/com/topjohnwu/magisk/core/ktx/XJVM.kt +++ b/app/core/src/main/java/com/topjohnwu/magisk/core/ktx/XJVM.kt @@ -78,6 +78,7 @@ fun MutableMap.synchronized(): MutableMap = Collections.synch fun Class<*>.reflectField(name: String): Field = getDeclaredField(name).apply { isAccessible = true } +@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class) inline fun Flow.concurrentMap(crossinline transform: suspend (T) -> R): Flow { return flatMapMerge { value -> flow { emit(transform(value)) } diff --git a/app/core/src/main/java/com/topjohnwu/magisk/core/utils/RootUtils.kt b/app/core/src/main/java/com/topjohnwu/magisk/core/utils/RootUtils.kt index a0cd05a5b..322e5656c 100644 --- a/app/core/src/main/java/com/topjohnwu/magisk/core/utils/RootUtils.kt +++ b/app/core/src/main/java/com/topjohnwu/magisk/core/utils/RootUtils.kt @@ -76,7 +76,7 @@ class RootUtils(stub: Any?) : RootService() { val module = File(Const.MODULE_PATH, "hosts") if (module.exists()) return true val hosts = File(module, "system/etc/hosts") - if (!hosts.parentFile.mkdirs()) return false + if (hosts.parentFile?.mkdirs() != true) return false File(module, "module.prop").outputStream().writer().use { it.write(""" id=hosts