mirror of
https://github.com/topjohnwu/Magisk
synced 2024-11-13 20:54:12 +01:00
New uninstallation method
This commit is contained in:
parent
c8f65fc9a1
commit
e86015badc
2
.gitignore
vendored
2
.gitignore
vendored
@ -6,7 +6,7 @@
|
||||
app/release
|
||||
*.hprof
|
||||
.externalNativeBuild/
|
||||
src/full/assets
|
||||
src/full/res/raw/util_functions.sh
|
||||
public.certificate.x509.pem
|
||||
private.key.pk8
|
||||
*.apk
|
||||
|
@ -27,7 +27,7 @@ android {
|
||||
|
||||
productFlavors {
|
||||
full {
|
||||
versionCode 121
|
||||
versionCode 122
|
||||
versionName "5.7.0"
|
||||
}
|
||||
stub {
|
||||
|
@ -3,6 +3,7 @@ package com.topjohnwu.magisk;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.support.v7.app.ActionBar;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.text.TextUtils;
|
||||
@ -17,6 +18,7 @@ import com.topjohnwu.magisk.asyncs.FlashZip;
|
||||
import com.topjohnwu.magisk.asyncs.InstallMagisk;
|
||||
import com.topjohnwu.magisk.components.Activity;
|
||||
import com.topjohnwu.magisk.utils.Const;
|
||||
import com.topjohnwu.magisk.utils.RootUtils;
|
||||
import com.topjohnwu.superuser.CallbackList;
|
||||
import com.topjohnwu.superuser.Shell;
|
||||
|
||||
@ -113,6 +115,9 @@ public class FlashActivity extends Activity {
|
||||
case Const.Value.FLASH_ZIP:
|
||||
new FlashZip(this, uri, console, logs).exec();
|
||||
break;
|
||||
case Const.Value.UNINSTALL:
|
||||
new UninstallMagisk(this, uri, console, logs).exec();
|
||||
break;
|
||||
case Const.Value.FLASH_MAGISK:
|
||||
new InstallMagisk(this, console, logs, uri, InstallMagisk.DIRECT_MODE).exec();
|
||||
break;
|
||||
@ -130,4 +135,21 @@ public class FlashActivity extends Activity {
|
||||
public void onBackPressed() {
|
||||
// Prevent user accidentally press back button
|
||||
}
|
||||
|
||||
private static class UninstallMagisk extends FlashZip {
|
||||
|
||||
private UninstallMagisk(Activity context, Uri uri, List<String> console, List<String> logs) {
|
||||
super(context, uri, console, logs);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Integer result) {
|
||||
if (result == 1) {
|
||||
new Handler().postDelayed(() ->
|
||||
RootUtils.uninstallPkg(getActivity().getPackageName()), 3000);
|
||||
} else {
|
||||
super.onPostExecute(result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -54,11 +54,14 @@ public class MagiskManager extends Application implements Shell.Container {
|
||||
public int magiskVersionCode = -1;
|
||||
public String remoteMagiskVersionString;
|
||||
public int remoteMagiskVersionCode = -1;
|
||||
public String magiskLink;
|
||||
public String releaseNoteLink;
|
||||
public String remoteManagerVersionString;
|
||||
public int remoteManagerVersionCode = -1;
|
||||
|
||||
public String magiskLink;
|
||||
public String releaseNoteLink;
|
||||
public String managerLink;
|
||||
public String uninstallerLink;
|
||||
|
||||
public boolean keepVerity = false;
|
||||
public boolean keepEnc = false;
|
||||
|
||||
|
@ -47,6 +47,8 @@ public class CheckUpdates extends ParallelTask<Void, Void, Void> {
|
||||
mm.remoteManagerVersionString = manager.getString("version");
|
||||
mm.remoteManagerVersionCode = manager.getInt("versionCode");
|
||||
mm.managerLink = manager.getString("link");
|
||||
JSONObject uninstaller = json.getJSONObject("uninstaller");
|
||||
mm.uninstallerLink = uninstaller.getString("link");
|
||||
} catch (JSONException ignored) {}
|
||||
return null;
|
||||
}
|
||||
|
@ -40,8 +40,7 @@ public class FlashZip extends ParallelTask<Void, Void, Integer> {
|
||||
|
||||
private boolean unzipAndCheck() throws Exception {
|
||||
ZipUtils.unzip(mCachedFile, mCachedFile.getParentFile(), "META-INF/com/google/android", true);
|
||||
String s = ShellUtils.fastCmd("head -n 1 " + new File(mCachedFile.getParentFile(), "updater-script"));
|
||||
return s != null && s.contains("#MAGISK");
|
||||
return ShellUtils.fastCmdResult("grep -q '#MAGISK' " + new File(mCachedFile.getParentFile(), "updater-script"));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -26,7 +26,6 @@ import org.kamranzafar.jtar.TarOutputStream;
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
@ -73,8 +72,8 @@ public class InstallMagisk extends ParallelTask<Void, Void, Boolean> {
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
if (mode == FIX_ENV_MODE) {
|
||||
dialog = ProgressDialog.show(getActivity(),
|
||||
"Additional Setup", "Running environment setup...");
|
||||
Activity a = getActivity();
|
||||
dialog = ProgressDialog.show(a, a.getString(R.string.setup_title), a.getString(R.string.setup_msg));
|
||||
console = new NOPList<>();
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package com.topjohnwu.magisk.asyncs;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.ProgressDialog;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.topjohnwu.magisk.MagiskManager;
|
||||
@ -8,22 +10,26 @@ import com.topjohnwu.superuser.ShellUtils;
|
||||
|
||||
public class RestoreImages extends ParallelTask<Void, Void, Boolean> {
|
||||
|
||||
private ProgressDialog dialog;
|
||||
|
||||
public RestoreImages(Activity activity) {
|
||||
super(activity);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
Activity a = getActivity();
|
||||
dialog = ProgressDialog.show(a, a.getString(R.string.restore_img_title), a.getString(R.string.restore_img_msg));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Boolean doInBackground(Void... voids) {
|
||||
String sha1;
|
||||
sha1 = ShellUtils.fastCmd("cat /.backup/.sha1");
|
||||
if (sha1 == null) {
|
||||
sha1 = ShellUtils.fastCmd("cat /init.magisk.rc | grep STOCKSHA1");
|
||||
if (sha1 == null)
|
||||
return false;
|
||||
sha1 = sha1.substring(sha1.indexOf('=') + 1);
|
||||
}
|
||||
|
||||
return ShellUtils.fastCmdResult("restore_imgs " + sha1);
|
||||
return ShellUtils.fastCmdResult("restore_imgs");
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Boolean result) {
|
||||
dialog.cancel();
|
||||
if (result) {
|
||||
MagiskManager.toast(R.string.restore_done, Toast.LENGTH_SHORT);
|
||||
} else {
|
||||
|
@ -15,7 +15,7 @@ public class ShellInitializer extends Shell.Initializer {
|
||||
@Override
|
||||
public boolean onRootShellInit(Context context, @NonNull Shell shell) throws Exception {
|
||||
BusyBox.BB_PATH = new File(Const.BUSYBOX_PATH);
|
||||
try (InputStream magiskUtils = context.getAssets().open(Const.UTIL_FUNCTIONS);
|
||||
try (InputStream magiskUtils = context.getResources().openRawResource(R.raw.util_functions);
|
||||
InputStream managerUtils = context.getResources().openRawResource(R.raw.utils)
|
||||
) {
|
||||
shell.loadInputStream(null, null, magiskUtils);
|
||||
|
@ -7,10 +7,10 @@ import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.support.v4.app.NotificationCompat;
|
||||
import android.support.v4.app.TaskStackBuilder;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.text.TextUtils;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.topjohnwu.magisk.FlashActivity;
|
||||
@ -27,9 +27,6 @@ import com.topjohnwu.magisk.receivers.RebootReceiver;
|
||||
import com.topjohnwu.superuser.Shell;
|
||||
import com.topjohnwu.superuser.ShellUtils;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -249,40 +246,23 @@ public class ShowUI {
|
||||
|
||||
public static void uninstallDialog(Activity activity) {
|
||||
MagiskManager mm = Utils.getMagiskManager(activity);
|
||||
new AlertDialogBuilder(activity)
|
||||
AlertDialog.Builder b = new AlertDialogBuilder(activity)
|
||||
.setTitle(R.string.uninstall_magisk_title)
|
||||
.setMessage(R.string.uninstall_magisk_msg)
|
||||
.setPositiveButton(R.string.complete_uninstall, (d, i) -> {
|
||||
ByteArrayOutputStream uninstaller = new ByteArrayOutputStream();
|
||||
try (InputStream in = mm.getAssets().open(Const.UNINSTALLER)) {
|
||||
ShellUtils.pump(in, uninstaller);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return;
|
||||
}
|
||||
ByteArrayOutputStream utils = new ByteArrayOutputStream();
|
||||
try (InputStream in = mm.getAssets().open(Const.UTIL_FUNCTIONS)) {
|
||||
ShellUtils.pump(in, utils);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
return;
|
||||
}
|
||||
|
||||
Shell.Sync.su(
|
||||
Utils.fmt("echo '%s' > /cache/%s", uninstaller.toString().replace("'", "'\\''"), Const.UNINSTALLER),
|
||||
Utils.fmt("echo '%s' > %s/%s", utils.toString().replace("'", "'\\''"),
|
||||
mm.magiskVersionCode >= Const.MAGISK_VER.HIDDEN_PATH ? "/data/adb/magisk" : "/data/magisk", Const.UTIL_FUNCTIONS)
|
||||
);
|
||||
try {
|
||||
uninstaller.close();
|
||||
utils.close();
|
||||
} catch (IOException ignored) {}
|
||||
|
||||
MagiskManager.toast(R.string.uninstall_toast, Toast.LENGTH_LONG);
|
||||
new Handler().postDelayed(() -> RootUtils.uninstallPkg(mm.getPackageName()), 5000);
|
||||
})
|
||||
.setNeutralButton(R.string.restore_img, (d, i) -> new RestoreImages().exec())
|
||||
.setNegativeButton(R.string.uninstall_app, (d, i) -> RootUtils.uninstallPkg(mm.getPackageName()))
|
||||
.show();
|
||||
.setNeutralButton(R.string.restore_img, (d, i) -> new RestoreImages(activity).exec());
|
||||
if (!TextUtils.isEmpty(mm.uninstallerLink)) {
|
||||
b.setPositiveButton(R.string.complete_uninstall, (d, i) ->
|
||||
Utils.dlAndReceive(activity, new DownloadReceiver() {
|
||||
@Override
|
||||
public void onDownloadDone(Context context, Uri uri) {
|
||||
Intent intent = new Intent(context, FlashActivity.class)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
.setData(uri)
|
||||
.putExtra(Const.Key.FLASH_ACTION, Const.Value.UNINSTALL);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
}, mm.uninstallerLink, "magisk-uninstaller.zip"));
|
||||
}
|
||||
b.show();
|
||||
}
|
||||
}
|
||||
|
@ -52,3 +52,25 @@ mm_patch_dtbo() {
|
||||
patch_dtbo_image >/dev/null 2>&1 && echo true || echo false
|
||||
fi
|
||||
}
|
||||
|
||||
restore_imgs() {
|
||||
SHA1=`cat /.backup/.sha1`
|
||||
[ -z $SHA1 ] && SHA1=`grep_prop #STOCKSHA1`
|
||||
[ -z $SHA1 ] && return 1
|
||||
STOCKBOOT=/data/stock_boot_${SHA1}.img.gz
|
||||
STOCKDTBO=/data/stock_dtbo.img.gz
|
||||
[ -f $STOCKBOOT ] || return 1
|
||||
|
||||
find_boot_image
|
||||
find_dtbo_image
|
||||
|
||||
magisk --unlock-blocks 2>/dev/null
|
||||
if [ -b "$DTBOIMAGE" -a -f $STOCKDTBO ]; then
|
||||
gzip -d < $STOCKDTBO > $DTBOIMAGE
|
||||
fi
|
||||
if [ -b "$BOOTIMAGE" -a -f $STOCKBOOT ]; then
|
||||
gzip -d < $STOCKBOOT | cat - /dev/zero > $BOOTIMAGE 2>/dev/null
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
}
|
||||
|
@ -107,10 +107,8 @@
|
||||
<string name="boot_file_patch_msg">Изберете стоков Boot образ с формат .img или .img.tar</string>
|
||||
<string name="complete_uninstall">Пълно деинсталиране</string>
|
||||
<string name="restore_img">Възстановяване на образи</string>
|
||||
<string name="uninstall_app">Деинсталиране на приложението</string>
|
||||
<string name="restore_done">Възстановяването е успешно!</string>
|
||||
<string name="restore_fail">Не е налице архив на стоковия образ!</string>
|
||||
<string name="uninstall_toast">Деинсталиране на Magisk Manager до 5 секунди, моля по-късно да рестартирате</string>
|
||||
<string name="proprietary_title">Изтегляне на патентования код</string>
|
||||
<string name="proprietary_notice">Magisk Manager е FOSS и затова не включва частния код за SafetyNet ППИ на Google.\n\nПозволявате ли на Magisk Manager да изтегли добавката (включва GoogleApiClient) за SafetyNet проверки?</string>
|
||||
<string name="su_db_corrupt">Базата данни за SU е повредена, ще създадем нов db файл</string>
|
||||
|
@ -110,10 +110,8 @@
|
||||
<string name="boot_file_patch_msg">Selektiere das originale Boot image dump im Format .img oder .img.tar</string>
|
||||
<string name="complete_uninstall">Komplette Deinstallation</string>
|
||||
<string name="restore_img">Stelle Images wieder her</string>
|
||||
<string name="uninstall_app">Deinstalliere die Anwendung</string>
|
||||
<string name="restore_done">Wiederherstellung durchgeführt!</string>
|
||||
<string name="restore_fail">Kein Original Backup vorhanden!</string>
|
||||
<string name="uninstall_toast">Deinstalliere Magisk Manager in 5 Sekunden, bitte im Anschluss manuell neustarten</string>
|
||||
<string name="proprietary_title">Lade proprietären Code herunter</string>
|
||||
<string name="proprietary_notice">Magisk Manager ist FOSS und enthält keinen proprietären SafetyNet API Code von Google. Magisk Manager erlauben eine Erweiterung (enthält GoogleApiClient) für SafetyNet-Checks herunterzuladen?</string>
|
||||
<string name="su_db_corrupt">Datenbank für SU ist fehlerhaft, es wird eine neue erstellt</string>
|
||||
|
@ -108,7 +108,6 @@
|
||||
<string name="complete_uninstall">Πλήρης απεγκατάσταση</string>
|
||||
<string name="restore_done">Η ανάκτηση έγινε!</string>
|
||||
<string name="restore_fail">Δεν υπάρχει αντίγραφο ασφαλείας!</string>
|
||||
<string name="uninstall_toast">Απεγκατάσταση του Magisk Manager σε 5 δευτερόλεπτα, παρακαλώ επανεκκινήστε χειροκίνητα αμέσως μετά</string>
|
||||
<string name="proprietary_title">Λήψη Ιδιόκτητου Κώδικα</string>
|
||||
<string name="proprietary_notice">Το Magisk Manager είναι FOSS οπότε δεν περιέχει της Google τον ιδιόκτητο κώδικα του SafetyNet API.\n\nΕπιτρέπετε στο Magisk Manager να κατεβάσει μια επέκταση (περιέχει το GoogleApiClient) για ελέγχους του SafetyNet?</string>
|
||||
<string name="su_db_corrupt">Η βάση δεδομένων SU είναι κατεστραμμένη, θα αναδημιουργηθεί νέα</string>
|
||||
|
@ -107,10 +107,8 @@
|
||||
<string name="boot_file_patch_msg">Seleccione el volcado de la imagen boot en formato .img o .img.tar</string>
|
||||
<string name="complete_uninstall">Desinstalación completa</string>
|
||||
<string name="restore_img">Restaurar imágenes</string>
|
||||
<string name="uninstall_app">Desinstalar Aplicación</string>
|
||||
<string name="restore_done">¡Restauración Terminada!</string>
|
||||
<string name="restore_fail">¡El respaldo de la imagen boot Stock no existe!</string>
|
||||
<string name="uninstall_toast">Desinstalación de Magisk Manager en 5 segundos, por favor después reinicie manualmente </string>
|
||||
<string name="proprietary_title">Descargar Código Propietario</string>
|
||||
<string name="proprietary_notice">Magisk Manager es un Software Libre por lo que no contiene el código API de SafetyNet (Código Propietario de Google).\n\n ¿Puede permitir que Magisk Manager descargue una extensión (contiene el GoogleApiClient) para la comprobación de SafetyNet?</string>
|
||||
<string name="su_db_corrupt">La base de datos SU está dañada, se creará nueva base de datos</string>
|
||||
|
@ -108,10 +108,8 @@
|
||||
<string name="boot_file_patch_msg">Vali originaalne käivituspildi väljastus .img või .img.tar vormingus</string>
|
||||
<string name="complete_uninstall">Täielik eemaldus</string>
|
||||
<string name="restore_img">Taasta pildid</string>
|
||||
<string name="uninstall_app">Desinstalli rakendus</string>
|
||||
<string name="restore_done">Taastus valmis!</string>
|
||||
<string name="restore_fail">Originaalne varundus puudub!</string>
|
||||
<string name="uninstall_toast">Eemaldan Magisk Manager\'i 5 sekundi pärast, palun tee peale seda käsitsi taaskäivitus</string>
|
||||
<string name="proprietary_title">Laadi alla suletud koodi</string>
|
||||
<string name="proprietary_notice">Magisk Manager on vaba ja avatud lähtekoodiga, mis ei sisalda Google\'i suletud SafetyNet\'i API koodi.\n
|
||||
\n
|
||||
|
@ -106,10 +106,8 @@
|
||||
<string name="boot_file_patch_msg">Sélectionnez l\'image par défaut de démarrage stockée au format .img ou .img.tar</string>
|
||||
<string name="complete_uninstall">Désinstallation terminée</string>
|
||||
<string name="restore_img">Restauration des images</string>
|
||||
<string name="uninstall_app">Désinstallation de l\'application</string>
|
||||
<string name="restore_done">Restauration terminée!</string>
|
||||
<string name="restore_fail">Le sauvegarde par défaut n\'existe pas!</string>
|
||||
<string name="uninstall_toast">Désinstallation du Gestionnaire Magisk dans 5 secondes, merci de redémarrer manuellement après celà</string>
|
||||
<string name="proprietary_title">Télécharger Code Propriétaire</string>
|
||||
<string name="proprietary_notice">Magisk Manager est Libre, il ne contient pas le code API SafetyNet propriétaire de Google. \ N \ nAutorisez vous le Gestionnaire Magisk à télécharger une extension (contenant GoogleApiClient) pour les contrôles SafetyNet? </string>
|
||||
<string name = "su_db_corrupt"> La base de données SU est corrompue, une nouvelle base de donnée va être re-créé</string>
|
||||
|
@ -98,7 +98,6 @@
|
||||
<string name="complete_uninstall">Potpuna deinstalacija</string>
|
||||
<string name="restore_done">Obnova je dovršena!</string>
|
||||
<string name="restore_fail">Stock backup does not exist!</string>
|
||||
<string name="uninstall_toast">Deinstaliranje Magisk Manager aplikacije unutar 5 sekundi, molimo ponovno pokrenite uređaj nakon toga</string>
|
||||
<string name="proprietary_title">Preuzmite vlasnički kod</string>
|
||||
<string name="proprietary_notice">Magisk Manager je FOSS aplikacija te ne sadrži Googleov SafetyNet API kod.\n\nDopuštate li Magisk Manager aplikaciji da preuzme proširenje (sadrži GoogleApiClient) za SafetyNet provjere?</string>
|
||||
|
||||
|
@ -106,11 +106,9 @@
|
||||
<string name="no_boot_file_patch_support">Versi target Magisk tidak mendukung penambalan file boot image</string>
|
||||
<string name="boot_file_patch_msg">Pilih stock boot image dump dalam format .img atau .img.tar</string>
|
||||
<string name="restore_img">Pulihkan Image</string>
|
||||
<string name="uninstall_app">Copot Apl</string>
|
||||
<string name="complete_uninstall">Copot Total</string>
|
||||
<string name="restore_done">Pemulihan selesai!</string>
|
||||
<string name="restore_fail">Cadangan stock tidak ada!</string>
|
||||
<string name="uninstall_toast">Mencopot Magisk Manager dalam 5 detik, silahkan reboot secara manual setelahnya</string>
|
||||
<string name="proprietary_title">Unduh Kode Proprieter</string>
|
||||
<string name="proprietary_notice">Magisk Manager adalah aplikasi FOSS, yang tidak menyertakan kode API proprieter Google SafetyNet.\n\nApakah Anda mengizinkan Magisk Manager untuk mengunduh sebuah ekstensi (berisi GoogleApiClient) untuk pemeriksaan SafetyNet?</string>
|
||||
<string name="su_db_corrupt">Database SU rusak, akan membuat db baru</string>
|
||||
|
@ -107,11 +107,9 @@
|
||||
<string name="boot_file_patch_msg">Seleziona l\'immagine originale di boot in formato .img o img.tar</string>
|
||||
<string name="complete_uninstall">Disinstallazione completa</string>
|
||||
<string name="restore_img">Ripristina Immagini</string>
|
||||
<string name="uninstall_app">Disinstalla App</string>
|
||||
<string name="restore_done">Ripristino completato!</string>
|
||||
<string name="restore_done">Ripristino completato!</string>
|
||||
<string name="restore_fail">Non esiste un\'immagine originale di boot!</string>
|
||||
<string name="uninstall_toast">Disinstallazione di Magisk Manager in 5 secondi, riavvia manualmente per completare</string>
|
||||
<string name="proprietary_title">Scarica codice proprietario</string>
|
||||
<string name="proprietary_title">Scarica codice proprietario</string>
|
||||
<string name="proprietary_notice">Magisk Manager è FOSS, quindi non contiene codice proprietario delle API Google SafetyNet.\n\nVuoi permettere il download di un\'estensione (che contiene GoogleApiClient) per controllare lo stato di SafetyNet?</string>
|
||||
<string name="su_db_corrupt">Il database SU è corrotto, un nuovo DB verrà ricreato</string>
|
||||
<string name="cannot_check_sn_title">Impossibile controllare SafetyNet</string>
|
||||
|
@ -107,10 +107,8 @@
|
||||
<string name="boot_file_patch_msg">StockのBootイメージ (.img または .img.tar形式) を選択してください</string>
|
||||
<string name="complete_uninstall">完全にアンインストール</string>
|
||||
<string name="restore_img">イメージのリストア</string>
|
||||
<string name="uninstall_app">アプリのアンインストール</string>
|
||||
<string name="restore_done">リストア完了!</string>
|
||||
<string name="restore_fail">Stockのバックアップがありません!</string>
|
||||
<string name="uninstall_toast">5秒以内にMagisk Managerをアンインストールします。手動で再起動してください</string>
|
||||
<string name="proprietary_title">プロプライエタリコードのダウンロード</string>
|
||||
<string name="proprietary_notice">Magisk ManagerはFOSSのため、GoogleのプロプライエタリなSafetyNet APIコードを含んでいません。\n\nMagisk ManagerがSafetyNetチェックのための拡張機能 (GoogleApiClientを含む) をダウンロードすることを許可しますか?</string>
|
||||
<string name="su_db_corrupt">SUデータベースが壊れています。DBを再生成します</string>
|
||||
|
@ -108,10 +108,8 @@
|
||||
<string name="boot_file_patch_msg">Pasirinkti boot failą .img ar .img.tar formate</string>
|
||||
<string name="complete_uninstall">Pilnas pašalinimas</string>
|
||||
<string name="restore_img">Atstatyti boot failą</string>
|
||||
<string name="uninstall_app">Pašalinti programėlę</string>
|
||||
<string name="restore_done">Atstatymas įvykdytas!</string>
|
||||
<string name="restore_fail">Gamyklinis atstatymo failas neegzistuoja!</string>
|
||||
<string name="uninstall_toast">Magisk Manager bus pašalintas po 5 sekundžių, pašalinus perkraukite telefoną</string>
|
||||
<string name="proprietary_title">Atsisiųsti patentuotą kodą</string>
|
||||
<string name="proprietary_notice">Magisk Manager yra FOSS todėl neturi Google patentuoto SafetyNet API kodo.\n\nAr jūs leidžiate Magisk Manager atsisiųsti papildinį (turintį GoogleApiClient) SafetyNet paieškai?</string>
|
||||
<string name="su_db_corrupt">Supervartotojo duomenų bazė yra sugadinta, perkursime naują duomenų bazę</string>
|
||||
|
@ -107,10 +107,8 @@
|
||||
<string name="boot_file_patch_msg">Kies originele boot image-dump in .img- of .img.tar-formaat</string>
|
||||
<string name="complete_uninstall">Compleet deïnstalleren</string>
|
||||
<string name="restore_img">Images herstellen</string>
|
||||
<string name="uninstall_app">App deïnstalleren</string>
|
||||
<string name="restore_done">Herstel voltooid!</string>
|
||||
<string name="restore_fail">Originele back-up bestaat niet!</string>
|
||||
<string name="uninstall_toast">Magisk Manager wordt over 5 seconden verwijderd, hierna handmatig herstarten aub</string>
|
||||
<string name="proprietary_title">Google\'s code downloaden</string>
|
||||
<string name="proprietary_notice">Magisk Manager is FOSS, dus bevat geen SafetyNet API code van Google.\n\nSta je Magisk Manager toe om een extensie te downloaden (bevat GoogleApiClient) voor SafetyNet controles?</string>
|
||||
<string name="su_db_corrupt">SU database is corrupt, nieuwe db maken…</string>
|
||||
|
@ -106,10 +106,8 @@
|
||||
<string name="boot_file_patch_msg">Wybierz stock boot image w formacie .img lub .img.tar</string>
|
||||
<string name="complete_uninstall">Odinstalowywanie Zakończone</string>
|
||||
<string name="restore_img">Przywróć Obraz</string>
|
||||
<string name="uninstall_app">Odinstaluj Aplikację</string>
|
||||
<string name="restore_done">Przywracanie zakończone!</string>
|
||||
<string name="restore_fail">Stock backup nie istnieje!</string>
|
||||
<string name="uninstall_toast">Odinstalowanie Magisk Manager w ciągu 5 sekund, proszę następnie ręcznie ponownie uruchomić urządzenie</string>
|
||||
<string name="proprietary_title">Pobierz Kod</string>
|
||||
<string name="proprietary_notice">Magisk Manager to FOSS, więc nie zawiera zastrzeżonego kodu API SafetyNet. \n\nCzy zezwolić Magisk Managerowi na pobranie rozszerzenia (zawierającego GoogleApiClient) do sprawdzenia SafetyNet?</string>
|
||||
<string name="su_db_corrupt">Baza danych SU jest uszkodzona, odtworzy nową bazę danych</string>
|
||||
|
@ -107,10 +107,8 @@
|
||||
<string name="boot_file_patch_msg">Selecionar depósito de imagem de inicialização de fábrica no formato .img ou .img.tar</string>
|
||||
<string name="complete_uninstall">Completar Desinstalação</string>
|
||||
<string name="restore_img">Restaurar Imagens</string>
|
||||
<string name="uninstall_app">Desinstalar App</string>
|
||||
<string name="restore_done">Restauração concluída!</string>
|
||||
<string name="restore_fail">Backup de fábrica não existe!</string>
|
||||
<string name="uninstall_toast">Desinstalando Magisk Manager em 5 segundos, manualmente reinicie logo após</string>
|
||||
<string name="proprietary_title">Baixar Código de Propriedade</string>
|
||||
<string name="proprietary_notice">Magisk Manager é FOSS, que não contém o código de propriedade de SafetyNet API da Google.\n\nPermitir ao Magisk Manager baixar uma extensão (que contém a GoogleApiClient) para verificação de SafetyNet?</string>
|
||||
<string name="su_db_corrupt">Banco de dados do SU está corrompido, será recriado novo db</string>
|
||||
|
@ -102,7 +102,6 @@
|
||||
<string name="complete_uninstall">Dezinstalare totală</string>
|
||||
<string name="restore_done">Restabilire finalizată!</string>
|
||||
<string name="restore_fail">Backup stoc nu există!</string>
|
||||
<string name="uninstall_toast">Dezinstalare Magisk Manager în 5 secunde, ulterior reporniți manual</string>
|
||||
<string name="proprietary_title">Descărcare cod proprietar</string>
|
||||
<string name="proprietary_notice">Magisk Manager este FOSS așa că nu conține codul API SafetyNet de la Google.\n\nPermiteți ca Magisk Manager să descarce o extensie (conține GoogleApiClient) pentru verificările SafetyNet?</string>
|
||||
<string name="su_db_corrupt">Baza de date SU este defectă, va fi creată o bază nouă</string>
|
||||
|
@ -107,10 +107,8 @@
|
||||
<string name="boot_file_patch_msg">Выберите файл ядра (boot), *.img либо *.img.tar формата</string>
|
||||
<string name="complete_uninstall">Полное удаление</string>
|
||||
<string name="restore_img">Восстановить разделы</string>
|
||||
<string name="uninstall_app">Удалить приложение</string>
|
||||
<string name="restore_done">Восстановление завершено!</string>
|
||||
<string name="restore_fail">Резервная копия отсутствует!</string>
|
||||
<string name="uninstall_toast">Удаление Magisk Manager в течении 5 секунд. Перезагрузите устройство.</string>
|
||||
<string name="proprietary_title">Загрузка SafetyNet</string>
|
||||
<string name="proprietary_notice">Magisk Manager — свободно распространяемый продукт, он не содержит собственный код SafetyNet API от Google.\n\nРазрешить Magisk Manager загрузить расширение (содержит GoogleApiClient) для проверки SafetyNet?</string>
|
||||
<string name="su_db_corrupt">База данных SU повреждена, будет создана новая</string>
|
||||
|
@ -101,7 +101,6 @@
|
||||
<string name="complete_uninstall">Комплетна Унинсталација</string>
|
||||
<string name="restore_done">Повратак успешан!</string>
|
||||
<string name="restore_fail">Фабрички бекап не постоји!</string>
|
||||
<string name="uninstall_toast">Уклањање Магиск Менаџера за 5 секунди, молим вас да ручно рестартујете телефон</string>
|
||||
<string name="proprietary_title">Преузми Власнички Код</string>
|
||||
<string name="proprietary_notice">Магиск Менаџер је \'FOSS\' што значи да не садржи Гуглов власнички код од СигурнаМрежа АПИ.\n\nДа ли дозвољавате да Магиск Менаџер преузме додатак (садржи GoogleApiClient) за СигурнаМрежа провере?</string>
|
||||
<string name="su_db_corrupt">СК база података оштећена, креирам нову</string>
|
||||
|
@ -106,10 +106,8 @@
|
||||
<string name="boot_file_patch_msg">.img veya .img.tar formatında stok önyükleme imajını seçin</string>
|
||||
<string name="complete_uninstall">Tamamen Kaldır</string>
|
||||
<string name="restore_img">Önyükleme İmajını Geri Yükle</string>
|
||||
<string name="uninstall_app">Uygulamayı Kaldır</string>
|
||||
<string name="restore_done">Yenileme tamamlandı!</string>
|
||||
<string name="restore_fail">Stok önyükleme yedeği yok!</string>
|
||||
<string name="uninstall_toast">Magisk Manager\'ı 5 saniye içinde kaldırdıktan sonra lütfen daha sonra elle yeniden başlatın</string>
|
||||
<string name="proprietary_title">Tescil Kodunu İndirin</string>
|
||||
<string name="proprietary_notice">Magisk Yöneticisi, FOSS olduğundan Google\'ın tescilli olduğu SafetyNet API kodunu içermez.\n\nMagisk Manager\'ın SafetyNet kontrolü için bir uzantıyı (GoogleApiClient içeriyor) indirmesine izin veriyor musunuz?</string>
|
||||
<string name="su_db_corrupt">SU veritabanı bozuk, yeni db oluşturacak</string>
|
||||
|
@ -106,10 +106,8 @@
|
||||
<string name="boot_file_patch_msg">Виберіть оригінальний дамп boot образу в форматі .img чи .img.tar</string>
|
||||
<string name="complete_uninstall">Видалення виконано</string>
|
||||
<string name="restore_img">Відновити образ</string>
|
||||
<string name="uninstall_app">Видалити додаток</string>
|
||||
<string name="restore_done">Відновлення завершено!</string>
|
||||
<string name="restore_fail">Немає резервної копії оригінального boot образу</string>
|
||||
<string name="uninstall_toast">Видалення Magisk Manager протягом 5 секунд, потім, будь ласка, вручну перезавантажте пристрій</string>
|
||||
<string name="proprietary_title">Завантажити пропрієтарний код</string>
|
||||
<string name="proprietary_notice">Magisk Manager — це безкоштовний додаток з відкритим вихідним кодом, тому він не містить пропрієтарний код API SafetyNet від компанії Google.\n\nДозволити Magisk Manager завантажити розширення (яке містить GoogleApiClient) для перевірки SafetyNet?</string>
|
||||
<string name="su_db_corrupt">База даних SU пошкоджена, буде створено нову БД</string>
|
||||
|
@ -107,10 +107,8 @@
|
||||
<string name="boot_file_patch_msg">选择原厂 Boot 镜像备份;支持 .img 以及 .img.tar 格式</string>
|
||||
<string name="complete_uninstall">完全卸载</string>
|
||||
<string name="restore_img">还原原厂镜像</string>
|
||||
<string name="uninstall_app">卸载应用</string>
|
||||
<string name="restore_done">还原完成!</string>
|
||||
<string name="restore_fail">原厂 Boot 镜像备份不存在!</string>
|
||||
<string name="uninstall_toast">将在 5 秒内卸载 Magisk Manager,接下来请手动重新启动</string>
|
||||
<string name="proprietary_title">下载专有代码</string>
|
||||
<string name="proprietary_notice">Magisk Manager 是一个 100% 开源的应用,因此不会包含 Google 专有的 SafetyNet API 代码。\n\n允许 Magisk Manager 下载一个扩展(包含 GoogleApiClient)用于 SafetyNet 检查吗?</string>
|
||||
<string name="su_db_corrupt">SU 数据库已损坏,将重新创建数据库</string>
|
||||
|
@ -182,7 +182,6 @@
|
||||
<string name="restore_fail">原廠 boot 映像備份不存在!</string>
|
||||
<string name="boot_file_patch_msg">選擇原廠 boot 映像備份;支援 .img 以及 .img.tar 格式</string>
|
||||
<string name="install_second_slot">安裝到第二分區 (安裝完OTA後)</string>
|
||||
<string name="uninstall_toast">將在 5 秒內解除安裝 Magisk Manager,接下來請手動重新啟動</string>
|
||||
<string name="safetyNet_api_error">SafetyNet API 錯誤</string>
|
||||
<string name="proprietary_title">下載非開源程式</string>
|
||||
<string name="proprietary_notice">Magisk Manager 是一個 100% 開源的程式,因此不會包含 Google 私有所有權的 SafetyNet API 程式碼。\n\n你允許 Magisk Manager 下載一個擴充包 (包含 GoogleApiClient) 以執行 SafetyNet 檢查嗎?</string>
|
||||
@ -198,7 +197,6 @@
|
||||
<string name="reboot_bootloader">重啟到 Bootloader</string>
|
||||
<string name="reboot_download">重啟到 Download</string>
|
||||
<string name="android_o_not_support">不支援 Android 8.0+</string>
|
||||
<string name="uninstall_app">解除安裝應用程式</string>
|
||||
<string name="restore_img">還原原廠映像檔</string>
|
||||
<string name="updated_on">更新於:%1$s</string>
|
||||
<string name="sorting_order">排序方式</string>
|
||||
|
@ -106,10 +106,10 @@
|
||||
<string name="boot_file_patch_msg">Select stock boot image dump in .img or .img.tar format</string>
|
||||
<string name="complete_uninstall">Complete Uninstall</string>
|
||||
<string name="restore_img">Restore Images</string>
|
||||
<string name="uninstall_app">Uninstall App</string>
|
||||
<string name="restore_img_title">Restoring Images</string>
|
||||
<string name="restore_img_msg">Restoring…</string>
|
||||
<string name="restore_done">Restoration done!</string>
|
||||
<string name="restore_fail">Stock backup does not exist!</string>
|
||||
<string name="uninstall_toast">Uninstalling Magisk Manager in 5 seconds, please manually reboot afterwards</string>
|
||||
<string name="proprietary_title">Download Proprietary Code</string>
|
||||
<string name="proprietary_notice">Magisk Manager is FOSS, which doesn\'t contain Google\'s proprietary SafetyNet API code.\n\nDo you allow Magisk Manager to download an extension (contains GoogleApiClient) for SafetyNet checks?</string>
|
||||
<string name="su_db_corrupt">SU database is corrupted, will recreate new db</string>
|
||||
@ -119,6 +119,8 @@
|
||||
<string name="setup_fail">Setup failed</string>
|
||||
<string name="env_fix_title">Requires Additional Setup</string>
|
||||
<string name="env_fix_msg">Your device needs additional setup for Magisk to work properly. It will download the Magisk setup zip, do you want to proceed now?</string>
|
||||
<string name="setup_title">Additional Setup</string>
|
||||
<string name="setup_msg">Running environment setup…</string>
|
||||
|
||||
<!--Settings Activity -->
|
||||
<string name="settings_general_category">General</string>
|
||||
|
@ -17,8 +17,6 @@ public class Const {
|
||||
public static final String MAGISKHIDE_PROP = "persist.magisk.hide";
|
||||
|
||||
// APK content
|
||||
public static final String UNINSTALLER = "magisk_uninstaller.sh";
|
||||
public static final String UTIL_FUNCTIONS= "util_functions.sh";
|
||||
public static final String ANDROID_MANIFEST = "AndroidManifest.xml";
|
||||
|
||||
public static final String SU_KEYSTORE_KEY = "su_key";
|
||||
@ -159,6 +157,7 @@ public class Const {
|
||||
public static final String PATCH_BOOT = "patch";
|
||||
public static final String FLASH_MAGISK = "magisk";
|
||||
public static final String FLASH_SECOND_SLOT = "slot";
|
||||
public static final String UNINSTALL = "uninstall";
|
||||
public static final int[] timeoutList = {0, -1, 10, 20, 30, 60};
|
||||
public static final int ORDER_NAME = 0;
|
||||
public static final int ORDER_DATE = 1;
|
||||
|
Loading…
Reference in New Issue
Block a user