Skip to content
This repository was archived by the owner on May 4, 2023. It is now read-only.

Commit 147055e

Browse files
committed
Fix installing module depending on now removed ARCH32 variable. (Also clean up code)
1 parent 6b5481e commit 147055e

File tree

5 files changed

+35
-21
lines changed

5 files changed

+35
-21
lines changed

app/src/main/java/com/fox2code/mmm/ActionButtonType.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,9 @@
1515
import com.fox2code.mmm.manager.LocalModuleInfo;
1616
import com.fox2code.mmm.manager.ModuleInfo;
1717
import com.fox2code.mmm.manager.ModuleManager;
18-
import com.fox2code.mmm.utils.Http;
1918
import com.fox2code.mmm.utils.IntentHelper;
2019
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
2120

22-
import java.nio.charset.StandardCharsets;
23-
2421
import io.noties.markwon.Markwon;
2522

2623
public enum ActionButtonType {
@@ -78,7 +75,6 @@ public void doAction(ImageButton button, ModuleHolder moduleHolder) {
7875
builder.setTitle(moduleInfo.name).setCancelable(true)
7976
.setIcon(R.drawable.ic_baseline_extension_24);
8077
CharSequence desc = moduleInfo.description;
81-
final boolean noPatch;
8278
if (moduleInfo instanceof LocalModuleInfo) {
8379
LocalModuleInfo localModuleInfo = (LocalModuleInfo) moduleInfo;
8480
if (!localModuleInfo.updateChangeLog.isEmpty()) {

app/src/main/java/com/fox2code/mmm/MainApplication.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import android.app.Application;
55
import android.content.Intent;
66
import android.content.SharedPreferences;
7-
import android.content.pm.ApplicationInfo;
87
import android.content.res.Configuration;
98
import android.content.res.Resources;
109
import android.graphics.Color;
@@ -26,12 +25,9 @@
2625
import com.topjohnwu.superuser.Shell;
2726

2827
import java.text.SimpleDateFormat;
29-
import java.util.Arrays;
3028
import java.util.Date;
31-
import java.util.HashSet;
3229
import java.util.Locale;
3330
import java.util.Random;
34-
import java.util.Set;
3531

3632
import io.noties.markwon.Markwon;
3733
import io.noties.markwon.html.HtmlPlugin;

app/src/main/java/com/fox2code/mmm/installer/InstallerActivity.java

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.content.res.Resources;
66
import android.graphics.Color;
77
import android.graphics.drawable.ColorDrawable;
8+
import android.os.Build;
89
import android.os.Bundle;
910
import android.util.Log;
1011
import android.view.KeyEvent;
@@ -37,6 +38,7 @@
3738
import java.io.IOException;
3839
import java.io.OutputStream;
3940
import java.util.zip.ZipEntry;
41+
import java.util.zip.ZipFile;
4042
import java.util.zip.ZipInputStream;
4143

4244
public class InstallerActivity extends CompatActivity {
@@ -87,8 +89,8 @@ protected void onCreate(Bundle savedInstanceState) {
8789
boolean urlMode = target.startsWith("http://") || target.startsWith("https://");
8890
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
8991
setTitle(name);
90-
setContentView((this.textWrap =
91-
MainApplication.isTextWrapEnabled()) ?
92+
this.textWrap = MainApplication.isTextWrapEnabled();
93+
setContentView(this.textWrap ?
9294
R.layout.installer_wrap :R.layout.installer);
9395
int background;
9496
int foreground;
@@ -252,6 +254,30 @@ private void doInstall(File file,boolean noExtensions,boolean rootless) {
252254
" /dev/null 1 \"" + file.getAbsolutePath() + "\"")
253255
.to(installerController, installerMonitor);
254256
} else {
257+
String arch32 = "true"; // Do nothing by default
258+
if (Build.SUPPORTED_32_BIT_ABIS.length == 0) {
259+
boolean needs32bit = false;
260+
try (ZipFile zipFile = new ZipFile(file)) {
261+
if (zipFile.getEntry( // Check if module hard require 32bit support
262+
"common/addon/Volume-Key-Selector/tools/arm64/keycheck") == null &&
263+
zipFile.getEntry(
264+
"common/addon/Volume-Key-Selector/install.sh") != null) {
265+
needs32bit = true;
266+
}
267+
} catch (IOException ignored) {}
268+
if (needs32bit) {
269+
this.setInstallStateFinished(false,
270+
"! This module can't be installed on a 64bit only system",
271+
null);
272+
return;
273+
}
274+
} else {
275+
// Restore Magisk legacy stuff for retro compatibility
276+
if (Build.SUPPORTED_32_BIT_ABIS[0].contains("arm"))
277+
arch32 = "export ARCH32=arm";
278+
if (Build.SUPPORTED_32_BIT_ABIS[0].contains("x86"))
279+
arch32 = "export ARCH32=x86";
280+
}
255281
String installCommand;
256282
File installExecutable;
257283
if (InstallerInitializer.peekMagiskVersion() >=
@@ -272,11 +298,11 @@ private void doInstall(File file,boolean noExtensions,boolean rootless) {
272298
}
273299
installerMonitor = new InstallerMonitor(installExecutable);
274300
if (noExtensions) {
275-
installJob = Shell.su( // No Extensions
301+
installJob = Shell.su(arch32, // No Extensions
276302
"cd \"" + this.moduleCache.getAbsolutePath() + "\"",
277303
installCommand).to(installerController, installerMonitor);
278304
} else {
279-
installJob = Shell.su("export MMM_EXT_SUPPORT=1",
305+
installJob = Shell.su(arch32, "export MMM_EXT_SUPPORT=1",
280306
"export MMM_USER_LANGUAGE=" + (MainApplication.isForceEnglish() ?
281307
"en-US" : Resources.getSystem()
282308
.getConfiguration().locale.toLanguageTag()),
@@ -428,12 +454,14 @@ public boolean dispatchKeyEvent(KeyEvent event) {
428454

429455
public static class InstallerMonitor extends CallbackList<String> {
430456
private static final String DEFAULT_ERR = "! Install failed";
431-
private final String installScriptPath;
457+
private final String installScriptErr;
432458
public String lastCommand = "";
433459

434460
public InstallerMonitor(File installScript) {
435461
super(Runnable::run);
436-
this.installScriptPath = installScript.getAbsolutePath();
462+
this.installScriptErr =
463+
installScript.getAbsolutePath() +
464+
": /data/adb/modules_update/";
437465
}
438466

439467
@Override
@@ -443,8 +471,7 @@ public void onAddElement(String s) {
443471
}
444472

445473
private String doCleanUp() {
446-
String installScriptErr =
447-
this.installScriptPath + ": /data/adb/modules_update/";
474+
String installScriptErr = this.installScriptErr;
448475
// This block is mainly to help fixing customize.sh syntax errors
449476
if (this.lastCommand.startsWith(installScriptErr)) {
450477
installScriptErr = this.lastCommand.substring(installScriptErr.length());

app/src/main/java/com/fox2code/mmm/manager/LocalModuleInfo.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
import java.io.IOException;
1212
import java.nio.charset.StandardCharsets;
1313

14-
import io.noties.markwon.Markwon;
15-
1614
public class LocalModuleInfo extends ModuleInfo {
1715
public String updateVersion;
1816
public long updateVersionCode = Long.MIN_VALUE;

app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,12 @@
33
import android.os.Bundle;
44
import android.widget.Toast;
55

6-
import androidx.annotation.NonNull;
76
import androidx.annotation.StringRes;
87
import androidx.fragment.app.Fragment;
98
import androidx.fragment.app.FragmentTransaction;
109
import androidx.preference.ListPreference;
1110
import androidx.preference.Preference;
1211
import androidx.preference.PreferenceFragmentCompat;
13-
import androidx.preference.SwitchPreference;
14-
import androidx.preference.SwitchPreferenceCompat;
1512

1613
import com.fox2code.mmm.AppUpdateManager;
1714
import com.fox2code.mmm.BuildConfig;

0 commit comments

Comments
 (0)