feat: Support patching on ARMv7a

Signed-off-by: validcube <pun.butrach@gmail.com>
This commit is contained in:
validcube 2024-07-29 23:28:25 +07:00
parent 65feb34242
commit a7663524e6
No known key found for this signature in database
GPG key ID: DBA94253E1D3F267
5 changed files with 8 additions and 11 deletions

View file

@ -54,7 +54,7 @@
"patcherView": {
"widgetTitle": "Patcher",
"patchButton": "Patch",
"armv7WarningDialogText": "Patching on ARMv7 devices is not yet supported and might fail. Continue anyways?",
"incompatibleArchWarningDialogText": "Patching on this architecture is not yet supported and might fail. Continue anyways?",
"removedPatchesWarningDialogText": "The following patches have been removed since the last time you used them.\n\n${patches}\n\nContinue anyways?",
"requiredOptionDialogText": "Some patch options have to be set."
},

View file

@ -5,9 +5,6 @@ To use ReVanced Manager, you need to fulfill certain requirements.
## 🤝 Requirements
- An Android device running Android 8 or higher
- Any device architecture except ARMv7[^1]
[^1]: Patching on ARMv7 is limited to bytecode patching but may work in certain circumstances for resource patching. You can check your device architecture in ReVanced Manager settings.
## ⏭️ What's next

View file

@ -27,7 +27,7 @@ class PatcherView extends StatelessWidget {
if (model.checkRequiredPatchOption(context)) {
final bool proceed = model.showRemovedPatchesDialog(context);
if (proceed && context.mounted) {
model.showArmv7WarningDialog(context);
model.showIncompatibleArchWarningDialog(context);
}
}
},

View file

@ -70,7 +70,7 @@ class PatcherViewModel extends BaseViewModel {
FilledButton(
onPressed: () {
Navigator.of(context).pop();
showArmv7WarningDialog(context);
showIncompatibleArchWarningDialog(context);
},
child: Text(t.yesButton),
),
@ -116,18 +116,18 @@ class PatcherViewModel extends BaseViewModel {
);
}
Future<void> showArmv7WarningDialog(BuildContext context) async {
final bool armv7 = await AboutInfo.getInfo().then((info) {
Future<void> showIncompatibleArchWarningDialog(BuildContext context) async {
final bool notSupported = await AboutInfo.getInfo().then((info) {
final List<String> archs = info['supportedArch'];
final supportedAbis = ['arm64-v8a', 'x86', 'x86_64'];
final supportedAbis = ['arm64-v8a', 'x86', 'x86_64', 'arm-v7a'];
return !archs.any((arch) => supportedAbis.contains(arch));
});
if (context.mounted && armv7) {
if (context.mounted && notSupported) {
return showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text(t.warning),
content: Text(t.patcherView.armv7WarningDialogText),
content: Text(t.patcherView.incompatibleArchWarningDialogText),
actions: <Widget>[
FilledButton(
onPressed: () => Navigator.of(context).pop(),