Compare commits

..

11 Commits

Author SHA1 Message Date
topjohnwu
fbcbb20178 Update app changelog 2020-10-08 01:06:37 -07:00
topjohnwu
0914700fc6 Fix string resources 2020-10-08 00:50:21 -07:00
vvb2060
eeced2fb5b Only care about the main process when not expanded 2020-10-08 00:30:34 -07:00
topjohnwu
6509e3d4f5 Use ProgressDialog when restoring images
Close #3287
2020-10-08 00:27:16 -07:00
AdiityaAndre
317052604b Translation: Update and improve Indonesian strings
* Added new strings
* Decapitalized wording
2020-10-08 00:16:29 -07:00
Wagg13
5538f7168c Update PT-BR translation 2020-10-08 00:15:56 -07:00
vvb2060
dcb9e4cd93 Update zh-rCN translation 2020-10-08 00:15:29 -07:00
topjohnwu
d9382f59bf Fix logical error 2020-10-08 00:14:51 -07:00
topjohnwu
403a0c770a Fix typo 2020-10-07 20:15:23 -07:00
topjohnwu
f0f1cdc501 Disable LoggingInterceptor 2020-10-07 04:01:50 -07:00
topjohnwu
4e272b70ef Download GitHub files through CDN 2020-10-07 04:01:03 -07:00
12 changed files with 176 additions and 109 deletions

View File

