From fac54bddf840ac38b7454759ee070b045f877c8c Mon Sep 17 00:00:00 2001 From: Samuel Pascua Date: Thu, 19 Sep 2024 10:08:02 +0800 Subject: [PATCH 1/2] Add system selfstart Signed-off-by: Samuel Pascua --- .../moe/shizuku/manager/home/HomeAdapter.kt | 16 ++++- .../manager/home/StartSystemViewHolder.kt | 70 +++++++++++++++++++ .../manager/starter/StarterActivity.kt | 44 +++++++++++- .../src/main/res/layout/home_start_system.xml | 59 ++++++++++++++++ manager/src/main/res/values/strings.xml | 4 ++ 5 files changed, 188 insertions(+), 5 deletions(-) create mode 100644 manager/src/main/java/moe/shizuku/manager/home/StartSystemViewHolder.kt create mode 100644 manager/src/main/res/layout/home_start_system.xml diff --git a/manager/src/main/java/moe/shizuku/manager/home/HomeAdapter.kt b/manager/src/main/java/moe/shizuku/manager/home/HomeAdapter.kt index 39839f700..30a748309 100644 --- a/manager/src/main/java/moe/shizuku/manager/home/HomeAdapter.kt +++ b/manager/src/main/java/moe/shizuku/manager/home/HomeAdapter.kt @@ -1,6 +1,8 @@ package moe.shizuku.manager.home +import android.content.pm.PackageManager import android.os.Build +import moe.shizuku.manager.application import moe.shizuku.manager.management.AppsViewModel import moe.shizuku.manager.utils.EnvironmentUtils import moe.shizuku.manager.utils.UserHandleCompat @@ -24,8 +26,9 @@ class HomeAdapter(private val homeModel: HomeViewModel, private val appsModel: A private const val ID_START_ROOT = 3L private const val ID_START_WADB = 4L private const val ID_START_ADB = 5L - private const val ID_LEARN_MORE = 6L - private const val ID_ADB_PERMISSION_LIMITED = 7L + private const val ID_START_SYSTEM = 6L + private const val ID_LEARN_MORE = 7L + private const val ID_ADB_PERMISSION_LIMITED = 8L } override fun onCreateCreatorPool(): IndexCreatorPool { @@ -54,6 +57,15 @@ class HomeAdapter(private val homeModel: HomeViewModel, private val appsModel: A if (isPrimaryUser) { val root = EnvironmentUtils.isRooted() val rootRestart = running && status.uid == 0 + val system : Boolean = try { + application.applicationContext.packageManager.getPackageInfo("com.sdet.fotaagent", 0) + true + } catch (e: PackageManager.NameNotFoundException) { + false + } + + if (system) + addItem(StartSystemViewHolder.CREATOR, rootRestart, ID_START_SYSTEM) if (root) { addItem(StartRootViewHolder.CREATOR, rootRestart, ID_START_ROOT) diff --git a/manager/src/main/java/moe/shizuku/manager/home/StartSystemViewHolder.kt b/manager/src/main/java/moe/shizuku/manager/home/StartSystemViewHolder.kt new file mode 100644 index 000000000..f7b7280a9 --- /dev/null +++ b/manager/src/main/java/moe/shizuku/manager/home/StartSystemViewHolder.kt @@ -0,0 +1,70 @@ +package moe.shizuku.manager.home + +import android.content.Intent +import android.text.method.LinkMovementMethod +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.appcompat.app.AlertDialog +import moe.shizuku.manager.R +import moe.shizuku.manager.databinding.HomeItemContainerBinding +import moe.shizuku.manager.databinding.HomeStartSystemBinding +import moe.shizuku.manager.ktx.toHtml +import moe.shizuku.manager.starter.StarterActivity +import rikka.html.text.HtmlCompat +import rikka.recyclerview.BaseViewHolder +import rikka.recyclerview.BaseViewHolder.Creator + +class StartSystemViewHolder(private val binding: HomeStartSystemBinding, system: View) : + BaseViewHolder(system) { + + companion object { + val CREATOR = Creator { inflater: LayoutInflater, parent: ViewGroup? -> + val outer = HomeItemContainerBinding.inflate(inflater, parent, false) + val inner = HomeStartSystemBinding.inflate(inflater, outer.root, true) + StartSystemViewHolder(inner, outer.root) + } + } + + private inline val start get() = binding.button1 + + private var alertDialog: AlertDialog? = null + + init { + val listener = View.OnClickListener { v: View -> onStartClicked(v) } + start.setOnClickListener(listener) + binding.text1.movementMethod = LinkMovementMethod.getInstance() + } + + private fun onStartClicked(v: View) { + val context = v.context + val intent = Intent(context, StarterActivity::class.java).apply { + putExtra(StarterActivity.EXTRA_IS_ROOT, false) + putExtra(StarterActivity.EXTRA_IS_SYSTEM, true) + } + context.startActivity(intent) + } + + override fun onBind() { + start.isEnabled = true + if (data!!) { + start.visibility = View.GONE + } else { + start.visibility = View.VISIBLE + } + + val sb = StringBuilder() + .append( + context.getString( + R.string.home_system_description + ) + ) + + binding.text1.text = sb.toHtml(HtmlCompat.FROM_HTML_OPTION_TRIM_WHITESPACE) + } + + override fun onRecycle() { + super.onRecycle() + alertDialog = null + } +} diff --git a/manager/src/main/java/moe/shizuku/manager/starter/StarterActivity.kt b/manager/src/main/java/moe/shizuku/manager/starter/StarterActivity.kt index e127b9cd3..0fa3ae67f 100644 --- a/manager/src/main/java/moe/shizuku/manager/starter/StarterActivity.kt +++ b/manager/src/main/java/moe/shizuku/manager/starter/StarterActivity.kt @@ -1,6 +1,8 @@ package moe.shizuku.manager.starter +import android.app.PendingIntent import android.content.Context +import android.content.Intent import android.os.Bundle import android.util.Log import androidx.lifecycle.LiveData @@ -22,12 +24,10 @@ import moe.shizuku.manager.adb.PreferenceAdbKeyStore import moe.shizuku.manager.app.AppBarActivity import moe.shizuku.manager.application import moe.shizuku.manager.databinding.StarterActivityBinding -import moe.shizuku.manager.ktx.createDeviceProtectedStorageContextCompat import rikka.lifecycle.Resource import rikka.lifecycle.Status import rikka.lifecycle.viewModels import rikka.shizuku.Shizuku -import java.io.File import java.net.ConnectException import javax.net.ssl.SSLProtocolException @@ -39,6 +39,7 @@ class StarterActivity : AppBarActivity() { ViewModel( this, intent.getBooleanExtra(EXTRA_IS_ROOT, true), + intent.getBooleanExtra(EXTRA_IS_SYSTEM, false), intent.getStringExtra(EXTRA_HOST), intent.getIntExtra(EXTRA_PORT, 0) ) @@ -99,13 +100,14 @@ class StarterActivity : AppBarActivity() { companion object { + const val EXTRA_IS_SYSTEM = "$EXTRA.IS_SYSTEM" const val EXTRA_IS_ROOT = "$EXTRA.IS_ROOT" const val EXTRA_HOST = "$EXTRA.HOST" const val EXTRA_PORT = "$EXTRA.PORT" } } -private class ViewModel(context: Context, root: Boolean, host: String?, port: Int) : androidx.lifecycle.ViewModel() { +private class ViewModel(context: Context, root: Boolean, isSystem: Boolean, host: String?, port: Int) : androidx.lifecycle.ViewModel() { private val sb = StringBuilder() private val _output = MutableLiveData>() @@ -117,6 +119,8 @@ private class ViewModel(context: Context, root: Boolean, host: String?, port: In if (root) { //Starter.writeFiles(context) startRoot() + } else if (isSystem) { + startSys() } else { startAdb(host!!, port) } @@ -168,6 +172,40 @@ private class ViewModel(context: Context, root: Boolean, host: String?, port: In } } + private fun startSys() { + sb.append("Starting with system...").append('\n').append('\n') + postResult() + + GlobalScope.launch(Dispatchers.IO) { + val intent = Intent().apply { + setClassName("com.sdet.fotaagent", "com.sdet.fotaagent.Main") + addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + } + application.applicationContext.startActivity(intent) + + val mIntent = Intent("com.sdet.fotaagent.intent.CP_FILE") + mIntent.putExtra("CP_FILE", "/data") + mIntent.putExtra("CP_LOC", "; " + application.applicationInfo.nativeLibraryDir + + "/libshizuku.so" + "; am force-stop com.sdet.fotaagent") + try { + Thread.sleep(1000) + application.applicationContext.sendBroadcast(mIntent) + sb.append("Start system success!").append('\n').append('\n') + postResult() + + sb.append("info: shizuku_starter exit with 0") + postResult() + + return@launch + } catch (e: InterruptedException) { + e.printStackTrace() + sb.append("Start system failed!").append('\n') + postResult() + return@launch + } + } + } + private fun startAdb(host: String, port: Int) { sb.append("Starting with wireless adb...").append('\n').append('\n') postResult() diff --git a/manager/src/main/res/layout/home_start_system.xml b/manager/src/main/res/layout/home_start_system.xml new file mode 100644 index 000000000..6b1a0bf53 --- /dev/null +++ b/manager/src/main/res/layout/home_start_system.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + diff --git a/manager/src/main/res/values/strings.xml b/manager/src/main/res/values/strings.xml index a7e434e4f..85c763f2d 100644 --- a/manager/src/main/res/values/strings.xml +++ b/manager/src/main/res/values/strings.xml @@ -64,6 +64,10 @@ Start Restart + + + + Application management From 1039ebb7bffcb4c5d9fdb9cb5e8fd2ba398fb94e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D8=A7=D8=AD=D9=85=D8=AF=20=D9=81=D8=B1=D8=AF=DB=8C=D9=86?= <148309800+Ahmad-Fardin@users.noreply.github.com> Date: Fri, 4 Oct 2024 18:55:18 +0430 Subject: [PATCH 2/2] Update strings.xml --- manager/src/main/res/values-fa/strings.xml | 137 +++++++++++---------- 1 file changed, 69 insertions(+), 68 deletions(-) diff --git a/manager/src/main/res/values-fa/strings.xml b/manager/src/main/res/values-fa/strings.xml index 9891f2ec9..9d3e27b72 100644 --- a/manager/src/main/res/values-fa/strings.xml +++ b/manager/src/main/res/values-fa/strings.xml @@ -8,70 +8,70 @@ %1$s در حال اجرا است %1$s در حال اجرا نیست نسخه %2$s، %1$s - برای به‌روزرسانی به نسخه %3$s برنامه را راه‌اندازی مجدد نمایید]]> + برای به روز رسانی به نسخه %3$s دوباره شروع کنید]]> - راهنما را بخوانید.]]> - خواندن راهنما + راهنما را بخوانید.]]> + راهنما را بخوانید مشاهده دستور %1$s

* ملاحظات دیگری نیز وجود دارد، لطفاً تأیید کنید که ابتدا راهنما را خوانده اید.]]>
رونوشت ارسال - - لطفاً ابتدا راهنمای گام به گام را مطالعه کنید.]]> + + علاوه بر این، در صورت اعطای مجوز WRITE_SECURE_SETTINGS، برنامه Shizuku می تواند به طور خودکار در هنگام راه‌اندازی دستگاه بدون دسترسی ریشه (روت) راه اندازی شود.

لطفاً ابتدا راهنمای گام به گام را مطالعه کنید.]]> راهنمای گام به گام - جستجوی خدمات اشکال زدایی بی سیم + جستجوی خدمات اشکال زدایی بی‌سیم لطفاً \"اشکال‌زدایی بی‌سیم\" را در \"گزینه‌های توسعه دهنده\" فعال کنید. وقتی شبکه تغییر می‌کند، \"اشکال‌زدایی بی‌سیم\" به‌طور خودکار غیرفعال می‌شود.\n\nتوجه داشته باشید، \"گزینه‌های توسعه دهنده\" یا \"اشکال‌زدایی USB\" را غیرفعال نکنید، در غیر این صورت Shizuku متوقف خواهد شد. - لطفاً در صورتی که به جستجو ادامه داد \"اشکال‌زدایی بی‌سیم\" را غیرفعال و فعال کنید. + لطفاً در صورتی که اگر به مدت طولانی به جستجو ادامه داد \"اشکال‌زدایی بی‌سیم\" را غیرفعال و دوباره فعال کنید. درگاه درگاه یک عدد صحیح از ۱ تا ۶۵۵۳۵ است. - مرتبط کردن + مرتبط سازی مرتبط کردن با دستگاه - جستجوی خدمات مرتبط کردن - رمز مرتبط کردن - رمز مرتبط کردن اشتباه است. + جستحوی خدمات مرتبط سازی + رمز مرتبط سازی + رمز مرتبط سازی اشتباه است. نمی توان به خدمات اشکال زدایی بی‌سیم متصل شد. - اشکال‌زدایی بی‌سیم فعال نیست.\nتوجه داشته باشید، قبل از اندروید ۱۱، برای فعال کردن اشکال‌زدایی بی‌سیم، اتصال به رایانه ضروری است. - لطفاً مرتبط کردن را با مراحل زیر شروع کنید: \"گزینه‌های توسعه دهنده\" - \"اشکال‌زدایی بی‌سیم\" - \"جفت‌سازی دستگاه با استفاده از کد جفت‌سازی\".\n\nپس از شروع فرآیند جفت‌سازی، می‌توانید رمز جفت‌سازی را وارد کنید. + اشکال‌زدایی بی‌سیم فعال نیست.\n توجه داشته باشید، قبل از اندروید ۱۱، برای فعال کردن اشکال‌زدایی بی‌سیم، اتصال به رایانه ضروری است. + لطفاً مرتبط سازی را با مراحل زیر شروع کنید: \"گزینه‌های توسعه دهنده\" - \"اشکال‌زدایی بی‌سیم\" - \"مرتبط کردن دستگاه با استفاده از کد مرتبط سازی\".\n\nپس از شروع فرآیند مرتبط سازی، می‌توانید رمز مرتبط سازی را وارد کنید. لطفاً ابتدا وارد حالت تقسیم صفحه (چند پنجره) شوید. - دستگاه نیاز دارد گفتگوی جفت‌سازی همیشه قابل مشاهده باشد، استفاده از حالت تقسیم صفحه تنها راهی است که به این برنامه و گفتگوی دستگاه اجازه می‌دهد همزمان قابل مشاهده باشند. + دستگاه نیاز دارد گفتگوی مرتبط سازی همیشه قابل مشاهده باشد، استفاده از حالت تقسیم صفحه تنها راهی است که به این برنامه و گفتگوی دستگاه اجازه می‌دهد همزمان قابل مشاهده باشند. قادر به تولید کلید برای اشکال زدایی بی‌سیم نیست.\nاین ممکن است به این دلیل باشد که ساز و برگ KeyStore این دستگاه خراب است. - لطفاً ابتدا مرحله مرتبط کردن را طی کنید. + لطفاً ابتدا مرحله مرتبط سازی را طی کنید. گزینه های توسعه دهنده - گزینه های اعلان - برنامه Shizuku را با دستگاه خود جفت کنید + گزینه های اعلان ها + برنامه Shizuku را با دستگاه خود مرتبط سازی کنید یک اعلان از Shizuku به شما امکان می دهد مرتبط کردن را تکمیل کنید. - وارد \"گزینه‌های توسعه دهنده\" - \"اشکال‌زدایی بی‌سیم\" شوید. روی \"مرتبط کردن دستگاه با کد مرتبط‌سازی\" ضربه بزنید، یک رمز شش رقمی خواهید دید. - برای تکمیل مرتبط سازی، رمز شش رقمی را در اعلان وارد کنید. - فرآیند مرتبط شدن به شما نیاز دارد که با اعلان Shizuku تعامل داشته باشید. لطفاً به Shizuku اجازه دهید تا اعلان‌ها را ارسال کند. + وارد \"گزینه‌های توسعه دهنده\" - \"اشکال‌زدایی بی‌سیم\" شوید. روی \"مرتبط کردن دستگاه با کد مرتبط‌سازی\" ضربه بزنید، یک رمز شش رقمی خواهید دید. + برای تکمیل مرتبط سازی، رمز را در اعلان وارد کنید. + فرآیند مرتبط سازی به شما نیاز دارد که با اعلان Shizuku تعامل داشته باشید. لطفاً به Shizuku اجازه ارسال اعلان‌ها را بدهید. کاربران MIUI ممکن است نیاز داشته باشند که در تنظیمات دستگاه، سبک اعلان را به \"اندروید\" از \"اعلان ها\" - \"سایه اعلان\" تغییر دهند. - در غیر این صورت، ممکن است نتوانید رمز مرتبط سازی را از اعلان وارد کنید. + در غیر این صورت، ممکن است نتوانید رمز مرتبط کردن را از اعلان وارد کنید. لطفاً توجه داشته باشید، قسمت سمت راست گزینه \"اشکال زدایی بی‌سیم\" قابل لمس است، با ضربه زدن روی آن صفحه جدیدی باز می شود. فقط روشن کردن دکمه سمت چپ کافی نیست. به Shizuku برگردید و Shizuku را راه‌اندازی کنید. برنامه Shizuku نیاز به دسترسی به شبکه محلی دارد. زیرا توسط مجوز شبکه مدیریت می شود. - برخی از دستگاه ها (مانند MIUI) به برنامه‌ها اجازه دسترسی به شبکه را زمانی که قابل مشاهده نیستند، نمی‌دهند، حتی اگر برنامه از خدمات پیش‌زمینه به‌عنوان استاندارد استفاده کند. لطفاً ویژگی‌های بهینه‌سازی باتری را برای Shizuku در چنین دستگاه‌هایی غیرفعال کنید. + برخی دستگاه ها (مانند MIUI) به برنامه‌ها اجازه دسترسی به شبکه را زمانی که قابل مشاهده نیستند، نمی‌دهند، حتی اگر برنامه از خدمات پیش‌زمینه به‌عنوان معیار استفاده کند. لطفاً ویژگی‌های بهینه‌سازی باتری را برای Shizuku در چنین دستگاه‌هایی غیرفعال کنید. - - می توانید به %s مراجعه کنید.]]> - + + می توانید به %s مراجعه کنید.]]> + راه‌اندازی راه‌اندازی مجدد - مدیریت برنامه + مدیریت برنامه های کاربردی - برنامه‌هایی که Shizuku را درخواست کرده یا اعلام کرده‌اند در اینجا نشان داده می‌شوند. + برنامه هایی که Shizuku را درخواست کرده یا اعلام کرده اند در اینجا نمایش داده می شوند. یادگیری Shizuku @@ -79,41 +79,43 @@ شما باید یک قدم اضافی بردارید - سازنده دستگاه شما مجوزهای adb را محدود کرده است و برنامه هایی که از Shizuku استفاده می کنند به درستی کار نمی کنند.\n\nمعمولاً با تنظیم برخی از گزینه‌ها در \"گزینه‌های توسعه دهنده\" می‌توان این محدودیت را برطرف کرد. لطفاً راهنما را برای جزئیات نحوه انجام این کار بخوانید.\n\nشاید لازم باشد Shizuku را مجدداً راه اندازی کنید تا عملیات اجرایی شود. + سازنده دستگاه شما مجوزهای adb را محدود کرده است و برنامه هایی که از Shizuku استفاده می‌کنند به درستی کار نخواهند کرد.\n\nمعمولاً این محدودیت را می توان با تنظیم برخی از گزینه ها در \"گزینه های توسعه دهنده\" برطرف کرد. لطفاً برای جزئیات بیشتر در مورد نحوه انجام این کار، راهنما را بخوانید.\n\nممکن است لازم باشد Shizuku را مجدداً راه اندازی کنید تا عملیات اعمال شود. مجوز adb محدود است - ممکن است راه حلی برای دستگاه شما در این سند وجود داشته باشد.]]> - * نیاز دارد که Shizuku با امتیازات ریشه اجرا شود + در این سند ممکن است راه حلی برای دستگاه شما وجود داشته باشد.]]> + * نیاز به اجرای Shizuku با دسترسی روت دارد از Shizuku در برنامه های پایانه استفاده کنید دستورات را از طریق Shizuku در برنامه های پایانه که دوست دارید اجرا کنید - ابتدا پرونده ها را به هر جایی که می خواهید صادر کنید. دو پرونده %1$s و %2$s پیدا خواهید کرد. - اگر پرونده هایی با همین نام در پوشه انتخاب شده وجود داشته باشد، حذف خواهند شد.\n\nتابع صادرات از SAF (چارچوب دسترسی ذخیره سازی) استفاده می کند. گزارش شده است که MIUI عملکردهای SAF را خراب می کند. اگر از MIUI استفاده می کنید، ممکن است مجبور شوید پرونده را از apk شیزوکو استخراج کنید یا از GitHub بارگیری کنید. - صادرات پرونده ها + ابتدا پرونده ها را به هر جایی که می خواهید صادر کنید. دو پرونده %1$s و %2$s را خواهید یافت. + اگر پرونده هایی با همان نام در پوشه انتخاب شده وجود داشته باشد، آنها حذف می شوند.\n\nتابع صادرات از SAF (چارچوب دسترسی ذخیره سازی) استفاده می کند. گزارش شده است که MIUI عملکردهای SAF را می شکند. اگر از MIUI استفاده می کنید، ممکن است مجبور شوید پرونده را از apk شیزوکو استخراج کنید یا از GitHub بارگیری کنید. + صادرات پرونده‌ها سپس، از هر ویرایشگر متنی برای باز کردن و ویرایش %1$s استفاده کنید. - برای مثال، اگر می‌خواهید از Shizuku در %1$s استفاده کنید، باید %2$s را با %3$s جایگزین کنید (%4$s نام بسته %1$s است). - در نهایت، پرونده ها را به جایی منتقل کنید که برنامه پایانه شما می تواند به آن دسترسی داشته باشد، می توانید از %1$s برای اجرای دستورات از طریق Shizuku استفاده کنید. - چند نکته: به %1$s اجازه اجرا بدهید و آن را به %2$s اضافه کنید، می‌توانید مستقیماً از %1$s استفاده کنید. + به عنوان مثال، اگر می خواهید از Shizuku در %1$s استفاده کنید، باید %2$s را با %3$s جایگزین کنید. (%4$s نام بسته %1$s است). + در نهایت، پرونده ها را به جایی منتقل کنید که برنامه پایانه شما بتواند به آن دسترسی داشته باشد، می‌توانید از %1$s برای اجرای دستورات از طریق Shizuku استفاده کنید. + نکته: به %1$s اجازه اجرا بدهید و آن را به %2$s اضافه کنید، می‌توانید مستقیماً از %1$s استفاده کنید. درباره استفاده دقیق %1$s، برای مشاهده سند ضربه بزنید. - ]]> +با %1$s، در هر برنامه پایانه، می‌توانید به پوسته (shell) اجرا شده توسط Shizuku متصل شوید و با آن تعامل داشته باشید. +

درباره استفاده دقیق %1$s، برای مشاهده سند ضربه بزنید.]]> تنظیمات زبان ظاهر طرح زمینه شب سیاه - اگر حالت شب فعال است از طرح زمینه سیاه خالص استفاده کنید - شروع به کار + اگر حالت شب فعال باشد از طرح زمینه مشکی خالص استفاده می‌کند + راه اندازی (فقط یکی از آنها را می توان در یک زمان فعال کرد) مشارکت کنندگان ترجمه در ترجمه شرکت کنید - با ما همکاری کنید تا %s را به زبان شما ترجمه کنیم - شروع هنگام راه‌اندازی دستگاه (ریشه) - برای دستگاه های ریشه شده، Shizuku می تواند به طور خودکار در هنگام راه‌اندازی دستگاه شروع شود - از رنگ طرح زمینه دستگاه استفاده کنید + در ترجمه %s به زبان خودتان با ما همکاری کنید + شروع در هنگام راه‌اندازی (نیازمند دسترسی ریشه) + برای دستگاه های روت شده، Shizuku می تواند به طور خودکار در هنگام راه‌اندازی دستگاه شروع به کار کند + استفاده از رنگ طرح زمینه دستگاه + شروع هنگام راه‌اندازی (ADB بی‌سیم) + برای دستگاه های بدون دسترسی ریشه (روت نشده)، Shizuku می تواند به طور خودکار در هنگام راه‌اندازی دستگاه شروع به کار کند + برای ادامه وای‌فای را فعال کنید درباره @@ -124,35 +126,34 @@ خدمات Shizuku متوقف خواهد شد. - وضعیت شروع خدمات - خدمات Shizuku شروع می شود… - راه‌اندازی خدمات Shizuku ناموفق بود. - درخواست مجوز ریشه انجام نشد. - در حال کار کردن... - مرتبط سازی اشکال‌زدایی بی‌سیم - وارد کردن رمز مرتبط سازی - جستجوی خدمات مرتبط سازی - خدمات مرتبط سازی پیدا شد + وضعیت راه‌اندازی خدمات + خدمات Shizuku در حال راه‌اندازی است… + راه اندازی خدمات Shizuku ناموفق بود. + درخواست مجوز ریشه (روت) انجام نشد. + در حال کار... + مرتبط کردن اشکال زدایی بی‌سیم + رمز مرتبط سازی را وارد کنید + جستجو برای خدمات مرتبط سازی + خدمات مرتبط کردن پیدا شد توقف جستجو - مرتبط سازی در حال انجام است - مرتبط سازی با موفقیت انجام شد + مرتبط سازی در حال پیشرفت + با موفقیت مرتبط شد اکنون می توانید خدمات Shizuku را راه اندازی کنید. - مرتبط سازی انجام نشد + مرتبط کردن انجام نشد سعی مجدد Shizuku @string/permission_label - دسترسی Shizuku - به برنامه اجازه دهید از Shizuku استفاده کند. - %1$s برای %2$s؟]]> + دسترسی شیزوکو + به برنامه اجازه دهید از شیزوکو استفاده کند. + %1$s از %2$s استفاده کند؟]]> همیشه اجازه داده شود - "رد" + "رد کردن" - شروع کننده - در حال راه‌اندازی پوسته ریشه… - نمی‌توان خدمات را راه‌اندازی کرد زیرا مجوز ریشه داده نشده است یا این دستگاه ریشه نشده است. + راه‌انداز + نمی توان خدمات را راه‌اندازی کرد زیرا مجوز ریشه (روت) اعطا نشده است یا این دستگاه روت نشده است. نمی توان مرورگر را راه اندازی کرد @@ -160,10 +161,10 @@ %s در بریده‌دان رونوشت شده است.]]> - %1$s از شیزوکوی جدید پشتیبانی نمی کند - لطفاً از توسعه‌دهنده %1$s بخواهید که به‌روزرسانی کند.]]> - %1$s در حال درخواست Shizuku قدیمی است - %1$s پشتیبانی نسخه جدید شیزوکو دارد، اما شیزوکو قدیمی را درخواست می‌کند. این ممکن است به این دلیل باشد که Shizuku در حال اجرا نیست، لطفاً در برنامه Shizuku بررسی کنید.

Shizuku قدیمی از مارس ۲۰۱۹ منسوخ شده است.]]> + %1$s از شیزوکو جدید پشتیبانی نمی کند + لطفاً از توسعه دهنده %1$s بخواهید تا به به‌روزرسانی کند.]]> + %1$s درخواست شیزوکو قدیمی را دارد + %1$s دارای پشتیبانی شیزوکو جدید است، اما درخواست شیزوکو قدیمی را دارد. این ممکن است به دلیل باشد که Shizuku در حال اجرا نیست، لطفاً برنامه Shizuku را بررسی کنید.

شیزوکو قدیمی از مارس ۲۰۱۹ منسوخ شده است.]]> باز کردن Shizuku