Fix installing module depending on now removed `ARCH32` variable. (Also clean up code)

pull/78/head
Fox2Code 2 years ago
parent 6b5481e595
commit 147055e4a9

@ -15,12 +15,9 @@ import com.fox2code.mmm.installer.InstallerInitializer;
import com.fox2code.mmm.manager.LocalModuleInfo;
import com.fox2code.mmm.manager.ModuleInfo;
import com.fox2code.mmm.manager.ModuleManager;
import com.fox2code.mmm.utils.Http;
import com.fox2code.mmm.utils.IntentHelper;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.nio.charset.StandardCharsets;
import io.noties.markwon.Markwon;
public enum ActionButtonType {
@ -78,7 +75,6 @@ public enum ActionButtonType {
builder.setTitle(moduleInfo.name).setCancelable(true)
.setIcon(R.drawable.ic_baseline_extension_24);
CharSequence desc = moduleInfo.description;
final boolean noPatch;
if (moduleInfo instanceof LocalModuleInfo) {
LocalModuleInfo localModuleInfo = (LocalModuleInfo) moduleInfo;
if (!localModuleInfo.updateChangeLog.isEmpty()) {

@ -4,7 +4,6 @@ import android.annotation.SuppressLint;
import android.app.Application;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Color;
@ -26,12 +25,9 @@ import com.fox2code.mmm.utils.Http;
import com.topjohnwu.superuser.Shell;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.Locale;
import java.util.Random;
import java.util.Set;
import io.noties.markwon.Markwon;
import io.noties.markwon.html.HtmlPlugin;

@ -5,6 +5,7 @@ import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
@ -37,6 +38,7 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
public class InstallerActivity extends CompatActivity {
@ -87,8 +89,8 @@ public class InstallerActivity extends CompatActivity {
boolean urlMode = target.startsWith("http://") || target.startsWith("https://");
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setTitle(name);
setContentView((this.textWrap =
MainApplication.isTextWrapEnabled()) ?
this.textWrap = MainApplication.isTextWrapEnabled();
setContentView(this.textWrap ?
R.layout.installer_wrap :R.layout.installer);
int background;
int foreground;
@ -252,6 +254,30 @@ public class InstallerActivity extends CompatActivity {
" /dev/null 1 \"" + file.getAbsolutePath() + "\"")
.to(installerController, installerMonitor);
} else {
String arch32 = "true"; // Do nothing by default
if (Build.SUPPORTED_32_BIT_ABIS.length == 0) {
boolean needs32bit = false;
try (ZipFile zipFile = new ZipFile(file)) {
if (zipFile.getEntry( // Check if module hard require 32bit support
"common/addon/Volume-Key-Selector/tools/arm64/keycheck") == null &&
zipFile.getEntry(
"common/addon/Volume-Key-Selector/install.sh") != null) {
needs32bit = true;
}
} catch (IOException ignored) {}
if (needs32bit) {
this.setInstallStateFinished(false,
"! This module can't be installed on a 64bit only system",
null);
return;
}
} else {
// Restore Magisk legacy stuff for retro compatibility
if (Build.SUPPORTED_32_BIT_ABIS[0].contains("arm"))
arch32 = "export ARCH32=arm";
if (Build.SUPPORTED_32_BIT_ABIS[0].contains("x86"))
arch32 = "export ARCH32=x86";
}
String installCommand;
File installExecutable;
if (InstallerInitializer.peekMagiskVersion() >=
@ -272,11 +298,11 @@ public class InstallerActivity extends CompatActivity {
}
installerMonitor = new InstallerMonitor(installExecutable);
if (noExtensions) {
installJob = Shell.su( // No Extensions
installJob = Shell.su(arch32, // No Extensions
"cd \"" + this.moduleCache.getAbsolutePath() + "\"",
installCommand).to(installerController, installerMonitor);
} else {
installJob = Shell.su("export MMM_EXT_SUPPORT=1",
installJob = Shell.su(arch32, "export MMM_EXT_SUPPORT=1",
"export MMM_USER_LANGUAGE=" + (MainApplication.isForceEnglish() ?
"en-US" : Resources.getSystem()
.getConfiguration().locale.toLanguageTag()),
@ -428,12 +454,14 @@ public class InstallerActivity extends CompatActivity {
public static class InstallerMonitor extends CallbackList<String> {
private static final String DEFAULT_ERR = "! Install failed";
private final String installScriptPath;
private final String installScriptErr;
public String lastCommand = "";
public InstallerMonitor(File installScript) {
super(Runnable::run);
this.installScriptPath = installScript.getAbsolutePath();
this.installScriptErr =
installScript.getAbsolutePath() +
": /data/adb/modules_update/";
}
@Override
@ -443,8 +471,7 @@ public class InstallerActivity extends CompatActivity {
}
private String doCleanUp() {
String installScriptErr =
this.installScriptPath + ": /data/adb/modules_update/";
String installScriptErr = this.installScriptErr;
// This block is mainly to help fixing customize.sh syntax errors
if (this.lastCommand.startsWith(installScriptErr)) {
installScriptErr = this.lastCommand.substring(installScriptErr.length());

@ -11,8 +11,6 @@ import org.json.JSONObject;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import io.noties.markwon.Markwon;
public class LocalModuleInfo extends ModuleInfo {
public String updateVersion;
public long updateVersionCode = Long.MIN_VALUE;

@ -3,15 +3,12 @@ package com.fox2code.mmm.settings;
import android.os.Bundle;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentTransaction;
import androidx.preference.ListPreference;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.SwitchPreference;
import androidx.preference.SwitchPreferenceCompat;
import com.fox2code.mmm.AppUpdateManager;
import com.fox2code.mmm.BuildConfig;

Loading…
Cancel
Save