mirror of
https://github.com/ReVanced/revanced-manager.git
synced 2025-05-21 16:36:47 +08:00
Compare commits
38 Commits
Author | SHA1 | Date | |
---|---|---|---|
a0339e3c19 | |||
9cfa274d81 | |||
8c79f5e371 | |||
0d716513d7 | |||
08f6724060 | |||
29daf51e64 | |||
b3b2b01c0f | |||
c3212d0308 | |||
aaa114ba13 | |||
8ca6418630 | |||
95632b7f55 | |||
64744b2abf | |||
096b315701 | |||
c27ca08d3a | |||
0011222371 | |||
29db947e25 | |||
fd43ac7581 | |||
e49c19b3cd | |||
06f0e59967 | |||
c5fc5ee93b | |||
159c85bd1f | |||
2460acf0f4 | |||
6495687841 | |||
d229ccb36c | |||
4d6a57ddcf | |||
d161d55aaf | |||
768ad0c9bc | |||
29323d4e20 | |||
630b22e193 | |||
79116f9e67 | |||
eb58475259 | |||
a879ac30fb | |||
c5b0621323 | |||
0462815014 | |||
e64318c947 | |||
b784482788 | |||
2834e8b348 | |||
b23dfd4289 |
11
.github/workflows/analyze.yml
vendored
11
.github/workflows/analyze.yml
vendored
@ -1,14 +1,25 @@
|
|||||||
name: Analyze Code
|
name: Analyze Code
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "dev" ]
|
||||||
|
paths:
|
||||||
|
- "**.dart"
|
||||||
|
- ".github/workflows/analyze.yml"
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "main", "dev" ]
|
branches: [ "main", "dev" ]
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- reopened
|
||||||
|
- synchronize
|
||||||
|
- ready_for_review
|
||||||
paths:
|
paths:
|
||||||
- "**.dart"
|
- "**.dart"
|
||||||
- ".github/workflows/analyze.yml"
|
- ".github/workflows/analyze.yml"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
|
name: "Static analysis & format check"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
name: PR Build
|
name: PR Build
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
pull_request:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
@ -71,7 +71,7 @@ dependencies {
|
|||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
|
|
||||||
// ReVanced
|
// ReVanced
|
||||||
implementation "app.revanced:revanced-patcher:11.0.4"
|
implementation "app.revanced:revanced-patcher:12.1.0"
|
||||||
|
|
||||||
// Signing & aligning
|
// Signing & aligning
|
||||||
implementation("org.bouncycastle:bcpkix-jdk15on:1.70")
|
implementation("org.bouncycastle:bcpkix-jdk15on:1.70")
|
||||||
|
@ -2,23 +2,29 @@
|
|||||||
package="app.revanced.manager.flutter">
|
package="app.revanced.manager.flutter">
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
|
||||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||||
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
|
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
|
||||||
|
android:maxSdkVersion="32" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||||
|
android:maxSdkVersion="32" />
|
||||||
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
|
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
|
|
||||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||||
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
|
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
|
||||||
<application
|
<application
|
||||||
android:label="ReVanced Manager"
|
android:label="ReVanced Manager"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
android:icon="@mipmap/ic_launcher"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:largeHeap="true"
|
android:largeHeap="true"
|
||||||
|
android:requestLegacyExternalStorage="true"
|
||||||
android:extractNativeLibs="true"
|
android:extractNativeLibs="true"
|
||||||
android:enableOnBackInvokedCallback="true">
|
android:enableOnBackInvokedCallback="true">
|
||||||
<activity
|
<activity
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
org.gradle.jvmargs=-Xmx1536M
|
org.gradle.jvmargs=-Xmx1536M -XX:+UseParallelGC
|
||||||
|
org.gradle.parallel=true
|
||||||
|
org.gradle.daemon=true
|
||||||
|
org.gradle.caching=true
|
||||||
android.useAndroidX=true
|
android.useAndroidX=true
|
||||||
android.enableJetifier=true
|
android.enableJetifier=true
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "تسجيل الحراسة",
|
"sentryLabel": "تسجيل الحراسة",
|
||||||
"sentryHint": "إرسال سجلات مجهولة لمساعدتنا في تحسين ReVanced Manager",
|
"sentryHint": "إرسال سجلات مجهولة لمساعدتنا في تحسين ReVanced Manager",
|
||||||
"restartAppForChanges": "إعادة تشغيل التطبيق لتطبيق التغييرات",
|
"restartAppForChanges": "إعادة تشغيل التطبيق لتطبيق التغييرات",
|
||||||
"deleteKeystoreLabel": "حذف ملف تخزين المفاتيح",
|
"regenerateKeystoreLabel": "حذف ملف تخزين المفاتيح",
|
||||||
"deleteKeystoreHint": "حذف ملف تخزين المفاتيح المستخدم للتوقيع على التطبيق",
|
"regenerateKeystoreHint": "حذف ملف تخزين المفاتيح المستخدم للتوقيع على التطبيق",
|
||||||
"deletedKeystore": "تم حذف مِلَفّ تخزين المفاتيح",
|
"regeneratedKeystore": "تم حذف مِلَفّ تخزين المفاتيح",
|
||||||
"deleteTempDirLabel": "حذف الملفات المؤقتة",
|
"deleteTempDirLabel": "حذف الملفات المؤقتة",
|
||||||
"deleteTempDirHint": "حذف الملفات المؤقتة غير المستخدمة",
|
"deleteTempDirHint": "حذف الملفات المؤقتة غير المستخدمة",
|
||||||
"deletedTempDir": "تم حذف الملفات المؤقتة",
|
"deletedTempDir": "تم حذف الملفات المؤقتة",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Keşikçi jurnalı",
|
"sentryLabel": "Keşikçi jurnalı",
|
||||||
"sentryHint": "ReVanced Manager-i inkişaf etdirməyimizə kömək etməsi üçün anonim jurnallar göndərin",
|
"sentryHint": "ReVanced Manager-i inkişaf etdirməyimizə kömək etməsi üçün anonim jurnallar göndərin",
|
||||||
"restartAppForChanges": "Dəyişiklikləri tətbiq etmək üçün tətbiqi yenidən başlat",
|
"restartAppForChanges": "Dəyişiklikləri tətbiq etmək üçün tətbiqi yenidən başlat",
|
||||||
"deleteKeystoreLabel": "Keystore-u sil",
|
"regenerateKeystoreLabel": "Keystore-u sil",
|
||||||
"deleteKeystoreHint": "Tətbiqi imzalamaq üçün istifadə edilən keystoru-u sil",
|
"regenerateKeystoreHint": "Tətbiqi imzalamaq üçün istifadə edilən keystoru-u sil",
|
||||||
"deletedKeystore": "Keystore silindi",
|
"regeneratedKeystore": "Keystore silindi",
|
||||||
"deleteTempDirLabel": "Müvəqqəti faylları sil",
|
"deleteTempDirLabel": "Müvəqqəti faylları sil",
|
||||||
"deleteTempDirHint": "İstifadə edilməyən müvəqqəti faylları sil",
|
"deleteTempDirHint": "İstifadə edilməyən müvəqqəti faylları sil",
|
||||||
"deletedTempDir": "Müvəqqəti fayllar silindi",
|
"deletedTempDir": "Müvəqqəti fayllar silindi",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Sentry логване",
|
"sentryLabel": "Sentry логване",
|
||||||
"sentryHint": "Пращайте анонимни логове за да ни помогнете да подобрим ReVanced Manager",
|
"sentryHint": "Пращайте анонимни логове за да ни помогнете да подобрим ReVanced Manager",
|
||||||
"restartAppForChanges": "Рестартирайте приложението, за да се приложат промените",
|
"restartAppForChanges": "Рестартирайте приложението, за да се приложат промените",
|
||||||
"deleteKeystoreLabel": "Изтриване на keystore",
|
"regenerateKeystoreLabel": "Изтриване на keystore",
|
||||||
"deleteKeystoreHint": "Изтриване на keystore използван за подписване на приложението",
|
"regenerateKeystoreHint": "Изтриване на keystore използван за подписване на приложението",
|
||||||
"deletedKeystore": "Keystore изтрит",
|
"regeneratedKeystore": "Keystore изтрит",
|
||||||
"deleteTempDirLabel": "Изтриване на временни файлове",
|
"deleteTempDirLabel": "Изтриване на временни файлове",
|
||||||
"deleteTempDirHint": "Изтриване на неизползвани временни файлове",
|
"deleteTempDirHint": "Изтриване на неизползвани временни файлове",
|
||||||
"deletedTempDir": "Временните файлове са изтрити",
|
"deletedTempDir": "Временните файлове са изтрити",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "সেন্ট্রি লগিং",
|
"sentryLabel": "সেন্ট্রি লগিং",
|
||||||
"sentryHint": "ReVanced Manager উন্নত করতে আমাদের সাহায্য করতে বেনামী লগ পাঠান",
|
"sentryHint": "ReVanced Manager উন্নত করতে আমাদের সাহায্য করতে বেনামী লগ পাঠান",
|
||||||
"restartAppForChanges": "পরিবর্তনগুলি প্রয়োগ করতে অ্যাপটি পুনরায় চালু করুন",
|
"restartAppForChanges": "পরিবর্তনগুলি প্রয়োগ করতে অ্যাপটি পুনরায় চালু করুন",
|
||||||
"deleteKeystoreLabel": "কীস্টোর মুছুন",
|
"regenerateKeystoreLabel": "কীস্টোর মুছুন",
|
||||||
"deleteKeystoreHint": "প্যাচড অ্যাপ সাইন করতে ব্যবহৃত কীস্টোরটি মুছুন",
|
"regenerateKeystoreHint": "প্যাচড অ্যাপ সাইন করতে ব্যবহৃত কীস্টোরটি মুছুন",
|
||||||
"deletedKeystore": "কীস্টোর মুছে ফেলা হয়েছে",
|
"regeneratedKeystore": "কীস্টোর মুছে ফেলা হয়েছে",
|
||||||
"deleteTempDirLabel": "অস্থায়ী ফাইল মুছুন",
|
"deleteTempDirLabel": "অস্থায়ী ফাইল মুছুন",
|
||||||
"deleteTempDirHint": "অব্যবহৃত অস্থায়ী ফাইল মুছুন",
|
"deleteTempDirHint": "অব্যবহৃত অস্থায়ী ফাইল মুছুন",
|
||||||
"deletedTempDir": "অস্থায়ী ফাইল মুছে ফেলা হয়েছে",
|
"deletedTempDir": "অস্থায়ী ফাইল মুছে ফেলা হয়েছে",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Log Sentry",
|
"sentryLabel": "Log Sentry",
|
||||||
"sentryHint": "Odeslat anonymní protokoly, které nám pomohou zlepšit ReVanced Manager",
|
"sentryHint": "Odeslat anonymní protokoly, které nám pomohou zlepšit ReVanced Manager",
|
||||||
"restartAppForChanges": "Pro aplikování změn restartuj aplikaci",
|
"restartAppForChanges": "Pro aplikování změn restartuj aplikaci",
|
||||||
"deleteKeystoreLabel": "Vymazat úložiště klíčů",
|
"regenerateKeystoreLabel": "Vymazat úložiště klíčů",
|
||||||
"deleteKeystoreHint": "Smazat úložiště klíčů používané k podpisu aplikace",
|
"regenerateKeystoreHint": "Smazat úložiště klíčů používané k podpisu aplikace",
|
||||||
"deletedKeystore": "Úložiště klíčů bylo smazáno",
|
"regeneratedKeystore": "Úložiště klíčů bylo smazáno",
|
||||||
"deleteTempDirLabel": "Odstranit dočasné soubory",
|
"deleteTempDirLabel": "Odstranit dočasné soubory",
|
||||||
"deleteTempDirHint": "Odstranit nepoužité dočasné soubory",
|
"deleteTempDirHint": "Odstranit nepoužité dočasné soubory",
|
||||||
"deletedTempDir": "Dočasné soubory byly smazány",
|
"deletedTempDir": "Dočasné soubory byly smazány",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Sentry logning",
|
"sentryLabel": "Sentry logning",
|
||||||
"sentryHint": "Send anonyme logfiler for at hjælpe os med at forbedre ReVanced Manager",
|
"sentryHint": "Send anonyme logfiler for at hjælpe os med at forbedre ReVanced Manager",
|
||||||
"restartAppForChanges": "Genstart appen for at anvende ændringer",
|
"restartAppForChanges": "Genstart appen for at anvende ændringer",
|
||||||
"deleteKeystoreLabel": "Slet keystore",
|
"regenerateKeystoreLabel": "Slet keystore",
|
||||||
"deleteKeystoreHint": "Slet keystore der bruges til at signere appen",
|
"regenerateKeystoreHint": "Slet keystore der bruges til at signere appen",
|
||||||
"deletedKeystore": "Keystore slettet",
|
"regeneratedKeystore": "Keystore slettet",
|
||||||
"deleteTempDirLabel": "Slet midlertidige filer",
|
"deleteTempDirLabel": "Slet midlertidige filer",
|
||||||
"deleteTempDirHint": "Slet ubrugte midlertidige filer",
|
"deleteTempDirHint": "Slet ubrugte midlertidige filer",
|
||||||
"deletedTempDir": "Midlertidige filer slettet",
|
"deletedTempDir": "Midlertidige filer slettet",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Sentry-Protokollierung",
|
"sentryLabel": "Sentry-Protokollierung",
|
||||||
"sentryHint": "Sende anonyme Protokolle, um den ReVanced Manager zu verbessern",
|
"sentryHint": "Sende anonyme Protokolle, um den ReVanced Manager zu verbessern",
|
||||||
"restartAppForChanges": "Starte die App neu um die Änderungen zu übernehmen",
|
"restartAppForChanges": "Starte die App neu um die Änderungen zu übernehmen",
|
||||||
"deleteKeystoreLabel": "Den Schlüsselspeicher löschen",
|
"regenerateKeystoreLabel": "Den Schlüsselspeicher löschen",
|
||||||
"deleteKeystoreHint": "Löschen des Schlüsselspeichers, der zum Signieren der Anwendung verwendet wurde",
|
"regenerateKeystoreHint": "Löschen des Schlüsselspeichers, der zum Signieren der Anwendung verwendet wurde",
|
||||||
"deletedKeystore": "Schlüsselspeicher gelöscht",
|
"regeneratedKeystore": "Schlüsselspeicher gelöscht",
|
||||||
"deleteTempDirLabel": "Lösche temporäre Dateien",
|
"deleteTempDirLabel": "Lösche temporäre Dateien",
|
||||||
"deleteTempDirHint": "Unbenutzte temporäre Dateien löschen",
|
"deleteTempDirHint": "Unbenutzte temporäre Dateien löschen",
|
||||||
"deletedTempDir": "Temporäre Dateien gelöscht",
|
"deletedTempDir": "Temporäre Dateien gelöscht",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Αρχεία καταγραφής «Sentry»",
|
"sentryLabel": "Αρχεία καταγραφής «Sentry»",
|
||||||
"sentryHint": "Στείλτε ανώνυμα αρχεία καταγραφής για να μας βοηθήσετε να βελτιώσουμε το ReVanced Manager",
|
"sentryHint": "Στείλτε ανώνυμα αρχεία καταγραφής για να μας βοηθήσετε να βελτιώσουμε το ReVanced Manager",
|
||||||
"restartAppForChanges": "Επανεκκινήστε την εφαρμογή για να εφαρμόσετε αλλαγές",
|
"restartAppForChanges": "Επανεκκινήστε την εφαρμογή για να εφαρμόσετε αλλαγές",
|
||||||
"deleteKeystoreLabel": "Διαγραφή κλειδιών",
|
"regenerateKeystoreLabel": "Διαγραφή κλειδιών",
|
||||||
"deleteKeystoreHint": "Διαγράψτε το κλειδί που χρησιμοποιείται για την υπογραφή της εφαρμογής",
|
"regenerateKeystoreHint": "Διαγράψτε το κλειδί που χρησιμοποιείται για την υπογραφή της εφαρμογής",
|
||||||
"deletedKeystore": "Το κλειδί διαγράφηκε",
|
"regeneratedKeystore": "Το κλειδί διαγράφηκε",
|
||||||
"deleteTempDirLabel": "Διαγραφή προσωρινών αρχείων",
|
"deleteTempDirLabel": "Διαγραφή προσωρινών αρχείων",
|
||||||
"deleteTempDirHint": "Διαγραφή των αχρησιμοποίητων προσωρινών αρχείων",
|
"deleteTempDirHint": "Διαγραφή των αχρησιμοποίητων προσωρινών αρχείων",
|
||||||
"deletedTempDir": "Τα προσωρινά αρχεία διαγράφηκαν",
|
"deletedTempDir": "Τα προσωρινά αρχεία διαγράφηκαν",
|
||||||
|
@ -211,17 +211,21 @@
|
|||||||
|
|
||||||
"resetStoredPatchesLabel": "Reset patches",
|
"resetStoredPatchesLabel": "Reset patches",
|
||||||
"resetStoredPatchesHint": "Reset the stored patches selection",
|
"resetStoredPatchesHint": "Reset the stored patches selection",
|
||||||
"resetStoredPatchesDialogText": "Are you sure you want to reset the stored patches selection?",
|
|
||||||
|
"resetStoredPatchesDialogTitle": "Reset patches selection?",
|
||||||
|
"resetStoredPatchesDialogText": "Resetting patches selection will remove all selected patches.",
|
||||||
"resetStoredPatches": "Patches selection has been reset",
|
"resetStoredPatches": "Patches selection has been reset",
|
||||||
|
|
||||||
"deleteLogsLabel": "Delete logs",
|
"deleteLogsLabel": "Delete logs",
|
||||||
"deleteLogsHint": "Delete collected manager logs",
|
"deleteLogsHint": "Delete collected manager logs",
|
||||||
"deletedLogs": "Logs deleted",
|
"deletedLogs": "Logs deleted",
|
||||||
|
|
||||||
"deleteKeystoreLabel": "Delete keystore",
|
"regenerateKeystoreLabel": "Regenerate keystore",
|
||||||
"deleteKeystoreHint": "Delete the keystore used to sign the app",
|
"regenerateKeystoreHint": "Regenerate the keystore used to sign the app",
|
||||||
"deleteKeystoreDialogText": "Are you sure you want to delete the keystore used to sign patched applications?",
|
|
||||||
"deletedKeystore": "Keystore deleted",
|
"regenerateKeystoreDialogTitle": "Regenerate keystore?",
|
||||||
|
"regenerateKeystoreDialogText": "Patched apps signed with the old keystore will no longer be able to update.",
|
||||||
|
"regeneratedKeystore": "Keystore regenerated",
|
||||||
|
|
||||||
"exportKeystoreLabel": "Export keystore",
|
"exportKeystoreLabel": "Export keystore",
|
||||||
"exportKeystoreHint": "Export keystore used to sign apps",
|
"exportKeystoreHint": "Export keystore used to sign apps",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Registro Sentry",
|
"sentryLabel": "Registro Sentry",
|
||||||
"sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager",
|
"sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager",
|
||||||
"restartAppForChanges": "Reinicie la app para aplicar los cambios",
|
"restartAppForChanges": "Reinicie la app para aplicar los cambios",
|
||||||
"deleteKeystoreLabel": "Eliminar keystore",
|
"regenerateKeystoreLabel": "Eliminar keystore",
|
||||||
"deleteKeystoreHint": "Eliminar el keystore usado para firmar la app",
|
"regenerateKeystoreHint": "Eliminar el keystore usado para firmar la app",
|
||||||
"deletedKeystore": "Keystore eliminado",
|
"regeneratedKeystore": "Keystore eliminado",
|
||||||
"deleteTempDirLabel": "Borrar archivos temporales",
|
"deleteTempDirLabel": "Borrar archivos temporales",
|
||||||
"deleteTempDirHint": "Eliminar archivos temporales no utilizados",
|
"deleteTempDirHint": "Eliminar archivos temporales no utilizados",
|
||||||
"deletedTempDir": "Archivos temporales eliminados",
|
"deletedTempDir": "Archivos temporales eliminados",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Registro centinela",
|
"sentryLabel": "Registro centinela",
|
||||||
"sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager",
|
"sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager",
|
||||||
"restartAppForChanges": "Reinicie la aplicación para aplicar los cambios",
|
"restartAppForChanges": "Reinicie la aplicación para aplicar los cambios",
|
||||||
"deleteKeystoreLabel": "Eliminar keystore",
|
"regenerateKeystoreLabel": "Eliminar keystore",
|
||||||
"deleteKeystoreHint": "Eliminar el keystore usado para firmar la app",
|
"regenerateKeystoreHint": "Eliminar el keystore usado para firmar la app",
|
||||||
"deletedKeystore": "Keystore eliminado",
|
"regeneratedKeystore": "Keystore eliminado",
|
||||||
"deleteTempDirLabel": "Borrar archivos temporales",
|
"deleteTempDirLabel": "Borrar archivos temporales",
|
||||||
"deleteTempDirHint": "Eliminar archivos temporales sin utilizar",
|
"deleteTempDirHint": "Eliminar archivos temporales sin utilizar",
|
||||||
"deletedTempDir": "Archivos temporales eliminados",
|
"deletedTempDir": "Archivos temporales eliminados",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Sentry-lokikirjaus",
|
"sentryLabel": "Sentry-lokikirjaus",
|
||||||
"sentryHint": "Lähetä nimettömiä tietoja auttaaksesi ReVanced Managerin kehityksessä",
|
"sentryHint": "Lähetä nimettömiä tietoja auttaaksesi ReVanced Managerin kehityksessä",
|
||||||
"restartAppForChanges": "Käynnistä sovellus uudestaan muutosten käyttöönottamiseksi",
|
"restartAppForChanges": "Käynnistä sovellus uudestaan muutosten käyttöönottamiseksi",
|
||||||
"deleteKeystoreLabel": "Poista avainsäilö",
|
"regenerateKeystoreLabel": "Poista avainsäilö",
|
||||||
"deleteKeystoreHint": "Poista sovelluksen allekirjoitukseen käytetty avainsäilö",
|
"regenerateKeystoreHint": "Poista sovelluksen allekirjoitukseen käytetty avainsäilö",
|
||||||
"deletedKeystore": "Avainsäilö poistettiin",
|
"regeneratedKeystore": "Avainsäilö poistettiin",
|
||||||
"deleteTempDirLabel": "Poista väliaikaistiedostot",
|
"deleteTempDirLabel": "Poista väliaikaistiedostot",
|
||||||
"deleteTempDirHint": "Poista käyttämättömät väliaikaistiedostot",
|
"deleteTempDirHint": "Poista käyttämättömät väliaikaistiedostot",
|
||||||
"deletedTempDir": "Väliaikaistiedostot poistettiin",
|
"deletedTempDir": "Väliaikaistiedostot poistettiin",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Journal sentinel",
|
"sentryLabel": "Journal sentinel",
|
||||||
"sentryHint": "Envoyer des journaux anonymes pour nous aider à améliorer ReVanced Manager",
|
"sentryHint": "Envoyer des journaux anonymes pour nous aider à améliorer ReVanced Manager",
|
||||||
"restartAppForChanges": "Redémarrez l'application pour appliquer les changements",
|
"restartAppForChanges": "Redémarrez l'application pour appliquer les changements",
|
||||||
"deleteKeystoreLabel": "Supprimer le magasin de clés",
|
"regenerateKeystoreLabel": "Supprimer le magasin de clés",
|
||||||
"deleteKeystoreHint": "Supprimer le magasin de clés utilisé pour signer l'application",
|
"regenerateKeystoreHint": "Supprimer le magasin de clés utilisé pour signer l'application",
|
||||||
"deletedKeystore": "Magasin de clés supprimé",
|
"regeneratedKeystore": "Magasin de clés supprimé",
|
||||||
"deleteTempDirLabel": "Supprimer les fichiers temporaires",
|
"deleteTempDirLabel": "Supprimer les fichiers temporaires",
|
||||||
"deleteTempDirHint": "Supprimer les fichiers temporaires inutilisés",
|
"deleteTempDirHint": "Supprimer les fichiers temporaires inutilisés",
|
||||||
"deletedTempDir": "Fichiers temporaires supprimés",
|
"deletedTempDir": "Fichiers temporaires supprimés",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "संतरी लॉगिंग",
|
"sentryLabel": "संतरी लॉगिंग",
|
||||||
"sentryHint": "उन्नत प्रबंधक को बेहतर बनाने में हमारी सहायता करने के लिए अनाम लॉग भेजें",
|
"sentryHint": "उन्नत प्रबंधक को बेहतर बनाने में हमारी सहायता करने के लिए अनाम लॉग भेजें",
|
||||||
"restartAppForChanges": "Restart the app to apply changes",
|
"restartAppForChanges": "Restart the app to apply changes",
|
||||||
"deleteKeystoreLabel": "कीस्टोर मिटाएं",
|
"regenerateKeystoreLabel": "कीस्टोर मिटाएं",
|
||||||
"deleteKeystoreHint": "ऐप पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कीस्टोर हटाएं",
|
"regenerateKeystoreHint": "ऐप पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कीस्टोर हटाएं",
|
||||||
"deletedKeystore": "कीस्टोर हटा दिया गया",
|
"regeneratedKeystore": "कीस्टोर हटा दिया गया",
|
||||||
"deleteTempDirLabel": "अस्थाई फ़ाइलें मिटायें",
|
"deleteTempDirLabel": "अस्थाई फ़ाइलें मिटायें",
|
||||||
"deleteTempDirHint": "अप्रयुक्त अस्थाई फ़ाइलें मिटायें",
|
"deleteTempDirHint": "अप्रयुक्त अस्थाई फ़ाइलें मिटायें",
|
||||||
"deletedTempDir": "क्षणिक फ़ाईल मिटाए गए।",
|
"deletedTempDir": "क्षणिक फ़ाईल मिटाए गए।",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Sentry naplózás",
|
"sentryLabel": "Sentry naplózás",
|
||||||
"sentryHint": "Névtelen használati adatok küldésével hozzájárulhatsz, hogy a ReVanced Manager még jobb legyen",
|
"sentryHint": "Névtelen használati adatok küldésével hozzájárulhatsz, hogy a ReVanced Manager még jobb legyen",
|
||||||
"restartAppForChanges": "Indítsd újra az alkalmazást a változások alkalmazásához",
|
"restartAppForChanges": "Indítsd újra az alkalmazást a változások alkalmazásához",
|
||||||
"deleteKeystoreLabel": "Kulcstartó törlése",
|
"regenerateKeystoreLabel": "Kulcstartó törlése",
|
||||||
"deleteKeystoreHint": "Törli az alkalmazás aláírásához használt kulcstartót",
|
"regenerateKeystoreHint": "Törli az alkalmazás aláírásához használt kulcstartót",
|
||||||
"deletedKeystore": "Kulcstartó törölve",
|
"regeneratedKeystore": "Kulcstartó törölve",
|
||||||
"deleteTempDirLabel": "Ideiglenes fájlok törlése",
|
"deleteTempDirLabel": "Ideiglenes fájlok törlése",
|
||||||
"deleteTempDirHint": "Felesleges átmeneti fájlok törlése",
|
"deleteTempDirHint": "Felesleges átmeneti fájlok törlése",
|
||||||
"deletedTempDir": "Ideiglenes fájlok törölve",
|
"deletedTempDir": "Ideiglenes fájlok törölve",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Log sentry",
|
"sentryLabel": "Log sentry",
|
||||||
"sentryHint": "Kirim log anonim untuk membantu kami meningkatkan ReVanced Manager",
|
"sentryHint": "Kirim log anonim untuk membantu kami meningkatkan ReVanced Manager",
|
||||||
"restartAppForChanges": "Mulai ulang aplikasi untuk menerapkan perubahan",
|
"restartAppForChanges": "Mulai ulang aplikasi untuk menerapkan perubahan",
|
||||||
"deleteKeystoreLabel": "Hapus penyimpanan kunci",
|
"regenerateKeystoreLabel": "Hapus penyimpanan kunci",
|
||||||
"deleteKeystoreHint": "Hapus penyimpanan kunci yang digunakan untuk menandatangani aplikasi",
|
"regenerateKeystoreHint": "Hapus penyimpanan kunci yang digunakan untuk menandatangani aplikasi",
|
||||||
"deletedKeystore": "Penyimpanan kunci dihapus",
|
"regeneratedKeystore": "Penyimpanan kunci dihapus",
|
||||||
"deleteTempDirLabel": "Hapus berkas sementara",
|
"deleteTempDirLabel": "Hapus berkas sementara",
|
||||||
"deleteTempDirHint": "Hapus berkas sementara yang tidak dipakai",
|
"deleteTempDirHint": "Hapus berkas sementara yang tidak dipakai",
|
||||||
"deletedTempDir": "Berkas sementara dihapus",
|
"deletedTempDir": "Berkas sementara dihapus",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Log di Sentry",
|
"sentryLabel": "Log di Sentry",
|
||||||
"sentryHint": "Invia log anonimi per aiutarci a migliorare ReVanced Manager",
|
"sentryHint": "Invia log anonimi per aiutarci a migliorare ReVanced Manager",
|
||||||
"restartAppForChanges": "Riavvia l'app per applicare le modifiche",
|
"restartAppForChanges": "Riavvia l'app per applicare le modifiche",
|
||||||
"deleteKeystoreLabel": "Elimina keystore",
|
"regenerateKeystoreLabel": "Elimina keystore",
|
||||||
"deleteKeystoreHint": "Elimina il keystore usato per firmare l'applicazione",
|
"regenerateKeystoreHint": "Elimina il keystore usato per firmare l'applicazione",
|
||||||
"deletedKeystore": "Keystore eliminato",
|
"regeneratedKeystore": "Keystore eliminato",
|
||||||
"deleteTempDirLabel": "Elimina file temporanei",
|
"deleteTempDirLabel": "Elimina file temporanei",
|
||||||
"deleteTempDirHint": "Elimina i file temporanei non utilizzati",
|
"deleteTempDirHint": "Elimina i file temporanei non utilizzati",
|
||||||
"deletedTempDir": "File temporanei eliminati",
|
"deletedTempDir": "File temporanei eliminati",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Sentry 로깅",
|
"sentryLabel": "Sentry 로깅",
|
||||||
"sentryHint": "익명의 로그를 보내 ReVanced Manager를 개선할 수 있도록 도와주세요",
|
"sentryHint": "익명의 로그를 보내 ReVanced Manager를 개선할 수 있도록 도와주세요",
|
||||||
"restartAppForChanges": "변경 사항을 적용하려면 앱을 다시 시작하세요",
|
"restartAppForChanges": "변경 사항을 적용하려면 앱을 다시 시작하세요",
|
||||||
"deleteKeystoreLabel": "키스토어 제거",
|
"regenerateKeystoreLabel": "키스토어 제거",
|
||||||
"deleteKeystoreHint": "앱을 서명하기 위해 사용되는 키스토어를 제거합니다.",
|
"regenerateKeystoreHint": "앱을 서명하기 위해 사용되는 키스토어를 제거합니다.",
|
||||||
"deletedKeystore": "키스토어 제거됨",
|
"regeneratedKeystore": "키스토어 제거됨",
|
||||||
"deleteTempDirLabel": "임시 파일 삭제",
|
"deleteTempDirLabel": "임시 파일 삭제",
|
||||||
"deleteTempDirHint": "사용되지 않은 임시 파일 삭제",
|
"deleteTempDirHint": "사용되지 않은 임시 파일 삭제",
|
||||||
"deletedTempDir": "임시 파일 삭제됨",
|
"deletedTempDir": "임시 파일 삭제됨",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Klaidų rinkimo įrankio įrašai",
|
"sentryLabel": "Klaidų rinkimo įrankio įrašai",
|
||||||
"sentryHint": "Siųsti anoniminius įrašus, kad padėtumėte mums tobulinti ReVanced Manager",
|
"sentryHint": "Siųsti anoniminius įrašus, kad padėtumėte mums tobulinti ReVanced Manager",
|
||||||
"restartAppForChanges": "Iš naujo paleiskite programą, kad modifikacijos įsigaliotų",
|
"restartAppForChanges": "Iš naujo paleiskite programą, kad modifikacijos įsigaliotų",
|
||||||
"deleteKeystoreLabel": "Ištrinti keystore",
|
"regenerateKeystoreLabel": "Ištrinti keystore",
|
||||||
"deleteKeystoreHint": "Ištrinti keystore kuris naudojamas pasirašyti programą",
|
"regenerateKeystoreHint": "Ištrinti keystore kuris naudojamas pasirašyti programą",
|
||||||
"deletedKeystore": "Keystore ištrintas",
|
"regeneratedKeystore": "Keystore ištrintas",
|
||||||
"deleteTempDirLabel": "Ištrinti laikinus failus",
|
"deleteTempDirLabel": "Ištrinti laikinus failus",
|
||||||
"deleteTempDirHint": "Ištrinti nenaudojamus laikinus failus",
|
"deleteTempDirHint": "Ištrinti nenaudojamus laikinus failus",
|
||||||
"deletedTempDir": "Laikini failai ištrinti",
|
"deletedTempDir": "Laikini failai ištrinti",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Rekod Sentry",
|
"sentryLabel": "Rekod Sentry",
|
||||||
"sentryHint": "Hantarkan log anonymous untuk bantu kami menambah baik Revanced Manager",
|
"sentryHint": "Hantarkan log anonymous untuk bantu kami menambah baik Revanced Manager",
|
||||||
"restartAppForChanges": "Mulakan semula apl untuk menggunakan tetapan",
|
"restartAppForChanges": "Mulakan semula apl untuk menggunakan tetapan",
|
||||||
"deleteKeystoreLabel": "Buang keystore",
|
"regenerateKeystoreLabel": "Buang keystore",
|
||||||
"deleteKeystoreHint": "Buang keystore yang digunakan untuk mengesahkan apl",
|
"regenerateKeystoreHint": "Buang keystore yang digunakan untuk mengesahkan apl",
|
||||||
"deletedKeystore": "Keystore dibuang",
|
"regeneratedKeystore": "Keystore dibuang",
|
||||||
"deleteTempDirLabel": "Buang fail sementara",
|
"deleteTempDirLabel": "Buang fail sementara",
|
||||||
"deleteTempDirHint": "Buang fail sementara yang tidak digunakan",
|
"deleteTempDirHint": "Buang fail sementara yang tidak digunakan",
|
||||||
"deletedTempDir": "Fail sementara dibuang",
|
"deletedTempDir": "Fail sementara dibuang",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Zapisywanie logów",
|
"sentryLabel": "Zapisywanie logów",
|
||||||
"sentryHint": "Wysyłaj anonimowe logi, aby pomóc nam ulepszyć ReVanced Manager",
|
"sentryHint": "Wysyłaj anonimowe logi, aby pomóc nam ulepszyć ReVanced Manager",
|
||||||
"restartAppForChanges": "Zrestartuj aplikację, aby zastosować zmiany",
|
"restartAppForChanges": "Zrestartuj aplikację, aby zastosować zmiany",
|
||||||
"deleteKeystoreLabel": "Usuń klucz",
|
"regenerateKeystoreLabel": "Usuń klucz",
|
||||||
"deleteKeystoreHint": "Usuń klucz używany do podpisywania aplikacji",
|
"regenerateKeystoreHint": "Usuń klucz używany do podpisywania aplikacji",
|
||||||
"deletedKeystore": "Klucz usunięty",
|
"regeneratedKeystore": "Klucz usunięty",
|
||||||
"deleteTempDirLabel": "Usuń pliki tymczasowe",
|
"deleteTempDirLabel": "Usuń pliki tymczasowe",
|
||||||
"deleteTempDirHint": "Usuń nieużywane pliki tymczasowe",
|
"deleteTempDirHint": "Usuń nieużywane pliki tymczasowe",
|
||||||
"deletedTempDir": "Pliki tymczasowe zostały usunięte",
|
"deletedTempDir": "Pliki tymczasowe zostały usunięte",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Registro do sentinela de erros",
|
"sentryLabel": "Registro do sentinela de erros",
|
||||||
"sentryHint": "Envie registros anônimos para nos ajudar a melhorar o ReVanced Manager",
|
"sentryHint": "Envie registros anônimos para nos ajudar a melhorar o ReVanced Manager",
|
||||||
"restartAppForChanges": "Reinicie o app para aplicar as mudanças",
|
"restartAppForChanges": "Reinicie o app para aplicar as mudanças",
|
||||||
"deleteKeystoreLabel": "Apagar registro de chaves",
|
"regenerateKeystoreLabel": "Apagar registro de chaves",
|
||||||
"deleteKeystoreHint": "Apagar o registro de chaves usado para assinar o app",
|
"regenerateKeystoreHint": "Apagar o registro de chaves usado para assinar o app",
|
||||||
"deletedKeystore": "Registro de chaves apagado",
|
"regeneratedKeystore": "Registro de chaves apagado",
|
||||||
"deleteTempDirLabel": "Apagar arquivos temporários",
|
"deleteTempDirLabel": "Apagar arquivos temporários",
|
||||||
"deleteTempDirHint": "Apagar os arquivos temporários inutilizados",
|
"deleteTempDirHint": "Apagar os arquivos temporários inutilizados",
|
||||||
"deletedTempDir": "Arquivos temporários apagados",
|
"deletedTempDir": "Arquivos temporários apagados",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Registo do coletor de erros",
|
"sentryLabel": "Registo do coletor de erros",
|
||||||
"sentryHint": "Enviar registos anónimos para nos ajudar a melhorar o ReVanced Manager",
|
"sentryHint": "Enviar registos anónimos para nos ajudar a melhorar o ReVanced Manager",
|
||||||
"restartAppForChanges": "Reinicia a aplicação para aplicar as alterações",
|
"restartAppForChanges": "Reinicia a aplicação para aplicar as alterações",
|
||||||
"deleteKeystoreLabel": "Excluir keystore",
|
"regenerateKeystoreLabel": "Excluir keystore",
|
||||||
"deleteKeystoreHint": "Excluir a keystore usada para assinar a aplicação",
|
"regenerateKeystoreHint": "Excluir a keystore usada para assinar a aplicação",
|
||||||
"deletedKeystore": "Keystore excluída",
|
"regeneratedKeystore": "Keystore excluída",
|
||||||
"deleteTempDirLabel": "Apagar arquivos temporários",
|
"deleteTempDirLabel": "Apagar arquivos temporários",
|
||||||
"deleteTempDirHint": "Apagar arquivos temporários não utilizados",
|
"deleteTempDirHint": "Apagar arquivos temporários não utilizados",
|
||||||
"deletedTempDir": "Arquivos temporários apagados",
|
"deletedTempDir": "Arquivos temporários apagados",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Logging de Santinelă",
|
"sentryLabel": "Logging de Santinelă",
|
||||||
"sentryHint": "Trimite log-uri anonime pentru a ne ajuta să îmbunătățim ReVanced Manager",
|
"sentryHint": "Trimite log-uri anonime pentru a ne ajuta să îmbunătățim ReVanced Manager",
|
||||||
"restartAppForChanges": "Reporniți aplicația pentru a aplica modificările",
|
"restartAppForChanges": "Reporniți aplicația pentru a aplica modificările",
|
||||||
"deleteKeystoreLabel": "Ștergeți keystore-ul",
|
"regenerateKeystoreLabel": "Ștergeți keystore-ul",
|
||||||
"deleteKeystoreHint": "Ștergeți keystore-ul utilizat pentru a însemna aplicația",
|
"regenerateKeystoreHint": "Ștergeți keystore-ul utilizat pentru a însemna aplicația",
|
||||||
"deletedKeystore": "Keystore șters",
|
"regeneratedKeystore": "Keystore șters",
|
||||||
"deleteTempDirLabel": "Ștergeți fișierele temporare",
|
"deleteTempDirLabel": "Ștergeți fișierele temporare",
|
||||||
"deleteTempDirHint": "Șterge fișierele temporare neutilizate",
|
"deleteTempDirHint": "Șterge fișierele temporare neutilizate",
|
||||||
"deletedTempDir": "Fișierele temporare au fost șterse",
|
"deletedTempDir": "Fișierele temporare au fost șterse",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Логирование Sentry",
|
"sentryLabel": "Логирование Sentry",
|
||||||
"sentryHint": "Отправлять анонимные логи для улучшения ReVanced Manager-а",
|
"sentryHint": "Отправлять анонимные логи для улучшения ReVanced Manager-а",
|
||||||
"restartAppForChanges": "Перезапустите приложение для применения изменений",
|
"restartAppForChanges": "Перезапустите приложение для применения изменений",
|
||||||
"deleteKeystoreLabel": "Удалить хранилище ключей",
|
"regenerateKeystoreLabel": "Удалить хранилище ключей",
|
||||||
"deleteKeystoreHint": "Удалить хранилище ключей, использованных для подписи приложения",
|
"regenerateKeystoreHint": "Удалить хранилище ключей, использованных для подписи приложения",
|
||||||
"deletedKeystore": "Хранилище ключей удалено",
|
"regeneratedKeystore": "Хранилище ключей удалено",
|
||||||
"deleteTempDirLabel": "Удалить временные файлы",
|
"deleteTempDirLabel": "Удалить временные файлы",
|
||||||
"deleteTempDirHint": "Удалить неиспользуемые временные файлы",
|
"deleteTempDirHint": "Удалить неиспользуемые временные файлы",
|
||||||
"deletedTempDir": "Временные файлы удалены",
|
"deletedTempDir": "Временные файлы удалены",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Log Sentry",
|
"sentryLabel": "Log Sentry",
|
||||||
"sentryHint": "Odoslať anonymné protokoly, ktoré nám pomôžu zlepšiť ReVanced Manager",
|
"sentryHint": "Odoslať anonymné protokoly, ktoré nám pomôžu zlepšiť ReVanced Manager",
|
||||||
"restartAppForChanges": "Ak chcete použiť zmeny, reštartujte aplikáciu",
|
"restartAppForChanges": "Ak chcete použiť zmeny, reštartujte aplikáciu",
|
||||||
"deleteKeystoreLabel": "Odstrániť úložisko kľúčov",
|
"regenerateKeystoreLabel": "Odstrániť úložisko kľúčov",
|
||||||
"deleteKeystoreHint": "Odstrániť úložisko kľúčov použité na podpísanie aplikácie",
|
"regenerateKeystoreHint": "Odstrániť úložisko kľúčov použité na podpísanie aplikácie",
|
||||||
"deletedKeystore": "Úložisko kľúčov odstránené",
|
"regeneratedKeystore": "Úložisko kľúčov odstránené",
|
||||||
"deleteTempDirLabel": "Odstrániť dočasné súbory",
|
"deleteTempDirLabel": "Odstrániť dočasné súbory",
|
||||||
"deleteTempDirHint": "Odstrániť nepoužívané dočasné súbory",
|
"deleteTempDirHint": "Odstrániť nepoužívané dočasné súbory",
|
||||||
"deletedTempDir": "Dočasné súbory odstránené",
|
"deletedTempDir": "Dočasné súbory odstránené",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Sentry prikupljanje grešaka",
|
"sentryLabel": "Sentry prikupljanje grešaka",
|
||||||
"sentryHint": "Pošaljite anonimnu evidenciju da biste nam pomogli da poboljšamo ReVanced Manager",
|
"sentryHint": "Pošaljite anonimnu evidenciju da biste nam pomogli da poboljšamo ReVanced Manager",
|
||||||
"restartAppForChanges": "Ponovo pokrenite aplikaciju da biste primenili promene",
|
"restartAppForChanges": "Ponovo pokrenite aplikaciju da biste primenili promene",
|
||||||
"deleteKeystoreLabel": "Izbrišite skladište ključeva",
|
"regenerateKeystoreLabel": "Izbrišite skladište ključeva",
|
||||||
"deleteKeystoreHint": "Izbrišite skladište ključeva korišćeno za potpisivanje aplikacije",
|
"regenerateKeystoreHint": "Izbrišite skladište ključeva korišćeno za potpisivanje aplikacije",
|
||||||
"deletedKeystore": "Skladište ključeva je izbrisano",
|
"regeneratedKeystore": "Skladište ključeva je izbrisano",
|
||||||
"deleteTempDirLabel": "Izbrišite privremene datoteke",
|
"deleteTempDirLabel": "Izbrišite privremene datoteke",
|
||||||
"deleteTempDirHint": "Izbrišite nekorišćene privremene datoteke",
|
"deleteTempDirHint": "Izbrišite nekorišćene privremene datoteke",
|
||||||
"deletedTempDir": "Privremene datoteke su izbrisane",
|
"deletedTempDir": "Privremene datoteke su izbrisane",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Sentry прикупљање грешака",
|
"sentryLabel": "Sentry прикупљање грешака",
|
||||||
"sentryHint": "Пошаљите анонимну евиденцију да бисте нам помогли да побољшамо ReVanced Manager",
|
"sentryHint": "Пошаљите анонимну евиденцију да бисте нам помогли да побољшамо ReVanced Manager",
|
||||||
"restartAppForChanges": "Поново покрените апликацију да бисте применили промене",
|
"restartAppForChanges": "Поново покрените апликацију да бисте применили промене",
|
||||||
"deleteKeystoreLabel": "Избришите складиште кључева",
|
"regenerateKeystoreLabel": "Избришите складиште кључева",
|
||||||
"deleteKeystoreHint": "Избришите складиште кључева коришћено за потписивање апликације",
|
"regenerateKeystoreHint": "Избришите складиште кључева коришћено за потписивање апликације",
|
||||||
"deletedKeystore": "Складиште кључева је избрисано",
|
"regeneratedKeystore": "Складиште кључева је избрисано",
|
||||||
"deleteTempDirLabel": "Избришите привремене датотеке",
|
"deleteTempDirLabel": "Избришите привремене датотеке",
|
||||||
"deleteTempDirHint": "Избришите некоришћене привремене датотеке",
|
"deleteTempDirHint": "Избришите некоришћене привремене датотеке",
|
||||||
"deletedTempDir": "Привремене датотеке су избрисане",
|
"deletedTempDir": "Привремене датотеке су избрисане",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Sentry loggning",
|
"sentryLabel": "Sentry loggning",
|
||||||
"sentryHint": "Hjälp oss förbättra ReVanced Manager genom att skicka anonyma loggar",
|
"sentryHint": "Hjälp oss förbättra ReVanced Manager genom att skicka anonyma loggar",
|
||||||
"restartAppForChanges": "Starta om appen för att tillämpa ändringar",
|
"restartAppForChanges": "Starta om appen för att tillämpa ändringar",
|
||||||
"deleteKeystoreLabel": "Radera keystore",
|
"regenerateKeystoreLabel": "Radera keystore",
|
||||||
"deleteKeystoreHint": "Radera keystore filen som används för att signera appen",
|
"regenerateKeystoreHint": "Radera keystore filen som används för att signera appen",
|
||||||
"deletedKeystore": "Raderade keystore",
|
"regeneratedKeystore": "Raderade keystore",
|
||||||
"deleteTempDirLabel": "Ta bort temporära filer",
|
"deleteTempDirLabel": "Ta bort temporära filer",
|
||||||
"deleteTempDirHint": "Radera oanvända temporära filer",
|
"deleteTempDirHint": "Radera oanvända temporära filer",
|
||||||
"deletedTempDir": "Raderade temporära filer",
|
"deletedTempDir": "Raderade temporära filer",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Sentry logging",
|
"sentryLabel": "Sentry logging",
|
||||||
"sentryHint": "Tuma kumbukumbu bila majina ili utusaidie kuboresha Revanced Manager",
|
"sentryHint": "Tuma kumbukumbu bila majina ili utusaidie kuboresha Revanced Manager",
|
||||||
"restartAppForChanges": "Anzisha tena programu ili kutekeleza mabadiliko",
|
"restartAppForChanges": "Anzisha tena programu ili kutekeleza mabadiliko",
|
||||||
"deleteKeystoreLabel": "Futa Duka la Ufunguo",
|
"regenerateKeystoreLabel": "Futa Duka la Ufunguo",
|
||||||
"deleteKeystoreHint": "Futa Duka la Ufunguo iliyotumika kusaini programu",
|
"regenerateKeystoreHint": "Futa Duka la Ufunguo iliyotumika kusaini programu",
|
||||||
"deletedKeystore": "Duka la ufunguo imefutwa",
|
"regeneratedKeystore": "Duka la ufunguo imefutwa",
|
||||||
"deleteTempDirLabel": "Futa faili za muda",
|
"deleteTempDirLabel": "Futa faili za muda",
|
||||||
"deleteTempDirHint": "Futa faili za muda ambazo hazijatumiwa",
|
"deleteTempDirHint": "Futa faili za muda ambazo hazijatumiwa",
|
||||||
"deletedTempDir": "Faili za muda zimefutwa",
|
"deletedTempDir": "Faili za muda zimefutwa",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Sentry günlükleri",
|
"sentryLabel": "Sentry günlükleri",
|
||||||
"sentryHint": "ReVanced Manager'ı geliştirmemize yardımcı olmak için anonim günlükler gönderin",
|
"sentryHint": "ReVanced Manager'ı geliştirmemize yardımcı olmak için anonim günlükler gönderin",
|
||||||
"restartAppForChanges": "Değişiklikleri uygulamak için uygulamayı yeniden başlatın",
|
"restartAppForChanges": "Değişiklikleri uygulamak için uygulamayı yeniden başlatın",
|
||||||
"deleteKeystoreLabel": "Keystore'u sil",
|
"regenerateKeystoreLabel": "Keystore'u sil",
|
||||||
"deleteKeystoreHint": "Uygulamayı imzalamak için kullanılan keystore'u silin",
|
"regenerateKeystoreHint": "Uygulamayı imzalamak için kullanılan keystore'u silin",
|
||||||
"deletedKeystore": "Keystore silindi",
|
"regeneratedKeystore": "Keystore silindi",
|
||||||
"deleteTempDirLabel": "Geçici dosyaları sil",
|
"deleteTempDirLabel": "Geçici dosyaları sil",
|
||||||
"deleteTempDirHint": "Kullanılmayan geçici dosyaları sil",
|
"deleteTempDirHint": "Kullanılmayan geçici dosyaları sil",
|
||||||
"deletedTempDir": "Geçici dosyalar silindi",
|
"deletedTempDir": "Geçici dosyalar silindi",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "سنتری لاگنگ",
|
"sentryLabel": "سنتری لاگنگ",
|
||||||
"sentryHint": "ریوینسڈ مینیجر کی بہتری میں مدد کے لیے گمنام لاگ بھیجیں",
|
"sentryHint": "ریوینسڈ مینیجر کی بہتری میں مدد کے لیے گمنام لاگ بھیجیں",
|
||||||
"restartAppForChanges": "تبدیلیاں دیکھنے کیلیئے اپلی کیشن کو دوبارہ چلائیں",
|
"restartAppForChanges": "تبدیلیاں دیکھنے کیلیئے اپلی کیشن کو دوبارہ چلائیں",
|
||||||
"deleteKeystoreLabel": "ڈیلیٹ کی سٹور",
|
"regenerateKeystoreLabel": "ڈیلیٹ کی سٹور",
|
||||||
"deleteKeystoreHint": "ایپ پر دستخط کرنے کے لیے استعمال ہونے والے کی اسٹور کو ڈیلیٹ کریں",
|
"regenerateKeystoreHint": "ایپ پر دستخط کرنے کے لیے استعمال ہونے والے کی اسٹور کو ڈیلیٹ کریں",
|
||||||
"deletedKeystore": "کی اسٹور حذف ہو گیا ہے",
|
"regeneratedKeystore": "کی اسٹور حذف ہو گیا ہے",
|
||||||
"deleteTempDirLabel": "عارضی فائلوں کو حذف کریں",
|
"deleteTempDirLabel": "عارضی فائلوں کو حذف کریں",
|
||||||
"deleteTempDirHint": "غیر استعمال شدہ عارضی فائلوں کو حذف کریں",
|
"deleteTempDirHint": "غیر استعمال شدہ عارضی فائلوں کو حذف کریں",
|
||||||
"deletedTempDir": "عارضی فائلیں حذف کردی گئی",
|
"deletedTempDir": "عارضی فائلیں حذف کردی گئی",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "Nhật ký theo dõi",
|
"sentryLabel": "Nhật ký theo dõi",
|
||||||
"sentryHint": "Gửi nhật ký ẩn danh để giúp chúng tôi cải thiện ReVanced Manager",
|
"sentryHint": "Gửi nhật ký ẩn danh để giúp chúng tôi cải thiện ReVanced Manager",
|
||||||
"restartAppForChanges": "Khởi động lại ứng dụng để áp dụng thay đổi",
|
"restartAppForChanges": "Khởi động lại ứng dụng để áp dụng thay đổi",
|
||||||
"deleteKeystoreLabel": "Xóa kho khóa",
|
"regenerateKeystoreLabel": "Xóa kho khóa",
|
||||||
"deleteKeystoreHint": "Xóa kho khóa dùng để ký ứng dụng",
|
"regenerateKeystoreHint": "Xóa kho khóa dùng để ký ứng dụng",
|
||||||
"deletedKeystore": "Kho khóa đã xóa",
|
"regeneratedKeystore": "Kho khóa đã xóa",
|
||||||
"deleteTempDirLabel": "Xóa tệp tạm thời",
|
"deleteTempDirLabel": "Xóa tệp tạm thời",
|
||||||
"deleteTempDirHint": "Xóa các tệp tạm thời không sử dụng",
|
"deleteTempDirHint": "Xóa các tệp tạm thời không sử dụng",
|
||||||
"deletedTempDir": "Đã xóa các tệp tạm thời",
|
"deletedTempDir": "Đã xóa các tệp tạm thời",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "哨兵日志",
|
"sentryLabel": "哨兵日志",
|
||||||
"sentryHint": "发送匿名日志以帮助我们改进ReVanced Manager",
|
"sentryHint": "发送匿名日志以帮助我们改进ReVanced Manager",
|
||||||
"restartAppForChanges": "重启应用以生效",
|
"restartAppForChanges": "重启应用以生效",
|
||||||
"deleteKeystoreLabel": "删除密钥存储",
|
"regenerateKeystoreLabel": "删除密钥存储",
|
||||||
"deleteKeystoreHint": "删除用于签名应用的密钥存储",
|
"regenerateKeystoreHint": "删除用于签名应用的密钥存储",
|
||||||
"deletedKeystore": "密钥存储已删除",
|
"regeneratedKeystore": "密钥存储已删除",
|
||||||
"deleteTempDirLabel": "删除临时文件",
|
"deleteTempDirLabel": "删除临时文件",
|
||||||
"deleteTempDirHint": "删除未使用的临时文件",
|
"deleteTempDirHint": "删除未使用的临时文件",
|
||||||
"deletedTempDir": "临时文件已删除",
|
"deletedTempDir": "临时文件已删除",
|
||||||
|
@ -143,9 +143,9 @@
|
|||||||
"sentryLabel": "Sentry 日志記錄",
|
"sentryLabel": "Sentry 日志記錄",
|
||||||
"sentryHint": "發送匿名的日志記錄以幫助我們改善 ReVanced Manager",
|
"sentryHint": "發送匿名的日志記錄以幫助我們改善 ReVanced Manager",
|
||||||
"restartAppForChanges": "重啓應用以套用變更",
|
"restartAppForChanges": "重啓應用以套用變更",
|
||||||
"deleteKeystoreLabel": "刪除 keystore",
|
"regenerateKeystoreLabel": "刪除 keystore",
|
||||||
"deleteKeystoreHint": "刪除登入程序已用的 keystore",
|
"regenerateKeystoreHint": "刪除登入程序已用的 keystore",
|
||||||
"deletedKeystore": "已刪除 keystore",
|
"regeneratedKeystore": "已刪除 keystore",
|
||||||
"deleteTempDirLabel": "刪除暫時文件",
|
"deleteTempDirLabel": "刪除暫時文件",
|
||||||
"deleteTempDirHint": "刪除無用暫時文件",
|
"deleteTempDirHint": "刪除無用暫時文件",
|
||||||
"deletedTempDir": "暫時文件已刪除",
|
"deletedTempDir": "暫時文件已刪除",
|
||||||
|
@ -147,9 +147,9 @@
|
|||||||
"sentryLabel": "輸入記錄",
|
"sentryLabel": "輸入記錄",
|
||||||
"sentryHint": "傳送匿名記錄以協助我們改進 ReVanced Manager",
|
"sentryHint": "傳送匿名記錄以協助我們改進 ReVanced Manager",
|
||||||
"restartAppForChanges": "重新啟動應用程式以套用變更",
|
"restartAppForChanges": "重新啟動應用程式以套用變更",
|
||||||
"deleteKeystoreLabel": "刪除金鑰儲存區",
|
"regenerateKeystoreLabel": "刪除金鑰儲存區",
|
||||||
"deleteKeystoreHint": "刪除用於登入應用程式的金鑰儲存區",
|
"regenerateKeystoreHint": "刪除用於登入應用程式的金鑰儲存區",
|
||||||
"deletedKeystore": "已刪除金鑰儲存區",
|
"regeneratedKeystore": "已刪除金鑰儲存區",
|
||||||
"deleteTempDirLabel": "刪除暫存檔案",
|
"deleteTempDirLabel": "刪除暫存檔案",
|
||||||
"deleteTempDirHint": "刪除未使用的暫存檔案",
|
"deleteTempDirHint": "刪除未使用的暫存檔案",
|
||||||
"deletedTempDir": "暫存檔案目錄",
|
"deletedTempDir": "暫存檔案目錄",
|
||||||
|
@ -1 +1 @@
|
|||||||
Patch your favourite apps, right on your device.
|
Patch your favorite apps, right on your device.
|
||||||
|
@ -8,7 +8,6 @@ class Patch {
|
|||||||
Patch({
|
Patch({
|
||||||
required this.name,
|
required this.name,
|
||||||
required this.description,
|
required this.description,
|
||||||
required this.version,
|
|
||||||
required this.excluded,
|
required this.excluded,
|
||||||
required this.dependencies,
|
required this.dependencies,
|
||||||
required this.compatiblePackages,
|
required this.compatiblePackages,
|
||||||
@ -17,7 +16,6 @@ class Patch {
|
|||||||
factory Patch.fromJson(Map<String, dynamic> json) => _$PatchFromJson(json);
|
factory Patch.fromJson(Map<String, dynamic> json) => _$PatchFromJson(json);
|
||||||
final String name;
|
final String name;
|
||||||
final String description;
|
final String description;
|
||||||
final String version;
|
|
||||||
final bool excluded;
|
final bool excluded;
|
||||||
final List<String> dependencies;
|
final List<String> dependencies;
|
||||||
final List<Package> compatiblePackages;
|
final List<Package> compatiblePackages;
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:app_installer/app_installer.dart';
|
|
||||||
import 'package:collection/collection.dart';
|
import 'package:collection/collection.dart';
|
||||||
import 'package:cr_file_saver/file_saver.dart';
|
import 'package:cr_file_saver/file_saver.dart';
|
||||||
import 'package:device_apps/device_apps.dart';
|
import 'package:device_apps/device_apps.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:injectable/injectable.dart';
|
import 'package:injectable/injectable.dart';
|
||||||
|
import 'package:install_plugin/install_plugin.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:revanced_manager/app/app.locator.dart';
|
import 'package:revanced_manager/app/app.locator.dart';
|
||||||
import 'package:revanced_manager/models/patch.dart';
|
import 'package:revanced_manager/models/patch.dart';
|
||||||
@ -144,20 +144,6 @@ class PatcherAPI {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String> getOriginalFilePath(String packageName) async {
|
|
||||||
try {
|
|
||||||
final bool hasRootPermissions = await _rootAPI.hasRootPermissions();
|
|
||||||
if (hasRootPermissions) {
|
|
||||||
return await _rootAPI.getOriginalFilePath(packageName);
|
|
||||||
}
|
|
||||||
} on Exception catch (e) {
|
|
||||||
if (kDebugMode) {
|
|
||||||
print(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> runPatcher(
|
Future<void> runPatcher(
|
||||||
String packageName,
|
String packageName,
|
||||||
String apkFilePath,
|
String apkFilePath,
|
||||||
@ -191,10 +177,7 @@ class PatcherAPI {
|
|||||||
_outFile = File('${workDir.path}/out.apk');
|
_outFile = File('${workDir.path}/out.apk');
|
||||||
final Directory cacheDir = Directory('${workDir.path}/cache');
|
final Directory cacheDir = Directory('${workDir.path}/cache');
|
||||||
cacheDir.createSync();
|
cacheDir.createSync();
|
||||||
String originalFilePath = await getOriginalFilePath(packageName);
|
final String originalFilePath = apkFilePath;
|
||||||
if (originalFilePath.isEmpty) {
|
|
||||||
originalFilePath = apkFilePath;
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
await patcherChannel.invokeMethod(
|
await patcherChannel.invokeMethod(
|
||||||
'runPatcher',
|
'runPatcher',
|
||||||
@ -232,10 +215,8 @@ class PatcherAPI {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await AppInstaller.installApk(_outFile!.path);
|
final install = await InstallPlugin.installApk(_outFile!.path);
|
||||||
return await DeviceApps.isAppInstalled(
|
return install['isSuccess'];
|
||||||
patchedApp.packageName,
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
} on Exception catch (e) {
|
} on Exception catch (e) {
|
||||||
if (kDebugMode) {
|
if (kDebugMode) {
|
||||||
|
@ -73,7 +73,7 @@ class RootAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Future<List<String>> getInstalledApps() async {
|
Future<List<String>> getInstalledApps() async {
|
||||||
final List<String> apps = List.empty();
|
final List<String> apps = List.empty(growable: true);
|
||||||
try {
|
try {
|
||||||
String? res = await Root.exec(
|
String? res = await Root.exec(
|
||||||
cmd: 'ls "$_revancedDirPath"',
|
cmd: 'ls "$_revancedDirPath"',
|
||||||
@ -209,20 +209,6 @@ class RootAPI {
|
|||||||
return res != null && res.isNotEmpty;
|
return res != null && res.isNotEmpty;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<String> getOriginalFilePath(String packageName) async {
|
|
||||||
final String originalPath = '$_revancedDirPath/$packageName/original.apk';
|
|
||||||
final String oldOrigPath = '$_revancedOldDirPath/$packageName/original.apk';
|
|
||||||
final bool isInstalled = await isAppInstalled(packageName);
|
|
||||||
if (isInstalled && await isMounted(packageName)) {
|
|
||||||
if (await fileExists(originalPath)) {
|
|
||||||
return originalPath;
|
|
||||||
} else if (await fileExists(oldOrigPath)) {
|
|
||||||
return oldOrigPath;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> saveOriginalFilePath(
|
Future<void> saveOriginalFilePath(
|
||||||
String packageName,
|
String packageName,
|
||||||
String originalFilePath,
|
String originalFilePath,
|
||||||
|
@ -88,7 +88,7 @@ class _AppSelectorViewState extends State<AppSelectorView> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: model.apps.isEmpty
|
: model.allApps.isEmpty
|
||||||
? const AppSkeletonLoader()
|
? const AppSkeletonLoader()
|
||||||
: Padding(
|
: Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 12.0)
|
padding: const EdgeInsets.symmetric(horizontal: 12.0)
|
||||||
|
@ -45,9 +45,7 @@ class AppSelectorViewModel extends BaseViewModel {
|
|||||||
.length
|
.length
|
||||||
.compareTo(_patcherAPI.getFilteredPatches(a.packageName).length),
|
.compareTo(_patcherAPI.getFilteredPatches(a.packageName).length),
|
||||||
);
|
);
|
||||||
noApps = apps.isEmpty;
|
|
||||||
getAllApps();
|
getAllApps();
|
||||||
|
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -57,7 +55,7 @@ class AppSelectorViewModel extends BaseViewModel {
|
|||||||
.toSet()
|
.toSet()
|
||||||
.where((name) => !apps.any((app) => app.packageName == name))
|
.where((name) => !apps.any((app) => app.packageName == name))
|
||||||
.toList();
|
.toList();
|
||||||
|
noApps = allApps.isEmpty;
|
||||||
return allApps;
|
return allApps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
// ignore_for_file: use_build_context_synchronously
|
// ignore_for_file: use_build_context_synchronously
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:app_installer/app_installer.dart';
|
|
||||||
import 'package:cross_connectivity/cross_connectivity.dart';
|
import 'package:cross_connectivity/cross_connectivity.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_i18n/flutter_i18n.dart';
|
import 'package:flutter_i18n/flutter_i18n.dart';
|
||||||
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
|
||||||
import 'package:injectable/injectable.dart';
|
import 'package:injectable/injectable.dart';
|
||||||
|
import 'package:install_plugin/install_plugin.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:revanced_manager/app/app.locator.dart';
|
import 'package:revanced_manager/app/app.locator.dart';
|
||||||
import 'package:revanced_manager/app/app.router.dart';
|
import 'package:revanced_manager/app/app.router.dart';
|
||||||
@ -51,7 +51,7 @@ class HomeViewModel extends BaseViewModel {
|
|||||||
_toast.showBottom('homeView.installingMessage');
|
_toast.showBottom('homeView.installingMessage');
|
||||||
final File? managerApk = await _managerAPI.downloadManager();
|
final File? managerApk = await _managerAPI.downloadManager();
|
||||||
if (managerApk != null) {
|
if (managerApk != null) {
|
||||||
await AppInstaller.installApk(managerApk.path);
|
await InstallPlugin.installApk(managerApk.path);
|
||||||
} else {
|
} else {
|
||||||
_toast.showBottom('homeView.errorDownloadMessage');
|
_toast.showBottom('homeView.errorDownloadMessage');
|
||||||
}
|
}
|
||||||
@ -72,7 +72,7 @@ class HomeViewModel extends BaseViewModel {
|
|||||||
_toast.showBottom('homeView.installingMessage');
|
_toast.showBottom('homeView.installingMessage');
|
||||||
final File? managerApk = await _managerAPI.downloadManager();
|
final File? managerApk = await _managerAPI.downloadManager();
|
||||||
if (managerApk != null) {
|
if (managerApk != null) {
|
||||||
await AppInstaller.installApk(managerApk.path);
|
await InstallPlugin.installApk(managerApk.path);
|
||||||
} else {
|
} else {
|
||||||
_toast.showBottom('homeView.errorDownloadMessage');
|
_toast.showBottom('homeView.errorDownloadMessage');
|
||||||
}
|
}
|
||||||
@ -272,7 +272,7 @@ class HomeViewModel extends BaseViewModel {
|
|||||||
child: CustomMaterialButton(
|
child: CustomMaterialButton(
|
||||||
label: I18nText('updateButton'),
|
label: I18nText('updateButton'),
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
await AppInstaller.installApk(
|
await InstallPlugin.installApk(
|
||||||
downloadedApk!.path,
|
downloadedApk!.path,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -318,7 +318,7 @@ class HomeViewModel extends BaseViewModel {
|
|||||||
// UILocalNotificationDateInterpretation.absoluteTime,
|
// UILocalNotificationDateInterpretation.absoluteTime,
|
||||||
// );
|
// );
|
||||||
_toast.showBottom('homeView.installingMessage');
|
_toast.showBottom('homeView.installingMessage');
|
||||||
await AppInstaller.installApk(managerApk.path);
|
await InstallPlugin.installApk(managerApk.path);
|
||||||
} else {
|
} else {
|
||||||
_toast.showBottom('homeView.errorDownloadMessage');
|
_toast.showBottom('homeView.errorDownloadMessage');
|
||||||
}
|
}
|
||||||
|
@ -13,58 +13,68 @@ class NavigationView extends StatelessWidget {
|
|||||||
return ViewModelBuilder<NavigationViewModel>.reactive(
|
return ViewModelBuilder<NavigationViewModel>.reactive(
|
||||||
onViewModelReady: (model) => model.initialize(context),
|
onViewModelReady: (model) => model.initialize(context),
|
||||||
viewModelBuilder: () => locator<NavigationViewModel>(),
|
viewModelBuilder: () => locator<NavigationViewModel>(),
|
||||||
builder: (context, model, child) => Scaffold(
|
builder: (context, model, child) => WillPopScope(
|
||||||
body: PageTransitionSwitcher(
|
onWillPop: () async {
|
||||||
duration: const Duration(milliseconds: 400),
|
if (model.currentIndex == 0) {
|
||||||
transitionBuilder: (
|
return true;
|
||||||
Widget child,
|
} else {
|
||||||
Animation<double> animation,
|
model.setIndex(0);
|
||||||
Animation<double> secondaryAnimation,
|
return false;
|
||||||
) {
|
}
|
||||||
return FadeThroughTransition(
|
},
|
||||||
animation: animation,
|
child: Scaffold(
|
||||||
secondaryAnimation: secondaryAnimation,
|
body: PageTransitionSwitcher(
|
||||||
fillColor: Theme.of(context).colorScheme.surface,
|
duration: const Duration(milliseconds: 400),
|
||||||
child: child,
|
transitionBuilder: (
|
||||||
);
|
Widget child,
|
||||||
},
|
Animation<double> animation,
|
||||||
child: model.getViewForIndex(model.currentIndex),
|
Animation<double> secondaryAnimation,
|
||||||
),
|
) {
|
||||||
bottomNavigationBar: NavigationBar(
|
return FadeThroughTransition(
|
||||||
onDestinationSelected: model.setIndex,
|
animation: animation,
|
||||||
selectedIndex: model.currentIndex,
|
secondaryAnimation: secondaryAnimation,
|
||||||
destinations: <Widget>[
|
fillColor: Theme.of(context).colorScheme.surface,
|
||||||
NavigationDestination(
|
child: child,
|
||||||
icon: model.isIndexSelected(0)
|
);
|
||||||
? const Icon(Icons.dashboard)
|
},
|
||||||
: const Icon(Icons.dashboard_outlined),
|
child: model.getViewForIndex(model.currentIndex),
|
||||||
label: FlutterI18n.translate(
|
),
|
||||||
context,
|
bottomNavigationBar: NavigationBar(
|
||||||
'navigationView.dashboardTab',
|
onDestinationSelected: model.setIndex,
|
||||||
|
selectedIndex: model.currentIndex,
|
||||||
|
destinations: <Widget>[
|
||||||
|
NavigationDestination(
|
||||||
|
icon: model.isIndexSelected(0)
|
||||||
|
? const Icon(Icons.dashboard)
|
||||||
|
: const Icon(Icons.dashboard_outlined),
|
||||||
|
label: FlutterI18n.translate(
|
||||||
|
context,
|
||||||
|
'navigationView.dashboardTab',
|
||||||
|
),
|
||||||
|
tooltip: '',
|
||||||
),
|
),
|
||||||
tooltip: '',
|
NavigationDestination(
|
||||||
),
|
icon: model.isIndexSelected(1)
|
||||||
NavigationDestination(
|
? const Icon(Icons.build)
|
||||||
icon: model.isIndexSelected(1)
|
: const Icon(Icons.build_outlined),
|
||||||
? const Icon(Icons.build)
|
label: FlutterI18n.translate(
|
||||||
: const Icon(Icons.build_outlined),
|
context,
|
||||||
label: FlutterI18n.translate(
|
'navigationView.patcherTab',
|
||||||
context,
|
),
|
||||||
'navigationView.patcherTab',
|
tooltip: '',
|
||||||
),
|
),
|
||||||
tooltip: '',
|
NavigationDestination(
|
||||||
),
|
icon: model.isIndexSelected(2)
|
||||||
NavigationDestination(
|
? const Icon(Icons.settings)
|
||||||
icon: model.isIndexSelected(2)
|
: const Icon(Icons.settings_outlined),
|
||||||
? const Icon(Icons.settings)
|
label: FlutterI18n.translate(
|
||||||
: const Icon(Icons.settings_outlined),
|
context,
|
||||||
label: FlutterI18n.translate(
|
'navigationView.settingsTab',
|
||||||
context,
|
),
|
||||||
'navigationView.settingsTab',
|
tooltip: '',
|
||||||
),
|
),
|
||||||
tooltip: '',
|
],
|
||||||
),
|
),
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -166,7 +166,6 @@ class _PatchesSelectorViewState extends State<PatchesSelectorView> {
|
|||||||
(patch) => PatchItem(
|
(patch) => PatchItem(
|
||||||
name: patch.name,
|
name: patch.name,
|
||||||
simpleName: patch.getSimpleName(),
|
simpleName: patch.getSimpleName(),
|
||||||
version: patch.version,
|
|
||||||
description: patch.description,
|
description: patch.description,
|
||||||
packageVersion: model.getAppVersion(),
|
packageVersion: model.getAppVersion(),
|
||||||
supportedPackageVersions:
|
supportedPackageVersions:
|
||||||
|
@ -93,7 +93,9 @@ class SManageApiUrl extends BaseViewModel {
|
|||||||
onPressed: () {
|
onPressed: () {
|
||||||
_managerAPI.setApiUrl('');
|
_managerAPI.setApiUrl('');
|
||||||
_toast.showBottom('settingsView.restartAppForChanges');
|
_toast.showBottom('settingsView.restartAppForChanges');
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context)
|
||||||
|
..pop()
|
||||||
|
..pop();
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
@ -48,7 +48,7 @@ class SettingsViewModel extends BaseViewModel {
|
|||||||
|
|
||||||
void deleteKeystore() {
|
void deleteKeystore() {
|
||||||
_managerAPI.deleteKeystore();
|
_managerAPI.deleteKeystore();
|
||||||
_toast.showBottom('settingsView.deletedKeystore');
|
_toast.showBottom('settingsView.regeneratedKeystore');
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,12 +84,16 @@ class _InstalledAppItemState extends State<InstalledAppItem> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Text(
|
Flexible(
|
||||||
widget.patchesCount == 1
|
child: Text(
|
||||||
? '• ${widget.patchesCount} patch'
|
widget.patchesCount == 1
|
||||||
: '• ${widget.patchesCount} patches',
|
? '• ${widget.patchesCount} patch'
|
||||||
style: TextStyle(
|
: '• ${widget.patchesCount} patches',
|
||||||
color: Theme.of(context).colorScheme.secondary,
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Theme.of(context).colorScheme.secondary,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -78,12 +78,16 @@ class _NotInstalledAppItem extends State<NotInstalledAppItem> {
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Text(
|
Flexible(
|
||||||
widget.patchesCount == 1
|
child: Text(
|
||||||
? '• ${widget.patchesCount} patch'
|
widget.patchesCount == 1
|
||||||
: '• ${widget.patchesCount} patches',
|
? '• ${widget.patchesCount} patch'
|
||||||
style: TextStyle(
|
: '• ${widget.patchesCount} patches',
|
||||||
color: Theme.of(context).colorScheme.secondary,
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: TextStyle(
|
||||||
|
color: Theme.of(context).colorScheme.secondary,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
@ -1,61 +1,96 @@
|
|||||||
|
import 'package:device_apps/device_apps.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_i18n/flutter_i18n.dart';
|
import 'package:flutter_i18n/flutter_i18n.dart';
|
||||||
import 'package:revanced_manager/app/app.locator.dart';
|
import 'package:revanced_manager/app/app.locator.dart';
|
||||||
import 'package:revanced_manager/models/patched_application.dart';
|
import 'package:revanced_manager/models/patched_application.dart';
|
||||||
|
import 'package:revanced_manager/services/manager_api.dart';
|
||||||
import 'package:revanced_manager/ui/views/home/home_viewmodel.dart';
|
import 'package:revanced_manager/ui/views/home/home_viewmodel.dart';
|
||||||
import 'package:revanced_manager/ui/widgets/shared/application_item.dart';
|
import 'package:revanced_manager/ui/widgets/shared/application_item.dart';
|
||||||
import 'package:revanced_manager/ui/widgets/shared/custom_card.dart';
|
import 'package:revanced_manager/ui/widgets/shared/custom_card.dart';
|
||||||
|
|
||||||
|
//ignore: must_be_immutable
|
||||||
class InstalledAppsCard extends StatelessWidget {
|
class InstalledAppsCard extends StatelessWidget {
|
||||||
InstalledAppsCard({Key? key}) : super(key: key);
|
InstalledAppsCard({Key? key}) : super(key: key);
|
||||||
|
|
||||||
final List<PatchedApplication> apps =
|
List<PatchedApplication> apps = locator<HomeViewModel>().patchedInstalledApps;
|
||||||
locator<HomeViewModel>().patchedInstalledApps;
|
final ManagerAPI _managerAPI = locator<ManagerAPI>();
|
||||||
|
List<PatchedApplication> patchedApps = [];
|
||||||
|
|
||||||
|
Future _getApps() async {
|
||||||
|
if (apps.isNotEmpty) {
|
||||||
|
patchedApps = [...apps];
|
||||||
|
for (final element in apps) {
|
||||||
|
await DeviceApps.getApp(element.packageName).then((value) {
|
||||||
|
if (element.version != value?.versionName) {
|
||||||
|
patchedApps.remove(element);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (apps.length != patchedApps.length) {
|
||||||
|
await _managerAPI.setPatchedApps(patchedApps);
|
||||||
|
apps.clear();
|
||||||
|
apps = [...patchedApps];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return apps.isEmpty
|
return FutureBuilder(
|
||||||
? CustomCard(
|
future: _getApps(),
|
||||||
child: Center(
|
builder: (context, snapshot) {
|
||||||
child: Column(
|
if (snapshot.connectionState == ConnectionState.done) {
|
||||||
children: <Widget>[
|
return apps.isEmpty
|
||||||
Icon(
|
? CustomCard(
|
||||||
size: 40,
|
child: Center(
|
||||||
Icons.file_download_off,
|
child: Column(
|
||||||
color: Theme.of(context).colorScheme.secondary,
|
children: <Widget>[
|
||||||
),
|
Icon(
|
||||||
const SizedBox(height: 16),
|
size: 40,
|
||||||
I18nText(
|
Icons.file_download_off,
|
||||||
'homeView.noInstallations',
|
color: Theme.of(context).colorScheme.secondary,
|
||||||
child: Text(
|
),
|
||||||
'',
|
const SizedBox(height: 16),
|
||||||
textAlign: TextAlign.center,
|
I18nText(
|
||||||
style: Theme.of(context).textTheme.titleMedium!.copyWith(
|
'homeView.noInstallations',
|
||||||
color: Theme.of(context).colorScheme.secondary,
|
child: Text(
|
||||||
|
'',
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
style: Theme.of(context)
|
||||||
|
.textTheme
|
||||||
|
.titleMedium!
|
||||||
|
.copyWith(
|
||||||
|
color:
|
||||||
|
Theme.of(context).colorScheme.secondary,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
),
|
),
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: ListView(
|
|
||||||
shrinkWrap: true,
|
|
||||||
padding: EdgeInsets.zero,
|
|
||||||
physics: const NeverScrollableScrollPhysics(),
|
|
||||||
children: apps
|
|
||||||
.map(
|
|
||||||
(app) => ApplicationItem(
|
|
||||||
icon: app.icon,
|
|
||||||
name: app.name,
|
|
||||||
patchDate: app.patchDate,
|
|
||||||
changelog: app.changelog,
|
|
||||||
isUpdatableApp: false,
|
|
||||||
onPressed: () =>
|
|
||||||
locator<HomeViewModel>().navigateToAppInfo(app),
|
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.toList(),
|
: ListView(
|
||||||
);
|
shrinkWrap: true,
|
||||||
|
padding: EdgeInsets.zero,
|
||||||
|
physics: const NeverScrollableScrollPhysics(),
|
||||||
|
children: apps
|
||||||
|
.map(
|
||||||
|
(app) => ApplicationItem(
|
||||||
|
icon: app.icon,
|
||||||
|
name: app.name,
|
||||||
|
patchDate: app.patchDate,
|
||||||
|
changelog: app.changelog,
|
||||||
|
isUpdatableApp: false,
|
||||||
|
onPressed: () =>
|
||||||
|
locator<HomeViewModel>().navigateToAppInfo(app),
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.toList(),
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return const Center(child: CircularProgressIndicator());
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ class PatchSelectorCard extends StatelessWidget {
|
|||||||
String _getPatchesSelection() {
|
String _getPatchesSelection() {
|
||||||
String text = '';
|
String text = '';
|
||||||
for (final Patch p in locator<PatcherViewModel>().selectedPatches) {
|
for (final Patch p in locator<PatcherViewModel>().selectedPatches) {
|
||||||
text += '\u2022 ${p.getSimpleName()} (v${p.version})\n';
|
text += '\u2022 ${p.getSimpleName()}\n';
|
||||||
}
|
}
|
||||||
return text.substring(0, text.length - 1);
|
return text.substring(0, text.length - 1);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,6 @@ class PatchItem extends StatefulWidget {
|
|||||||
required this.name,
|
required this.name,
|
||||||
required this.simpleName,
|
required this.simpleName,
|
||||||
required this.description,
|
required this.description,
|
||||||
required this.version,
|
|
||||||
required this.packageVersion,
|
required this.packageVersion,
|
||||||
required this.supportedPackageVersions,
|
required this.supportedPackageVersions,
|
||||||
required this.isUnsupported,
|
required this.isUnsupported,
|
||||||
@ -25,7 +24,6 @@ class PatchItem extends StatefulWidget {
|
|||||||
final String name;
|
final String name;
|
||||||
final String simpleName;
|
final String simpleName;
|
||||||
final String description;
|
final String description;
|
||||||
final String version;
|
|
||||||
final String packageVersion;
|
final String packageVersion;
|
||||||
final List<String> supportedPackageVersions;
|
final List<String> supportedPackageVersions;
|
||||||
final bool isUnsupported;
|
final bool isUnsupported;
|
||||||
@ -90,14 +88,6 @@ class _PatchItemState extends State<PatchItem> {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(height: 1),
|
|
||||||
Text(
|
|
||||||
widget.version,
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 14,
|
|
||||||
color: Theme.of(context).colorScheme.secondary,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(height: 4),
|
const SizedBox(height: 4),
|
||||||
Text(
|
Text(
|
||||||
widget.description,
|
widget.description,
|
||||||
|
@ -28,7 +28,7 @@ class SAdvancedSection extends StatelessWidget {
|
|||||||
ListTile(
|
ListTile(
|
||||||
contentPadding: const EdgeInsets.symmetric(horizontal: 20.0),
|
contentPadding: const EdgeInsets.symmetric(horizontal: 20.0),
|
||||||
title: I18nText(
|
title: I18nText(
|
||||||
'settingsView.deleteKeystoreLabel',
|
'settingsView.regenerateKeystoreLabel',
|
||||||
child: const Text(
|
child: const Text(
|
||||||
'',
|
'',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
@ -37,7 +37,7 @@ class SAdvancedSection extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
subtitle: I18nText('settingsView.deleteKeystoreHint'),
|
subtitle: I18nText('settingsView.regenerateKeystoreHint'),
|
||||||
onTap: () => _showDeleteKeystoreDialog(context),
|
onTap: () => _showDeleteKeystoreDialog(context),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
@ -78,11 +78,9 @@ class SAdvancedSection extends StatelessWidget {
|
|||||||
return showDialog(
|
return showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) => AlertDialog(
|
builder: (context) => AlertDialog(
|
||||||
title: I18nText('warning'),
|
title: I18nText('settingsView.regenerateKeystoreDialogTitle'),
|
||||||
backgroundColor: Theme.of(context).colorScheme.secondaryContainer,
|
backgroundColor: Theme.of(context).colorScheme.secondaryContainer,
|
||||||
content: I18nText(
|
content: I18nText('settingsView.regenerateKeystoreDialogText'),
|
||||||
'settingsView.deleteKeystoreDialogText',
|
|
||||||
),
|
|
||||||
actions: <Widget>[
|
actions: <Widget>[
|
||||||
CustomMaterialButton(
|
CustomMaterialButton(
|
||||||
isFilled: false,
|
isFilled: false,
|
||||||
|
@ -73,10 +73,12 @@ class SExportSection extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
subtitle: I18nText('settingsView.importKeystoreHint'),
|
subtitle: I18nText('settingsView.importKeystoreHint'),
|
||||||
onTap: () {
|
onTap: () async{
|
||||||
_settingsViewModel.importKeystore();
|
await _settingsViewModel.importKeystore();
|
||||||
final sManageKeystorePassword = SManageKeystorePassword();
|
final sManageKeystorePassword = SManageKeystorePassword();
|
||||||
sManageKeystorePassword.showKeystoreDialog(context);
|
if(context.mounted){
|
||||||
|
sManageKeystorePassword.showKeystoreDialog(context);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
@ -102,7 +104,7 @@ class SExportSection extends StatelessWidget {
|
|||||||
return showDialog(
|
return showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (context) => AlertDialog(
|
builder: (context) => AlertDialog(
|
||||||
title: I18nText('warning'),
|
title: I18nText('settingsView.resetStoredPatchesDialogTitle'),
|
||||||
backgroundColor: Theme.of(context).colorScheme.secondaryContainer,
|
backgroundColor: Theme.of(context).colorScheme.secondaryContainer,
|
||||||
content: I18nText(
|
content: I18nText(
|
||||||
'settingsView.resetStoredPatchesDialogText',
|
'settingsView.resetStoredPatchesDialogText',
|
||||||
|
10
pubspec.yaml
10
pubspec.yaml
@ -1,17 +1,16 @@
|
|||||||
name: revanced_manager
|
name: revanced_manager
|
||||||
description: Patch your favourite apps, right on your device.
|
description: Patch your favorite apps, right on your device.
|
||||||
homepage: https://github.com/revanced/revanced-manager
|
homepage: https://github.com/revanced/revanced-manager
|
||||||
|
|
||||||
publish_to: 'none'
|
publish_to: 'none'
|
||||||
|
|
||||||
version: 1.4.0+100400000
|
version: 1.5.1+100400005
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: '>=3.0.0 <4.0.0'
|
sdk: '>=3.0.0 <4.0.0'
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
animations: ^2.0.7
|
animations: ^2.0.7
|
||||||
app_installer: ^1.1.0
|
|
||||||
collection: ^1.17.0
|
collection: ^1.17.0
|
||||||
cross_connectivity: ^3.0.5
|
cross_connectivity: ^3.0.5
|
||||||
cr_file_saver:
|
cr_file_saver:
|
||||||
@ -59,8 +58,8 @@ dependencies:
|
|||||||
pull_to_refresh: ^2.0.0
|
pull_to_refresh: ^2.0.0
|
||||||
root:
|
root:
|
||||||
git:
|
git:
|
||||||
url: https://github.com/gokul1630/root
|
url: https://github.com/EvadeMaster/root
|
||||||
ref: main
|
ref: 82803aa40f63cddff81c3e4d27ce8ce3e7c83f60
|
||||||
share_extend: ^2.0.0
|
share_extend: ^2.0.0
|
||||||
shared_preferences: ^2.1.0
|
shared_preferences: ^2.1.0
|
||||||
skeletons: ^0.0.3
|
skeletons: ^0.0.3
|
||||||
@ -75,6 +74,7 @@ dependencies:
|
|||||||
flutter_dotenv: ^5.0.2
|
flutter_dotenv: ^5.0.2
|
||||||
flutter_markdown: ^0.6.14
|
flutter_markdown: ^0.6.14
|
||||||
dio_cache_interceptor: ^3.4.0
|
dio_cache_interceptor: ^3.4.0
|
||||||
|
install_plugin: ^2.1.0
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
json_serializable: ^6.6.1
|
json_serializable: ^6.6.1
|
||||||
|
Reference in New Issue
Block a user