@@ -52,7 +52,7 @@ abstract class BaseActivity : AppCompatActivity() {
var requestCode: Int
do {
requestCode = Random.nextInt(Const.ID.MAX_ACTIVITY_RESULT + 1, 1 shl 15)
} while (!resultCallbacks.containsKey(requestCode))
} while (resultCallbacks.containsKey(requestCode))
resultCallbacks[requestCode] = { result, _ ->
if (result > 0)
request.onSuccess()

View File

@@ -41,3 +41,13 @@ data class StubJson(
val versionCode: Int = -1,
val link: String = ""
) : Parcelable
@JsonClass(generateAdapter = true)
data class CommitInfo(
val sha: String
)
@JsonClass(generateAdapter = true)
data class BranchInfo(
val commit: CommitInfo
)

View File

@@ -1,6 +1,7 @@
package com.topjohnwu.magisk.data.network
import com.topjohnwu.magisk.core.Const
import com.topjohnwu.magisk.core.model.BranchInfo
import com.topjohnwu.magisk.core.model.UpdateInfo
import com.topjohnwu.magisk.core.tasks.GithubRepoInfo
import okhttp3.ResponseBody
@@ -11,9 +12,11 @@ private const val REVISION = "revision"
private const val MODULE = "module"
private const val FILE = "file"
private const val IF_NONE_MATCH = "If-None-Match"
private const val BRANCH = "branch"
private const val REPO = "repo"
private const val MAGISK_FILES = "topjohnwu/magisk_files"
private const val MAGISK_MASTER = "topjohnwu/Magisk/master"
const val MAGISK_FILES = "topjohnwu/magisk_files"
const val MAGISK_MAIN = "topjohnwu/Magisk"
private const val MAGISK_MODULES = "Magisk-Modules-Repo"
interface GithubPageServices {
@@ -34,27 +37,23 @@ interface JSDelivrServices {
@GET("$MAGISK_FILES@{$REVISION}/bootctl")
@Streaming
suspend fun fetchBootctl(@Path(REVISION) revision: String = Const.BOOTCTL_REVISION): ResponseBody
@GET("$MAGISK_FILES@{$REVISION}/canary.json")
suspend fun fetchCanaryUpdate(@Path(REVISION) revision: String): UpdateInfo
@GET("$MAGISK_MAIN@{$REVISION}/scripts/module_installer.sh")
@Streaming
suspend fun fetchInstaller(@Path(REVISION) revision: String): ResponseBody
}
interface GithubRawServices {
@GET("$MAGISK_FILES/canary/debug.json")
suspend fun fetchCanaryUpdate(): UpdateInfo
@GET
suspend fun fetchCustomUpdate(@Url url: String): UpdateInfo
@GET("$MAGISK_MASTER/scripts/module_installer.sh")
@Streaming
suspend fun fetchInstaller(): ResponseBody
@GET("$MAGISK_MODULES/{$MODULE}/master/{$FILE}")
suspend fun fetchModuleFile(@Path(MODULE) id: String, @Path(FILE) file: String): String
/**
* This method shall be used exclusively for fetching files from urls from previous requests.
* Him, who uses it in a wrong way, shall die in an eternal flame.
* */
@GET
@Streaming
suspend fun fetchFile(@Url url: String): ResponseBody
@@ -66,7 +65,7 @@ interface GithubRawServices {
interface GithubApiServices {
@GET("users/${MAGISK_MODULES}/repos")
@GET("users/$MAGISK_MODULES/repos")
@Headers("Accept: application/vnd.github.v3+json")
suspend fun fetchRepos(
@Query("page") page: Int,
@@ -74,5 +73,12 @@ interface GithubApiServices {
@Query("sort") sort: String = "pushed",
@Query("per_page") count: Int = 100
): Response<List<GithubRepoInfo>>
@GET("repos/{$REPO}/branches/{$BRANCH}")
@Headers("Accept: application/vnd.github.v3+json")
suspend fun fetchBranch(
@Path(REPO, encoded = true) repo: String,
@Path(BRANCH) branch: String
): BranchInfo
}

View File

@@ -6,12 +6,12 @@ import com.topjohnwu.magisk.core.Config.Value.CANARY_CHANNEL
import com.topjohnwu.magisk.core.Config.Value.CUSTOM_CHANNEL
import com.topjohnwu.magisk.core.Config.Value.DEFAULT_CHANNEL
import com.topjohnwu.magisk.core.Config.Value.STABLE_CHANNEL
import com.topjohnwu.magisk.core.Const
import com.topjohnwu.magisk.core.Info
import com.topjohnwu.magisk.core.model.*
import com.topjohnwu.magisk.core.model.module.Repo
import com.topjohnwu.magisk.data.network.GithubApiServices
import com.topjohnwu.magisk.data.network.GithubPageServices
import com.topjohnwu.magisk.data.network.GithubRawServices
import com.topjohnwu.magisk.data.network.JSDelivrServices
import com.topjohnwu.magisk.data.network.*
import okhttp3.ResponseBody
import retrofit2.HttpException
import timber.log.Timber
import java.io.IOException
@@ -49,13 +49,32 @@ class NetworkService(
// UpdateInfo
suspend fun fetchStableUpdate() = pages.fetchStableUpdate()
suspend fun fetchBetaUpdate() = pages.fetchBetaUpdate()
suspend fun fetchCanaryUpdate() = raw.fetchCanaryUpdate()
suspend fun fetchCustomUpdate(url: String) = raw.fetchCustomUpdate(url)
suspend fun fetchCanaryUpdate(): UpdateInfo {
val sha = fetchCanaryVersion()
val info = jsd.fetchCanaryUpdate(sha)
fun genCDNUrl(name: String) = "${Const.Url.JS_DELIVR_URL}${MAGISK_FILES}@${sha}/${name}"
fun ManagerJson.updateCopy() = copy(link = genCDNUrl(link), note = genCDNUrl(note))
fun MagiskJson.updateCopy() = copy(link = genCDNUrl(link), note = genCDNUrl(note))
fun StubJson.updateCopy() = copy(link = genCDNUrl(link))
fun UninstallerJson.updateCopy() = copy(link = genCDNUrl(link))
return info.copy(
app = info.app.updateCopy(),
magisk = info.magisk.updateCopy(),
stub = info.stub.updateCopy(),
uninstaller = info.uninstaller.updateCopy()
)
}
// Byte streams
suspend fun fetchSafetynet() = jsd.fetchSafetynet()
suspend fun fetchBootctl() = jsd.fetchBootctl()
suspend fun fetchInstaller() = raw.fetchInstaller()
suspend fun fetchInstaller(): ResponseBody {
val sha = fetchMainVersion()
return jsd.fetchInstaller(sha)
}
suspend fun fetchFile(url: String) = raw.fetchFile(url)
// Strings
@@ -65,4 +84,6 @@ class NetworkService(
// API calls
suspend fun fetchRepos(page: Int, etag: String) = api.fetchRepos(page, etag)
private suspend fun fetchCanaryVersion() = api.fetchBranch(MAGISK_FILES, "canary").commit.sha
private suspend fun fetchMainVersion() = api.fetchBranch(MAGISK_MAIN, "master").commit.sha
}

View File

@@ -20,7 +20,6 @@ import okhttp3.Dns
import okhttp3.HttpUrl
import okhttp3.OkHttpClient
import okhttp3.dnsoverhttps.DnsOverHttps
import okhttp3.logging.HttpLoggingInterceptor
import org.koin.dsl.module
import retrofit2.Retrofit
import retrofit2.converter.moshi.MoshiConverterFactory
@@ -78,10 +77,10 @@ private class DnsResolver(client: OkHttpClient) : Dns {
fun createOkHttpClient(context: Context): OkHttpClient {
val builder = OkHttpClient.Builder()
val httpLoggingInterceptor = HttpLoggingInterceptor().apply {
level = HttpLoggingInterceptor.Level.HEADERS
}
builder.addInterceptor(httpLoggingInterceptor)
// val httpLoggingInterceptor = HttpLoggingInterceptor().apply {
// level = HttpLoggingInterceptor.Level.HEADERS
// }
// builder.addInterceptor(httpLoggingInterceptor)
if (!Networking.init(context)) {
Info.hasGMS = false

View File

@@ -1,5 +1,6 @@
package com.topjohnwu.magisk.events.dialog
import android.app.ProgressDialog
import android.widget.Toast
import com.topjohnwu.magisk.R
import com.topjohnwu.magisk.core.Info
@@ -17,8 +18,7 @@ class UninstallDialog : DialogEvent() {
.applyMessage(R.string.uninstall_magisk_msg)
.applyButton(MagiskDialog.ButtonType.POSITIVE) {
titleRes = R.string.restore_img
preventDismiss = true
onClick { restore(dialog) }
onClick { restore() }
}
if (Info.remote.uninstaller.link.isNotEmpty()) {
dialog.applyButton(MagiskDialog.ButtonType.NEGATIVE) {
@@ -28,13 +28,12 @@ class UninstallDialog : DialogEvent() {
}
}
private fun restore(dialog: MagiskDialog) {
dialog.applyTitle(R.string.restore_img)
.applyMessage(R.string.restore_img_msg)
.applyButton(MagiskDialog.ButtonType.POSITIVE) {
title = ""
}
.cancellable(false)
@Suppress("DEPRECATION")
private fun restore() {
val dialog = ProgressDialog(dialog.context).apply {
setMessage(dialog.context.getString(R.string.restore_img_msg))
show()
}
Shell.su("restore_imgs").submit { result ->
dialog.dismiss()

View File

@@ -39,14 +39,19 @@ class HideItem(
get() = state
set(value) = set(value, state, { state = it }, BR.hiddenState) {
if (value == true) {
processes.filterNot { it.isHidden }
processes
.filterNot { it.isHidden }
.filter { isExpanded || it.process.name == it.process.packageName }
} else {
processes
.filter { it.isHidden }
.filter { isExpanded || it.process.name == it.process.packageName }
}.forEach { it.toggle() }
}
init {
processes.forEach { it.addOnPropertyChangedCallback(BR.hidden) { recalculateChecked() } }
addOnPropertyChangedCallback(BR.expanded) { recalculateChecked() }
recalculateChecked()
}
@@ -57,10 +62,14 @@ class HideItem(
private fun recalculateChecked() {
itemsChecked = processes.count { it.isHidden }
state = when (itemsChecked) {
0 -> false
processes.size -> true
else -> null
state = if (isExpanded) {
when (itemsChecked) {
0 -> false
processes.size -> true
else -> null
}
} else {
processes.find { it.isHidden && it.process.name == it.process.packageName } != null
}
}

View File

@@ -1,3 +1,8 @@
## v8.0.2
- Fix an issue with requesting permission on devices older than Android 10
- Make more files download through CDN
## v8.0.1
- Fix `vbmeta.img` patching for Samsung `AP.tar` files. This fixes bootloops on devices like Galaxy S10 after flashing updated AP files.

View File

@@ -5,15 +5,15 @@
<string name="superuser">Superuser</string>
<string name="logs">Log</string>
<string name="settings">Setelan</string>
<string name="refresh">Perbarui Data Lokal</string>
<string name="refresh">Perbarui data lokal</string>
<string name="install">Instal</string>
<string name="section_home">Beranda</string>
<string name="section_theme">Tema</string>
<string name="safetynet">SafetyNet</string>
<!--Home-->
<string name="no_connection">Koneksi tidak tersedia</string>
<string name="app_changelog">Daftar perubahan</string>
<string name="no_connection">Tidak ada koneksi</string>
<string name="app_changelog">Catatan perubahan</string>
<string name="manager">Manager</string>
<string name="loading">Memuat…</string>
<string name="update">Update</string>
@@ -22,15 +22,15 @@
<string name="status">Status</string>
<string name="home_package">Paket</string>
<string name="home_notice_content">Pastikan Anda selalu menggunakan Magisk Manager dari sumber terbuka. Manager dari sumber yang tidak dikenal dapat melakukan tindak kejahatan.</string>
<string name="home_support_title">Dukung Kami</string>
<string name="home_notice_content">Pastikan selalu menggunakan Magisk Manager dari sumber terbuka. Manager dari sumber yang tidak dikenal dapat melakukan tindakan jahat.</string>
<string name="home_support_title">Dukung kami</string>
<string name="home_item_source">Sumber</string>
<string name="home_support_content">Magisk gratis dan bersumber terbuka, dan akan selalu seperti itu. Bagaimanapun juga Anda dapat menunjukan kepedulian Anda kepada kami dengan mengirimkan sedikit donasi.</string>
<string name="home_status_normal">Normal</string>
<string name="home_status_stub">Stub</string>
<string name="home_installed_version">Terinstal</string>
<string name="home_latest_version">Terbaru</string>
<string name="invalid_update_channel">Kanal Update Tidak Valid</string>
<string name="invalid_update_channel">Kanal update tidak valid</string>
<string name="uninstall_magisk_title">Uninstal Magisk</string>
<string name="uninstall_magisk_msg">Semua modul akan dinonaktifkan/dihapus!\nRoot akan dihapus!\nData Anda berpotensi terenkripsi jika belum!</string>
<string name="home_check_safetynet">Pemeriksaan SafetyNet</string>
@@ -42,20 +42,20 @@
<string name="install_options_title">Opsi</string>
<string name="install_method_title">Metode</string>
<string name="install_next">Berikutnya</string>
<string name="install_start">Mari mulai</string>
<string name="manager_download_install">Tekan untuk download dan instal</string>
<string name="download_zip_only">Download Zip Saja</string>
<string name="direct_install">Langsung Instal (Disarankan)</string>
<string name="install_inactive_slot">Instal pada Slot Nonaktif (Setelah OTA)</string>
<string name="install_start">Mulai</string>
<string name="manager_download_install">Sentuh untuk download dan instal</string>
<string name="download_zip_only">Download zip saja</string>
<string name="direct_install">Langsung instal (Disarankan)</string>
<string name="install_inactive_slot">Instal pada slot nonaktif (Setelah OTA)</string>
<string name="install_inactive_slot_msg">Perangkat Anda akan DIPAKSA boot ke slot yang saat ini tidak aktif setelah perangkat dinyalakan ulang!\nGunakan opsi ini hanya setelah proses OTA selesai.\nLanjutkan?</string>
<string name="setup_title">Penyiapan Tambahan</string>
<string name="select_patch_file">Pilih dan Tambal File</string>
<string name="setup_title">Penyiapan tambahan</string>
<string name="select_patch_file">Pilih dan tambal file</string>
<string name="patch_file_msg">Pilih mentahan image (*.img) atau file tar ODIN (*.tar)</string>
<string name="reboot_delay_toast">Memulai kembali dalam 5 detik…</string>
<string name="flash_screen_title">Instalasi</string>
<!--Superuser-->
<string name="su_request_title">Permintaan Superuser</string>
<string name="su_request_title">Permintaan superuser</string>
<string name="deny">Tolak</string>
<string name="prompt">Ajukan</string>
<string name="grant">Izinkan</string>
@@ -66,14 +66,14 @@
<string name="twentymin">20 mnt</string>
<string name="thirtymin">30 mnt</string>
<string name="sixtymin">60 mnt</string>
<string name="su_allow_toast">%1$s mendapatkan hak Superuser</string>
<string name="su_deny_toast">%1$s ditolak atas hak Superuser</string>
<string name="su_snack_grant">Hak Superuser untuk %1$s diberikan</string>
<string name="su_snack_deny">Hak Superuser untuk %1$s ditolak</string>
<string name="su_snack_notif_on">Notifikasi untuk %1$s diaktifkan</string>
<string name="su_snack_notif_off">Notifikasi untuk %1$s dinonaktifkan</string>
<string name="su_snack_log_on">Log untuk %1$s diaktifkan</string>
<string name="su_snack_log_off">Log untuk %1$s dinonaktifkan</string>
<string name="su_allow_toast">%1$s mendapatkan hak superuser</string>
<string name="su_deny_toast">%1$s ditolak atas hak superuser</string>
<string name="su_snack_grant">Hak superuser %1$s diberikan</string>
<string name="su_snack_deny">Hak superuser %1$s ditolak</string>
<string name="su_snack_notif_on">Notifikasi %1$s diaktifkan</string>
<string name="su_snack_notif_off">Notifikasi %1$s dinonaktifkan</string>
<string name="su_snack_log_on">Pencatatan log %1$s diaktifkan</string>
<string name="su_snack_log_off">Pencatatan log %1$s dinonaktifkan</string>
<string name="su_revoke_title">Cabut?</string>
<string name="su_revoke_msg">Konfirmasi untuk mencabut hak %1$s?</string>
<string name="toast">Toast</string>
@@ -105,7 +105,7 @@
<string name="hide_filter_hint">Filter menurut nama</string>
<string name="hide_scroll_up">Gulir ke atas</string>
<string name="hide_filters">Filter</string>
<string name="hide_search">Penelusuran</string>
<string name="hide_search">Telusuri</string>
<!--Module -->
<string name="no_info_provided">(Info tidak tersedia)</string>
@@ -119,36 +119,36 @@
<string name="module_state_remove">Hapus</string>
<string name="module_state_restore">Pulihkan</string>
<string name="module_action_install_external">Instal dari penyimpanan</string>
<string name="update_available">Update Tersedia</string>
<string name="update_available">Update tersedia</string>
<string name="module_installed">@string/home_installed_version</string>
<string name="module_section_online">Online</string>
<string name="sorting_order">Urutan Sortir</string>
<string name="sorting_order">Urutan sortir</string>
<!--Settings -->
<string name="settings_dark_mode_title">Mode Tema</string>
<string name="settings_dark_mode_title">Mode tema</string>
<string name="settings_dark_mode_message">Pilih mode yang paling cocok dengan gaya Anda!</string>
<string name="settings_dark_mode_light">Selalu Terang</string>
<string name="settings_dark_mode_system">Ikuti Sistem</string>
<string name="settings_dark_mode_dark">Selalu Gelap</string>
<string name="settings_dark_mode_light">Selalu terang</string>
<string name="settings_dark_mode_system">Ikuti sistem</string>
<string name="settings_dark_mode_dark">Selalu gelap</string>
<string name="settings_download_path_title">Lokasi download</string>
<string name="settings_download_path_message">File akan disimpan ke %1$s</string>
<string name="settings_clear_cache_title">Hapus Cache Repositori</string>
<string name="settings_clear_cache_summary">Hapus cache informasi repositori online. Tindakan ini memaksa aplikasi untuk memperbarui repositori online</string>
<string name="settings_clear_cache_title">Hapus cache repo</string>
<string name="settings_clear_cache_summary">Hapus cache informasi repo online. Tindakan ini memaksa aplikasi untuk memperbarui repo online</string>
<string name="settings_hide_manager_title">Sembunyikan Magisk Manager</string>
<string name="settings_hide_manager_summary">Kemas ulang Magisk Manager dengan nama paket dan nama aplikasi secara acak</string>
<string name="settings_restore_manager_title">Pulihkan Magisk Manager</string>
<string name="settings_restore_manager_summary">Pulihkan Magisk Manager dengan nama paket dan nama aplikasi aslinya</string>
<string name="language">Bahasa</string>
<string name="system_default">(Default Sistem)</string>
<string name="settings_check_update_title">Periksa Update</string>
<string name="system_default">(Default sistem)</string>
<string name="settings_check_update_title">Periksa update</string>
<string name="settings_check_update_summary">Periksa update secara berkala di latar belakang</string>
<string name="settings_update_channel_title">Kanal Update</string>
<string name="settings_update_channel_title">Kanal update</string>
<string name="settings_update_stable">Stabil</string>
<string name="settings_update_beta">Beta</string>
<string name="settings_update_custom">Kanal Khusus</string>
<string name="settings_update_custom">Kanal khusus</string>
<string name="settings_update_custom_msg">Masukkan URL khusus</string>
<string name="settings_magiskhide_summary">Sembunyikan Magisk dari berbagai bentuk pendeteksian</string>
<string name="settings_hosts_title">Host Systemless</string>
<string name="settings_hosts_title">Host systemless</string>
<string name="settings_hosts_summary">Dukungan host secara systemless untuk aplikasi pemblokir iklan</string>
<string name="settings_hosts_toast">Menambahkan modul host systemless</string>
<string name="settings_app_name_hint">Nama baru</string>
@@ -164,45 +164,45 @@
<string name="settings_su_request_30">30 detik</string>
<string name="settings_su_request_45">45 detik</string>
<string name="settings_su_request_60">60 detik</string>
<string name="superuser_access">Akses Superuser</string>
<string name="auto_response">Respons Otomatis</string>
<string name="request_timeout">Batas Waktu Permintaan</string>
<string name="superuser_notification">Notifikasi Superuser</string>
<string name="superuser_access">Akses superuser</string>
<string name="auto_response">Respons otomatis</string>
<string name="request_timeout">Batas waktu permintaan</string>
<string name="superuser_notification">Notifikasi superuser</string>
<string name="settings_su_reauth_title">Autentikasi ulang setelah upgrade</string>
<string name="settings_su_reauth_summary">Autentikasi ulang izin superuser setelah aplikasi diupgrade</string>
<string name="settings_su_biometric_title">Aktifkan Autentikasi Biometrik</string>
<string name="settings_su_reauth_summary">Autentikasi ulang izin akses superuser setelah aplikasi diupgrade</string>
<string name="settings_su_biometric_title">Aktifkan autentikasi biometrik</string>
<string name="settings_su_biometric_summary">Gunakan autentikasi biometrik untuk mengizinkan permintaan superuser</string>
<string name="no_biometric">Perangkat tidak didukung atau setelan biometrik tidak diaktifkan</string>
<string name="settings_customization">Penyesuaian</string>
<string name="no_biometric">Perangkat tidak mendukung atau setelan biometrik tidak diaktifkan</string>
<string name="settings_customization">Personalisasi</string>
<string name="setting_add_shortcut_summary">Tambahkan pintasan yang menarik pada layar utama seandainya nama dan ikon sulit untuk dikenali setelah menyembunyikan aplikasi</string>
<string name="settings_doh_title">DNS melalui HTTPS</string>
<string name="settings_doh_description">Solusi untuk permasalahan DNS di beberapa negara</string>
<string name="settings_doh_description">Solusi untuk DNS poisoning di beberapa negara</string>
<string name="multiuser_mode">Mode Multi Pengguna</string>
<string name="settings_owner_only">Pemilik Perangkat Saja</string>
<string name="settings_owner_manage">Pemilik Perangkat Mengelola</string>
<string name="settings_user_independent">Pengguna Independen</string>
<string name="multiuser_mode">Mode multi pengguna</string>
<string name="settings_owner_only">Pemilik perangkat saja</string>
<string name="settings_owner_manage">Pemilik perangkat mengelola</string>
<string name="settings_user_independent">Pengguna independen</string>
<string name="owner_only_summary">Hanya pemilik yang memiliki akses root</string>
<string name="owner_manage_summary">Hanya pemilik yang dapat mengelola akses root dan menerima pesan permintaan</string>
<string name="user_indepenent_summary">Setiap pengguna memiliki aturan root mereka sendiri</string>
<string name="mount_namespace_mode">Mode Ruang-nama Mount</string>
<string name="settings_ns_global">Ruang-nama Global</string>
<string name="settings_ns_requester">Ruang-nama Warisan</string>
<string name="settings_ns_isolate">Ruang-nama Terpisah</string>
<string name="global_summary">Seluruh sesi root menggunakan ruang-nama mount global</string>
<string name="mount_namespace_mode">Mode ruang-nama mount</string>
<string name="settings_ns_global">Ruang-nama global</string>
<string name="settings_ns_requester">Ruang-nama warisan</string>
<string name="settings_ns_isolate">Ruang-nama terpisah</string>
<string name="global_summary">Semua sesi root menggunakan ruang-nama mount global</string>
<string name="requester_summary">Sesi root akan mewarisi ruang-nama peminta mereka</string>
<string name="isolate_summary">Setiap sesi root akan memiliki ruang-nama tersendiri</string>
<!--Notifications-->
<string name="update_channel">Update Magisk</string>
<string name="progress_channel">Notifikasi Berjalan</string>
<string name="progress_channel">Notifikasi Kemajuan</string>
<string name="download_complete">Download selesai</string>
<string name="download_file_error">Kesalahan saat mendownload file</string>
<string name="download_open_parent">Tampilkan dalam folder</string>
<string name="download_open_self">Tampilkan file</string>
<string name="magisk_update_title">Update Magisk Tersedia!</string>
<string name="manager_update_title">Update Magisk Manager Tersedia!</string>
<string name="magisk_update_title">Update Magisk tersedia!</string>
<string name="manager_update_title">Update Magisk Manager tersedia!</string>
<!--Toasts, Dialogs-->
<string name="yes">Ya</string>
@@ -212,29 +212,30 @@
<string name="download">Download</string>
<string name="reboot">Nyalakan ulang</string>
<string name="release_notes">Catatan rilis</string>
<string name="repo_cache_cleared">Cache repositori dihapus</string>
<string name="repo_cache_cleared">Cache repo dihapus</string>
<string name="flashing">Memasang…</string>
<string name="done">Selesai!</string>
<string name="failure">Gagal</string>
<string name="hide_manager_title">Menyembunyikan Magisk Manager…</string>
<string name="hide_manager_fail_toast">Gagal menyembunyikan Magisk Manager.</string>
<string name="open_link_failed_toast">Tidak ditemukan aplikasi untuk membuka link ini</string>
<string name="complete_uninstall">Uninstal Penuh</string>
<string name="restore_img">Pulihkan Image</string>
<string name="complete_uninstall">Uninstal penuh</string>
<string name="restore_img">Pulihkan image</string>
<string name="restore_img_msg">Memulihkan…</string>
<string name="restore_done">Pemulihan selesai!</string>
<string name="restore_fail">Cadangan stock tidak ada!</string>
<string name="proprietary_title">Download Kode Proprietari</string>
<string name="proprietary_notice">Magisk Manager adalah aplikasi FOSS dan tidak membawa kode proprietari API SafetyNet Google.\n\nMaukah mengizinkan Magisk Manager untuk mendownload ekstensi (berisi GoogleApiClient) untuk memriksa SafetyNet?</string>
<string name="proprietary_title">Download kode proprieter</string>
<string name="proprietary_notice">Magisk Manager adalah aplikasi FOSS dan tidak memiliki kode proprieter API SafetyNet Google.\n\nMaukah mengizinkan Magisk Manager untuk mendownload ekstensi (berisi GoogleApiClient) untuk memeriksa SafetyNet?</string>
<string name="setup_fail">Penyiapan gagal</string>
<string name="env_fix_title">Perlu Penyiapan Tambahan</string>
<string name="env_fix_title">Perlu penyiapan tambahan</string>
<string name="env_fix_msg">Perangkat Anda memerlukan penyiapan tambahan agar Magisk bekerja dengan baik. Perangkat akan mendownload zip untuk penyiapan Magisk, apakah Anda ingin melanjutkan sekarang?</string>
<string name="setup_msg">Memproses penyiapan lingkungan…</string>
<string name="authenticate">Autentikasi</string>
<string name="unsupport_magisk_title">Versi Magisk Tidak Didukung</string>
<string name="unsupport_magisk_title">Versi Magisk tidak didukung</string>
<string name="unsupport_magisk_msg">Versi Magisk Manager ini tidak mendukung Magisk di bawah versi %1$s.\n\nAplikasi akan berperilaku seolah-olah Magisk tidak terinstal, harap meningkatkan Magisk sesegera mungkin.</string>
<string name="external_rw_permission_denied">Berikan izin akses ke penyimpanan untuk mengaktifkan fungsi ini</string>
<string name="add_shortcut_title">Tambahkan pintasan ke layar utama</string>
<string name="add_shortcut_msg">Setelah menyembunyikan Magisk Manager, nama dan ikonnya mungkin menjadi sulit untuk dikenali. Apakah Anda ingin menambahkan pintasan yang menarik pada layar utama?</string>
<string name="app_not_found">Tidak ditemukan aplikasi untuk menangani tindakan ini</string>
</resources>

View File

@@ -5,6 +5,7 @@
<string name="superuser">Superusuário</string>
<string name="logs">Registros</string>
<string name="settings">Configurações</string>
<string name="refresh">Atualizar Dados Locais</string>
<string name="install">Instalar</string>
<string name="section_home">Início</string>
<string name="section_theme">Temas</string>
@@ -23,8 +24,6 @@
<string name="home_package">Pacote</string>
<string name="home_status_normal">Normal</string>
<string name="invalid_update_channel">Canal de atualização inválido</string>
<string name="safetynet_api_error">Erro do API SafetyNet</string>
<string name="safetynet_res_invalid">A resposta é inválida</string>
<string name="uninstall_magisk_title">Desinstalar Magisk</string>
<string name="uninstall_magisk_msg">Todos os módulos serão desativados/removidos!\nA raiz será removida!\nSeus dados potencialmente criptografados, se ainda não estiverem!</string>
<string name="update">Atualização</string>
@@ -46,6 +45,7 @@
<string name="select_patch_file">Selecione e corrija um arquivo</string>
<string name="patch_file_msg">Selecione uma imagem bruta (*.img) ou um arquivo tarin ODIN (*.tar)</string>
<string name="reboot_delay_toast">Reiniciando em 5 segundos…</string>
<string name="flash_screen_title">Instalação</string>
<!--Superuser-->
<string name="su_request_title">Solicitação de Superusuário</string>
@@ -86,6 +86,8 @@
<string name="target_uid">Alvo UID: %1$d</string>
<!--SafetyNet-->
<string name="safetynet_api_error">Erro API SafetyNet</string>
<string name="safetynet_res_invalid">A resposta é inválida</string>
<string name="safetynet_attest_success">Sucesso!</string>
<string name="safetynet_attest_failure">O certificado falhou!</string>
<string name="safetynet_attest_loading">Aguarde…</string>
@@ -113,6 +115,7 @@
<string name="update_available">Atualização disponível</string>
<string name="home_installed_version">Instalado</string>
<string name="sorting_order">Ordem de classificação</string>
<!--Settings -->
<string name="settings_dark_mode_title">Modo de tema</string>
@@ -121,6 +124,7 @@
<string name="settings_dark_mode_system">Baseado no Sistema</string>
<string name="settings_dark_mode_dark">Sempre Escuro</string><![CDATA[
    
@@ -170,7 +174,10 @@
<string name="settings_su_biometric_summary">Use a autenticação biométrica para permitir solicitações de superusuário</string>
<string name="no_biometric">Dispositivo não suportado ou nenhuma configuração biométrica está ativada</string>
<string name="settings_customization">Personalizações</string>
<string name="setting_add_shortcut_summary">Adicione um atalho na tela inicial, caso o nome e o ícone sejam difíceis de reconhecer logo após ocultar o aplicativo</string>
<string name="settings_doh_title">DNS sobre HTTPS</string>
<string name="settings_doh_description">Solução alternativa para envenenamento de DNS em alguns países</string>
<string name="multiuser_mode">Modo multiusuário</string>
<string name="settings_owner_only">Somente proprietário do dispositivo</string>
<string name="settings_owner_manage">Gerenciado pelo proprietário do dispositivo</string>
@@ -227,4 +234,8 @@
<string name="authenticate">Autenticar</string>
<string name="unsupport_magisk_title">Versão Magisk não suportada</string>
<string name="unsupport_magisk_msg">Esta versão do Magisk Manager não suporta a versão Magisk inferior a %1$s. \n\nO aplicativo se comportará como se não houvesse Magisk instalado, atualize o Magisk o mais rápido possível.</string>
<string name="add_shortcut_title">Adicionar atalho à tela inicial</string>
<string name="add_shortcut_msg">Depois de ocultar o Magisk Manager, seu nome e ícone podem se tornar difíceis de reconhecer. Você quer adicionar um atalho bonito para a tela inicial?</string>
<string name="app_not_found">Nenhum aplicativo encontrado para realizar esta ação</string>
</resources>

View File

@@ -17,7 +17,7 @@
<string name="manager">Manager</string>
<string name="loading">正在加载</string>
<string name="update">更新</string>
<string name="not_available">不可用</string>
<string name="not_available">无法获取</string>
<string name="hide">不再显示</string>
<string name="status">状态</string>
<string name="home_package">包名</string>
@@ -235,6 +235,7 @@
<string name="unsupport_magisk_msg">此版本的 Magisk Manager 不支持低于 %1$s 版本的 Magisk。\n\n应用表现为未安装状态但升级功能可用请尽快升级 Magisk。</string>
<string name="external_rw_permission_denied">允许访问存储空间以使用此功能</string>
<string name="add_shortcut_title">添加快捷方式到桌面</string>
<string name="add_shortcut_msg">隐藏 Magisk Manager 后,其名称和图标可能会变得难以识别。需要在桌面上添加快捷方式吗?</string>
<string name="add_shortcut_msg">隐藏 Magisk Manager 后,其名称和图标会变得难以识别。需要在桌面上添加具有原始名称和图标的快捷方式吗?</string>
<string name="app_not_found">找不到可处理此操作的应用</string>
</resources>

View File

@@ -1,5 +1,10 @@
# Magisk Manager Changelog
## v8.0.2
- Fix an issue with requesting permission on devices older than Android 10
- Make more files download through CDN
### v8.0.1
- Fix `vbmeta.img` patching for Samsung `AP.tar` files. This fixes bootloops on devices like Galaxy S10 after flashing updated AP files.