mirror of
https://github.com/revanced/revanced-manager.git
synced 2025-05-03 15:24:25 +02:00
feat: armv7 warning
This commit is contained in:
parent
8f6d720454
commit
8f5449527d
@ -1,9 +1,14 @@
|
|||||||
package app.revanced.manager.patcher.aapt
|
package app.revanced.manager.patcher.aapt
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.os.Build.SUPPORTED_ABIS as DEVICE_ABIS
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
object Aapt {
|
object Aapt {
|
||||||
|
private val WORKING_ABIS = setOf("arm64-v8a", "x86", "x86_64")
|
||||||
|
|
||||||
|
fun supportsDevice() = (DEVICE_ABIS intersect WORKING_ABIS).isNotEmpty()
|
||||||
|
|
||||||
fun binary(context: Context): File? {
|
fun binary(context: Context): File? {
|
||||||
return File(context.applicationInfo.nativeLibraryDir).resolveAapt()
|
return File(context.applicationInfo.nativeLibraryDir).resolveAapt()
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,8 @@ import androidx.compose.foundation.layout.padding
|
|||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material3.Card
|
import androidx.compose.material3.Card
|
||||||
|
import androidx.compose.material3.CardColors
|
||||||
|
import androidx.compose.material3.CardDefaults
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
@ -24,13 +26,13 @@ fun NotificationCard(
|
|||||||
color: Color,
|
color: Color,
|
||||||
icon: ImageVector,
|
icon: ImageVector,
|
||||||
text: String,
|
text: String,
|
||||||
content: @Composable () -> Unit
|
content: (@Composable () -> Unit)? = null,
|
||||||
) {
|
) {
|
||||||
Card(
|
Card(
|
||||||
|
colors = CardDefaults.cardColors(containerColor = color),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.clip(RoundedCornerShape(28.dp))
|
.clip(RoundedCornerShape(28.dp))
|
||||||
.background(color)
|
|
||||||
) {
|
) {
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
@ -47,11 +49,11 @@ fun NotificationCard(
|
|||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
)
|
)
|
||||||
Text(
|
Text(
|
||||||
modifier = Modifier.width(220.dp),
|
modifier = if (content != null) Modifier.width(220.dp) else Modifier,
|
||||||
text = text,
|
text = text,
|
||||||
style = MaterialTheme.typography.bodyMedium
|
style = MaterialTheme.typography.bodyMedium
|
||||||
)
|
)
|
||||||
content()
|
content?.invoke()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -2,10 +2,15 @@ package app.revanced.manager.ui.screen
|
|||||||
|
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
|
import androidx.compose.foundation.layout.Box
|
||||||
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
|
import androidx.compose.material.icons.Icons
|
||||||
|
import androidx.compose.material.icons.outlined.WarningAmber
|
||||||
import androidx.compose.material3.ListItem
|
import androidx.compose.material3.ListItem
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
@ -13,14 +18,17 @@ import androidx.compose.runtime.Composable
|
|||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import app.revanced.manager.R
|
import app.revanced.manager.R
|
||||||
import app.revanced.manager.data.room.apps.installed.InstalledApp
|
import app.revanced.manager.data.room.apps.installed.InstalledApp
|
||||||
|
import app.revanced.manager.patcher.aapt.Aapt
|
||||||
import app.revanced.manager.ui.component.AppIcon
|
import app.revanced.manager.ui.component.AppIcon
|
||||||
import app.revanced.manager.ui.component.AppLabel
|
import app.revanced.manager.ui.component.AppLabel
|
||||||
import app.revanced.manager.ui.component.LoadingIndicator
|
import app.revanced.manager.ui.component.LoadingIndicator
|
||||||
|
import app.revanced.manager.ui.component.NotificationCard
|
||||||
import app.revanced.manager.ui.viewmodel.InstalledAppsViewModel
|
import app.revanced.manager.ui.viewmodel.InstalledAppsViewModel
|
||||||
import org.koin.androidx.compose.getViewModel
|
import org.koin.androidx.compose.getViewModel
|
||||||
|
|
||||||
@ -31,43 +39,56 @@ fun InstalledAppsScreen(
|
|||||||
) {
|
) {
|
||||||
val installedApps by viewModel.apps.collectAsStateWithLifecycle(initialValue = null)
|
val installedApps by viewModel.apps.collectAsStateWithLifecycle(initialValue = null)
|
||||||
|
|
||||||
LazyColumn(
|
Column {
|
||||||
modifier = Modifier.fillMaxSize(),
|
if (!Aapt.supportsDevice())
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
Box(modifier = Modifier.padding(16.dp)) {
|
||||||
verticalArrangement = installedApps?.let { if (it.isEmpty()) Arrangement.Center else Arrangement.Top } ?: Arrangement.Center
|
NotificationCard(
|
||||||
) {
|
color = MaterialTheme.colorScheme.errorContainer,
|
||||||
installedApps?.let { installedApps ->
|
icon = Icons.Outlined.WarningAmber,
|
||||||
|
text = stringResource(
|
||||||
if (installedApps.isNotEmpty()) {
|
R.string.unsupported_architecture_warning
|
||||||
items(
|
),
|
||||||
installedApps,
|
)
|
||||||
key = { it.currentPackageName }
|
|
||||||
) { installedApp ->
|
|
||||||
viewModel.packageInfoMap[installedApp.currentPackageName].let { packageInfo ->
|
|
||||||
ListItem(
|
|
||||||
modifier = Modifier.clickable { onAppClick(installedApp) },
|
|
||||||
leadingContent = {
|
|
||||||
AppIcon(
|
|
||||||
packageInfo,
|
|
||||||
contentDescription = null,
|
|
||||||
Modifier.size(36.dp)
|
|
||||||
)
|
|
||||||
},
|
|
||||||
headlineContent = { AppLabel(packageInfo, defaultText = null) },
|
|
||||||
supportingContent = { Text(installedApp.currentPackageName) }
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
item {
|
|
||||||
Text(
|
|
||||||
text = stringResource(R.string.no_patched_apps_found),
|
|
||||||
style = MaterialTheme.typography.titleLarge
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} ?: item { LoadingIndicator() }
|
LazyColumn(
|
||||||
|
modifier = Modifier.fillMaxSize(),
|
||||||
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
|
verticalArrangement = if (installedApps.isNullOrEmpty()) Arrangement.Center else Arrangement.Top
|
||||||
|
) {
|
||||||
|
installedApps?.let { installedApps ->
|
||||||
|
|
||||||
|
if (installedApps.isNotEmpty()) {
|
||||||
|
items(
|
||||||
|
installedApps,
|
||||||
|
key = { it.currentPackageName }
|
||||||
|
) { installedApp ->
|
||||||
|
viewModel.packageInfoMap[installedApp.currentPackageName].let { packageInfo ->
|
||||||
|
ListItem(
|
||||||
|
modifier = Modifier.clickable { onAppClick(installedApp) },
|
||||||
|
leadingContent = {
|
||||||
|
AppIcon(
|
||||||
|
packageInfo,
|
||||||
|
contentDescription = null,
|
||||||
|
Modifier.size(36.dp)
|
||||||
|
)
|
||||||
|
},
|
||||||
|
headlineContent = { AppLabel(packageInfo, defaultText = null) },
|
||||||
|
supportingContent = { Text(installedApp.currentPackageName) }
|
||||||
|
)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
item {
|
||||||
|
Text(
|
||||||
|
text = stringResource(R.string.no_patched_apps_found),
|
||||||
|
style = MaterialTheme.typography.titleLarge
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} ?: item { LoadingIndicator() }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,6 +11,8 @@
|
|||||||
<string name="select_app">Select an app</string>
|
<string name="select_app">Select an app</string>
|
||||||
<string name="select_patches">Select patches</string>
|
<string name="select_patches">Select patches</string>
|
||||||
|
|
||||||
|
<string name="unsupported_architecture_warning">Patching on ARMv7 devices is not yet supported and will most likely fail.</string>
|
||||||
|
|
||||||
<string name="import_">Import</string>
|
<string name="import_">Import</string>
|
||||||
<string name="import_bundle">Import patch bundle</string>
|
<string name="import_bundle">Import patch bundle</string>
|
||||||
<string name="bundle_patches">Bundle patches</string>
|
<string name="bundle_patches">Bundle patches</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user