mirror of
https://github.com/ReVanced/revanced-manager.git
synced 2025-06-17 20:29:17 +08:00
Compare commits
15 Commits
ci/prebuil
...
skia-v3.29
Author | SHA1 | Date | |
---|---|---|---|
a2f6c3836d | |||
73cb27011b | |||
83fc7f131a | |||
8e4a9088ea | |||
7ee2b1a026 | |||
40c99ab4dc | |||
1752fae9d9 | |||
d264a2a363 | |||
a5e909cfc8 | |||
bdb0317a9e | |||
b0464408f1 | |||
767fa77436 | |||
89b48cebcf | |||
dedcb3c51a | |||
3074766ff2 |
3
.github/workflows/build_pull_request.yml
vendored
3
.github/workflows/build_pull_request.yml
vendored
@ -39,10 +39,11 @@ jobs:
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
flutter-version: 3.29.x
|
||||
cache: true
|
||||
|
||||
- name: Cache Gradle
|
||||
uses: burrunan/gradle-cache-action@v1
|
||||
uses: burrunan/gradle-cache-action@v3
|
||||
with:
|
||||
build-root-directory: ${{ github.workspace }}/android
|
||||
|
||||
|
5
.github/workflows/release.yml
vendored
5
.github/workflows/release.yml
vendored
@ -37,15 +37,16 @@ jobs:
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
flutter-version: 3.29.x
|
||||
cache: true
|
||||
|
||||
- name: Cache Gradle
|
||||
uses: burrunan/gradle-cache-action@v1
|
||||
uses: burrunan/gradle-cache-action@v3
|
||||
with:
|
||||
build-root-directory: ${{ github.workspace }}/android
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
run: npm i
|
||||
|
||||
- name: Get dependencies
|
||||
run: flutter pub get
|
||||
|
7
.github/workflows/sync_crowdin.yml
vendored
7
.github/workflows/sync_crowdin.yml
vendored
@ -22,11 +22,15 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
ref: dev
|
||||
fetch-depth: 0
|
||||
clean: true
|
||||
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: stable
|
||||
flutter-version: 3.29.x
|
||||
cache: true
|
||||
|
||||
- name: Sync translations from Crowdin
|
||||
@ -37,6 +41,7 @@ jobs:
|
||||
upload_translations: false
|
||||
download_translations: true
|
||||
localization_branch_name: feat/translations
|
||||
skip_ref_checkout: true
|
||||
create_pull_request: true
|
||||
pull_request_title: "chore: Sync translations"
|
||||
pull_request_body: "Sync translations from [crowdin.com/project/revanced](https://crowdin.com/project/revanced)"
|
||||
@ -70,6 +75,8 @@ jobs:
|
||||
|
||||
- name: Commit translations
|
||||
run: |
|
||||
git config --global user.name 'github-actions[bot]'
|
||||
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
|
||||
sudo chown -R $USER:$USER .git
|
||||
git commit -m "chore: Remove empty values from JSON" assets/i18n/*.i18n.json
|
||||
git push origin HEAD:feat/translations
|
||||
|
45
.gitignore
vendored
45
.gitignore
vendored
@ -1,14 +1,14 @@
|
||||
# Miscellaneous
|
||||
*.class
|
||||
*.lock
|
||||
*.log
|
||||
*.pyc
|
||||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
migrate_working_dir/
|
||||
|
||||
# packages file containing multi-root paths
|
||||
.packages.generated
|
||||
|
||||
# IntelliJ related
|
||||
*.iml
|
||||
@ -16,32 +16,41 @@ migrate_working_dir/
|
||||
*.iws
|
||||
.idea/
|
||||
|
||||
# The .vscode folder contains launch configuration and tasks you configure in
|
||||
# VS Code which you may wish to be included in version control, so this line
|
||||
# is commented out by default.
|
||||
#.vscode/
|
||||
|
||||
# Flutter/Dart/Pub related
|
||||
**/doc/api/
|
||||
**/ios/Flutter/.last_build_id
|
||||
.dart_tool/
|
||||
.flutter-plugins
|
||||
.flutter-plugins-dependencies
|
||||
.pub-cache/
|
||||
**/generated_plugin_registrant.dart
|
||||
.packages
|
||||
.pub-preload-cache/
|
||||
.pub/
|
||||
/build/
|
||||
build/
|
||||
flutter_*.png
|
||||
linked_*.ds
|
||||
unlinked.ds
|
||||
unlinked_spec.ds
|
||||
|
||||
# Symbolication related
|
||||
# Android related
|
||||
**/android/**/gradle-wrapper.jar
|
||||
.gradle/
|
||||
**/android/captures/
|
||||
**/android/gradlew
|
||||
**/android/gradlew.bat
|
||||
**/android/local.properties
|
||||
**/android/**/GeneratedPluginRegistrant.java
|
||||
**/android/key.properties
|
||||
*.jks
|
||||
|
||||
# Coverage
|
||||
coverage/
|
||||
|
||||
# Symbols
|
||||
app.*.symbols
|
||||
|
||||
# Obfuscation related
|
||||
app.*.map.json
|
||||
|
||||
# Android Studio will place build artifacts here
|
||||
/android/app/debug
|
||||
/android/app/profile
|
||||
/android/app/release
|
||||
|
||||
# Generated files
|
||||
android/app/.cxx
|
||||
**/*.g.dart
|
||||
|
@ -39,6 +39,9 @@
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme" />
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.EnableImpeller"
|
||||
android:value="false" />
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "أنت على وشك تعطيل تغيير تحديد التعديلات.\nستتم استعادة التحديد الافتراضي للتعديلات.\n\nهل تريد التعطيل على أي حال؟",
|
||||
"autoUpdatePatchesLabel": "تحديث التعديلات تلقائيًا",
|
||||
"autoUpdatePatchesHint": "تحديث التعديلات تلقائيًا إلى الإصدار الأحدث",
|
||||
"usePrereleasesLabel": "استخدام الإصدارات الأولية",
|
||||
"usePrereleasesHint": "استخدام إصدارات ما قبل الإصدار من ReVanced Manager و ReVanced Patches",
|
||||
"usePrereleasesWarningText": "قد يتسبب استخدام الإصدارات الأولية في حدوث مشكلات غير متوقعة.\n\nهل تريد التمكين على أي حال؟",
|
||||
"showUpdateDialogLabel": "عرض مربع حوار التحديث",
|
||||
"showUpdateDialogHint": "عرض مربع حوار عندما يتوفر تحديث جديد",
|
||||
"universalPatchesLabel": "عرض التعديلات العامة",
|
||||
|
@ -34,7 +34,25 @@
|
||||
"updatePatchesSheetTitle": "ReVanced পেট্চবোৰ আপডে’ট কৰক",
|
||||
"updateChangelogTitle": "সলনি-পঞ্জী",
|
||||
"updateDialogText": "${file}-ৰ এটা নতুন আপডে’ট উপলব্ধ।\n\nবৰ্তমানে ইনষ্টল কৰা সংস্কৰণটো হৈছে ${version}।",
|
||||
"downloadConsentDialogTitle": "প্ৰয়োজনীয় ফাইলবোৰ ডাউনল’ড কৰিবনে?"
|
||||
"downloadConsentDialogTitle": "প্ৰয়োজনীয় ফাইলবোৰ ডাউনল’ড কৰিবনে?",
|
||||
"downloadConsentDialogText": "সঠিকভাৱে কাম কৰিবলৈ ReVanced Manager-এ প্ৰয়োজনীয় ফাইলবোৰ ডাউনল'ড কৰিব লাগিব।",
|
||||
"downloadConsentDialogText2": "ই আপোনাক ${url}-ৰ সৈতে সংযুক্ত কৰিব।",
|
||||
"downloadingMessage": "আপডে’ট ডাউনল’ড হৈ আছে...",
|
||||
"downloadedMessage": "আপডে’ট ডাউনল’ড কৰা হ’ল",
|
||||
"installingMessage": "আপডে’ট ইনষ্টল হৈ আছে...",
|
||||
"errorDownloadMessage": "আপডে’ট ডাউনল’ড কৰিব পৰা নগ’ল"
|
||||
},
|
||||
"applicationItem": {
|
||||
"infoButton": "তথ্য"
|
||||
},
|
||||
"latestCommitCard": {
|
||||
"timeagoLabel": "${time} আগত"
|
||||
},
|
||||
"appSelectorCard": {
|
||||
"widgetTitle": "এটা এপ বাছনি কৰক",
|
||||
"widgetTitleSelected": "বাছনি কৰা এপ",
|
||||
"widgetSubtitle": "কোনো এপ বাছনি কৰা নাই",
|
||||
"noAppsLabel": "কোনো এপ্লিকেশ্যন পোৱা নগ’ল"
|
||||
},
|
||||
"patchOptionsView": {
|
||||
"saveOptions": "ছে’ভ কৰক",
|
||||
@ -50,9 +68,28 @@
|
||||
"darkThemeLabel": "গাঢ়",
|
||||
"dynamicThemeLabel": "মেটেৰিয়েল ইউ",
|
||||
"languageLabel": "ভাষা",
|
||||
"languageUpdated": "ভাষা আপডে’ট কৰা হ’ল"
|
||||
"languageUpdated": "ভাষা আপডে’ট কৰা হ’ল",
|
||||
"importKeystoreLabel": "কীষ্ট’ৰ ইম্প’ৰ্ট কৰক",
|
||||
"importKeystoreHint": "এপবোৰত চহী কৰিবলৈ ব্যৱহাৰ কৰা কীষ্ট’ৰ এটা ইম্প’ৰ্ট কৰক",
|
||||
"importedKeystore": "কীষ্ট’ৰ ইম্প’ৰ্ট কৰা হ’ল",
|
||||
"selectKeystorePassword": "কীষ্ট’ৰৰ পাছৱৰ্ড",
|
||||
"selectKeystorePasswordHint": "এপবোৰত চহী কৰিবলৈ ব্যৱহাৰ কৰা কীষ্ট’ৰৰ পাছৱৰ্ড বাছনি কৰক",
|
||||
"jsonSelectorErrorMessage": "বাছনি কৰা JSON ফাইলটো ব্যৱহাৰ কৰিব পৰা নগ’ল",
|
||||
"keystoreSelectorErrorMessage": "বাছনি কৰা কীষ্ট’ৰ ফাইলটো ব্যৱহাৰ কৰিব পৰা নগ’ল"
|
||||
},
|
||||
"appInfoView": {
|
||||
"widgetTitle": "এপৰ তথ্য",
|
||||
"openButton": "খোলক",
|
||||
"installButton": "ইনষ্টল কৰক",
|
||||
"uninstallButton": "আনইনষ্টল কৰক",
|
||||
"unmountButton": "আনমাউণ্ট কৰক",
|
||||
"exportButton": "এক্সপ’ৰ্ট কৰক",
|
||||
"deleteButton": "মচক",
|
||||
"rootDialogTitle": "ত্ৰুটি",
|
||||
"lastPatchedAppDescription": "এইটো শেষবাৰৰ বাবে পেট্চ কৰা এপটোৰ বেকআপ।",
|
||||
"unmountDialogText": "আপুনি এই এপটো আনমাউণ্ট কৰিব বিচৰাটো নিশ্চিতনে?",
|
||||
"uninstallDialogText": "আপুনি এই এপটো আনইনষ্টল কৰিব বিচৰাটো নিশ্চিতনে?",
|
||||
"rootDialogText": "এপটো ছুপাৰইউজাৰৰ অনুমতিৰে ইনষ্টল কৰা হৈছে, কিন্তু বৰ্তমান ReVanced Manager-ৰ কোনো অনুমতি নাই।\nঅনুগ্ৰহ কৰি প্ৰথমে ছুপাৰইউজাৰৰ অনুমতি দিয়ক।",
|
||||
"removeAppDialogTitle": "এপ মচিবনে?",
|
||||
"removeAppDialogText": "আপুনি এই বেকআপ মচি পেলাব বিচৰাটো নিশ্চিতনে?",
|
||||
"packageNameLabel": "পেকেজৰ নাম",
|
||||
@ -75,14 +112,24 @@
|
||||
"mount_missing_installation": "ইনষ্টলেশ্যন পোৱা নগ’ল",
|
||||
"status_failure_blocked": "ইনষ্টলেশ্যন অৱৰুদ্ধ",
|
||||
"install_failed_verification_failure": "ভেৰিফিকেশ্যন বিফল",
|
||||
"status_failure_invalid": "ইনষ্টলেশ্যন অবৈধ",
|
||||
"install_failed_version_downgrade": "ডাউনগ্ৰে’ড কৰিব নোৱাৰি",
|
||||
"status_failure_conflict": "ইনষ্টলেশ্যনৰ সংঘাত",
|
||||
"status_failure_storage": "ইনষ্টলেশ্যন ষ্ট’ৰেজৰ সমস্যা",
|
||||
"status_failure_incompatible": "ইনষ্টলেশ্যন নিমিলে",
|
||||
"status_failure_timeout": "ইনষ্টলেশ্যনৰ সময় উকলিল",
|
||||
"status_unknown": "ইনষ্টলেশ্যন বিফল",
|
||||
"mount_version_mismatch_description": "ইনষ্টল কৰা এপটো পেট্চ কৰা এপতকৈ বেলেগ সংস্কৰণ হোৱাৰ বাবে ইনষ্টলেশ্যন বিফল হ’ল।\n\nআপুনি মাউণ্ট কৰা এপটোৰ সংস্কৰণ ইনষ্টল কৰি আকৌ চেষ্টা কৰক।",
|
||||
"mount_no_root_description": "ৰুট এক্সেছ নিদিয়াৰ বাবে ইনষ্টলেশ্যন বিফল হ’ল।\n\nReVanced Manager-ক ৰুট এক্সেছ দি আকৌ চেষ্টা কৰক।",
|
||||
"mount_missing_installation_description": "ওপৰত মাউণ্ট কৰিব পৰাকৈ পেট্চ নকৰা এপটো এই ডিভাইচত ইনষ্টল হৈ নথকাৰ বাবে ইনষ্টলেশ্যন বিফল হ’ল।\n\nমাউণ্ট কৰাৰ আগত পেট্চ নকৰা এপটো ইনষ্টল কৰি আকৌ চেষ্টা কৰক।",
|
||||
"status_failure_timeout_description": "ইনষ্টলেশ্যন শেষ হ’বলৈ বহুত সময় লাগিল।\n\nআপুনি আকৌ চেষ্টা কৰিব বিচাৰেনে?",
|
||||
"status_failure_storage_description": "অপৰ্যাপ্ত ষ্ট’ৰে’জৰ বাবে ইনষ্টলেশ্যন বিফল হ’ল।\n\nঅলপ ঠাই খালী কৰি আকৌ চেষ্টা কৰক।",
|
||||
"status_failure_invalid_description": "পেট্চ কৰা এপটো অবৈধ হোৱাৰ বাবে ইনষ্টলেশ্যন বিফল হ’ল।\n\nএপটো আনইনষ্টল কৰি আকৌ চেষ্টা কৰিবনে?",
|
||||
"status_failure_incompatible_description": "এই ডিভাইচৰ সৈতে এপটো সংগতিপূৰ্ণ নহয়।\n\nএই ডিভাইচটোৱে ছাপ’ৰ্ট কৰা এটা APK ব্যৱহাৰ কৰি আকৌ চেষ্টা কৰক।",
|
||||
"status_failure_conflict_description": "এপটোৰ এটা মজুত থকা ইনষ্টলেশ্যনৰ ফলত ইনষ্টলেশ্যনত বাধা আহিছিল।\n\n ইনষ্টল কৰা এপটো আনইনষ্টল কৰি পুনৰ চেষ্টা কৰিবনে?",
|
||||
"status_failure_blocked_description": "ইনষ্টলেশ্যনটো ${packageName}-ৰ দ্বাৰা অৱৰোধ কৰা হৈছে।\n\nআপোনাৰ সুৰক্ষা-সম্বন্ধীয় ছেটিংছ মিলাই লৈ পুনৰ চেষ্টা কৰক।",
|
||||
"install_failed_verification_failure_description": "ভেৰিফিকেশ্যন-সম্বন্ধীয় সমস্যা এটাৰ কাৰণে ইনষ্টলেশ্যন বিফল হ’ল।\n\nআপোনাৰ সুৰক্ষা-সম্বন্ধীয় ছেটিংছ মিলাই লৈ পুনৰ চেষ্টা কৰক।"
|
||||
"install_failed_verification_failure_description": "ভেৰিফিকেশ্যন-সম্বন্ধীয় সমস্যা এটাৰ কাৰণে ইনষ্টলেশ্যন বিফল হ’ল।\n\nআপোনাৰ সুৰক্ষা-সম্বন্ধীয় ছেটিংছ মিলাই লৈ পুনৰ চেষ্টা কৰক।",
|
||||
"install_failed_version_downgrade_description": "পেট্চ কৰা এপটো ইনষ্টল কৰা এপতকৈ আগৰ সংস্কৰণ হোৱাৰ বাবে ইনষ্টলেশ্যন বিফল হ’ল।\n\nএপটো আনইনষ্টল কৰি আকৌ চেষ্টা কৰিবনে?",
|
||||
"status_unknown_description": "অজ্ঞাত কাৰণত ইনষ্টলেশ্যন বিফল হ’ল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক।"
|
||||
}
|
||||
}
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Yamaq seçimi dəyişdirilməsini qapatmaq üzrəsiniz.\nİlkin yamaq seçimi bərpa ediləcək.\n\nYenə də qapadılsın?",
|
||||
"autoUpdatePatchesLabel": "Yamaqları avtomatik yenilə",
|
||||
"autoUpdatePatchesHint": "Yamaqları son versiyaya avtomatik yenilə",
|
||||
"usePrereleasesLabel": "İlkin buraxılışları istifadə et",
|
||||
"usePrereleasesHint": "ReVanced Manager və ReVanced Patches-in buraxılışdan əvvəlki versiyaların istifadə et",
|
||||
"usePrereleasesWarningText": "İlkin buraxılış versiyaların istifadə gözlənilməz problemlərə səbəb ola bilər.\n\nYenə də aktiv edilsin?",
|
||||
"showUpdateDialogLabel": "Yenilənmə dialoqunu göstər",
|
||||
"showUpdateDialogHint": "Təzə yenilənmə mövcud olduqda dialoq pəncərəsi göstər",
|
||||
"universalPatchesLabel": "Ümumi yamaqları göstər",
|
||||
|
@ -180,6 +180,7 @@
|
||||
"disablePatchesSelectionWarningText": "আপনি নির্বাচিত প্যাচ পরিবর্তনকে নিষ্ক্রিয় করতে যাচ্ছেন।\nপূর্বনির্ধারিত নির্বাচিত প্যাচসমূহ ফিরিয়ে আনা হবে।\n\nযেকোন ভাবে নিষ্ক্রিয় করতে চান?",
|
||||
"autoUpdatePatchesLabel": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে আপডেট করুন",
|
||||
"autoUpdatePatchesHint": "প্যাচসমূহ স্বয়ংক্রিয়ভাবে সর্বশেষ সংস্করণে আপডেট হবে",
|
||||
"usePrereleasesLabel": "প্রি-রিলিজ ব্যবহার করুন",
|
||||
"showUpdateDialogLabel": "হালনাগাদ ডায়ালগ দেখান",
|
||||
"showUpdateDialogHint": "যখন হালনাগাদ উপলব্ধ থাকবে তখন একটি ডায়ালগ দেখান",
|
||||
"universalPatchesLabel": "বৈশ্বিক প্যাচসমূহ দেখান",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Πρόκειται να απενεργοποιήσετε τη δυνατότητα αλλαγής των επιλογών τροποποιήσεων.\nΟι προεπιλεγμένες επιλογές τροποποιήσεων θα επαναφερθούν.\n\nΑπενεργοποίηση παρόλα αυτά;",
|
||||
"autoUpdatePatchesLabel": "Αυτόματες ενημερώσεις τροποποιήσεων",
|
||||
"autoUpdatePatchesHint": "Αυτόματη ενημέρωση τροποποιήσεων στην τελευταία έκδοση",
|
||||
"usePrereleasesLabel": "Χρήση πρώιμων εκδόσεων",
|
||||
"usePrereleasesHint": "Χρήση των πρώιμων εκδόσεων του ReVanced Manager και των τροποποιήσεων ReVanced",
|
||||
"usePrereleasesWarningText": "Η χρήση των πρώιμων εκδόσεων ενδέχεται να προκαλέσει μη αναμενόμενα προβλήματα.\n\nΕνεργοποίηση ούτως ή άλλως;",
|
||||
"showUpdateDialogLabel": "Εμφάνιση προτροπής για ενημερώσεις",
|
||||
"showUpdateDialogHint": "Εμφάνιση ειδοποίησης όταν είναι διαθέσιμη κάποια νέα ενημέρωση",
|
||||
"universalPatchesLabel": "Εμφάνιση γενικευμένων τροποποιήσεων",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "You are about to disable changing the selection of patches.\nThe default selection of patches will be restored.\n\nDisable anyways?",
|
||||
"autoUpdatePatchesLabel": "Auto update patches",
|
||||
"autoUpdatePatchesHint": "Automatically update patches to the latest version",
|
||||
"usePrereleasesLabel": "Use pre-releases",
|
||||
"usePrereleasesHint": "Use pre-release versions of ReVanced Manager and ReVanced Patches",
|
||||
"usePrereleasesWarningText": "Using pre-release versions may cause unexpected issues.\n\nEnable anyways?",
|
||||
"showUpdateDialogLabel": "Show update dialog",
|
||||
"showUpdateDialogHint": "Show a dialog when a new update is available",
|
||||
"universalPatchesLabel": "Show universal patches",
|
||||
|
@ -180,6 +180,8 @@
|
||||
"disablePatchesSelectionWarningText": "Estás a punto de desactivar cambiar la selección de parches.\nLa selección predeterminada de parches se restaurará.\n\n¿Deshabilitar de todos modos?",
|
||||
"autoUpdatePatchesLabel": "Actualizar automáticamente los parches",
|
||||
"autoUpdatePatchesHint": "Actualizar automáticamente los parches a la última versión",
|
||||
"usePrereleasesLabel": "Usar versiones preliminares",
|
||||
"usePrereleasesHint": "Usar versiones previas de ReVanced Manager y ReVanced Parches",
|
||||
"showUpdateDialogLabel": "Mostrar diálogo de actualización",
|
||||
"showUpdateDialogHint": "Mostrar un diálogo cuando una nueva actualización esté disponible",
|
||||
"universalPatchesLabel": "Mostrar parches universales",
|
||||
|
@ -180,6 +180,7 @@
|
||||
"disablePatchesSelectionWarningText": "Te olete peaaegu keelamas paranduste valiku muutmise.\nParanduste vaikimisi valik taastatakse.\n\nKas keelate ikkagi?",
|
||||
"autoUpdatePatchesLabel": "Automaatne paranduste uuendamine",
|
||||
"autoUpdatePatchesHint": "Uuenda parandused automaatselt uusimasse versiooni",
|
||||
"usePrereleasesLabel": "Kasuta eelväljalaskeid",
|
||||
"showUpdateDialogLabel": "Näita uuenduse dialoogi",
|
||||
"showUpdateDialogHint": "Näita dialoogi, kui on saadaval uus uuendus",
|
||||
"universalPatchesLabel": "Näita universaalseid parandusi",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Olet poistamassa paikkausvalikoiman muokkauksen käytöstä.\nOletusarvoiset paikkasvalikoimat palautetaan.\n\nEstetäänkö se silti?",
|
||||
"autoUpdatePatchesLabel": "Päivitä paikkaukset automaattisesti",
|
||||
"autoUpdatePatchesHint": "Päivitä paikkaukset automaattisesti uusimpiin versioihin",
|
||||
"usePrereleasesLabel": "Käytä ennakkojulkaisuja",
|
||||
"usePrereleasesHint": "Käytä ReVanced Managerin ja ReVanced Patchesien ennakkojulkaisuversioita",
|
||||
"usePrereleasesWarningText": "Ennakkojulkaisuversioiden käyttäminen voi aiheuttaa odottamattomia ongelmia.\n\nOtetaanko se silti käyttöön?",
|
||||
"showUpdateDialogLabel": "Näytä päivitysruutu",
|
||||
"showUpdateDialogHint": "Näytä ilmoitus, kun uusi päivitys on saatavilla",
|
||||
"universalPatchesLabel": "Näytä yleispaikkaukset",
|
||||
|
@ -180,6 +180,7 @@
|
||||
"disablePatchesSelectionWarningText": "Ikaw ay malapit nang magdisable sa pagpalit ng mga pinili na patches.\nDahil dyan, ang karaniwang pagpili ng mga patch ay maibalik.\n\nI-disable pa rin?",
|
||||
"autoUpdatePatchesLabel": "Auto update patches",
|
||||
"autoUpdatePatchesHint": "Awtomatikong i-update ang mga patch sa pinakabagong bersyon",
|
||||
"usePrereleasesLabel": "Gumamit ng mga pre-release",
|
||||
"showUpdateDialogLabel": "Ipakita ang dialog ng update",
|
||||
"showUpdateDialogHint": "Ipakita ang isang dialog kapag magagamit ang isang bagong update",
|
||||
"universalPatchesLabel": "Ipakita ang mga pangkalahatang patch",
|
||||
|
@ -137,7 +137,7 @@
|
||||
"notificationText": "Appuyez pour revenir à l'installation",
|
||||
"exportApkButtonTooltip": "Exporter l'APK patché",
|
||||
"exportLogButtonTooltip": "Exporter le journal",
|
||||
"screenshotDetected": "Une capture d’écran a été détectée. Si vous essayez de partager le log, veuillez plutôt partager une copie du texte.\n\nCopier les logs dans le presse-papiers ?",
|
||||
"screenshotDetected": "Une capture d’écran a été détectée. Si vous essayez de partager le journal, veuillez plutôt partager une copie textuelle.\n\nCopier le journal dans le presse-papiers ?",
|
||||
"copiedToClipboard": "Journal copié dans le presse-papiers",
|
||||
"noExit": "L'installateur s'exécute encore, impossible de quitter..."
|
||||
},
|
||||
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Vous êtes sur le point de désactiver la modification de la sélection de patchs.\nLa sélection de patchs par défaut sera rétablie.\n\nDésactiver quand même ?",
|
||||
"autoUpdatePatchesLabel": "Mise à jour auto. des patchs",
|
||||
"autoUpdatePatchesHint": "Mettre à jour automatiquement les patchs vers la dernière version",
|
||||
"usePrereleasesLabel": "Utiliser les préversions",
|
||||
"usePrereleasesHint": "Utilisez les versions préliminaires de ReVanced Manager et ReVanced Patches",
|
||||
"usePrereleasesWarningText": "L'utilisation de versions préliminaires peut entraîner des problèmes inattendus.\n\nActiver quand même ?",
|
||||
"showUpdateDialogLabel": "Afficher la boîte de dialogue de mise à jour",
|
||||
"showUpdateDialogHint": "Afficher une boîte de dialogue lorsqu'une nouvelle mise à jour est disponible",
|
||||
"universalPatchesLabel": "Afficher les patchs universels",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Tá tú ar tí roghnú paistí a athrú a dhíchumasú.\nCuirfear an rogha réamhshocraithe paistí ar ais.\n\nDíchumasú ar aon chaoi?",
|
||||
"autoUpdatePatchesLabel": "Paistí nuashonruithe uathoibríoch",
|
||||
"autoUpdatePatchesHint": "Nuashonraigh go huathoibríoch paistí go dtí an leagan is déanaí",
|
||||
"usePrereleasesLabel": "Úsáid réamheisiúintí",
|
||||
"usePrereleasesHint": "Úsáid leaganacha réamheisiúna de ReVanced Manager agus ReVanced Patches",
|
||||
"usePrereleasesWarningText": "D’fhéadfadh fadhbanna gan choinne a bheith mar thoradh ar úsáid a bhaint as leaganacha réamhscaoilte.\n\nAr mhaith leat é a chumasú ar aon nós?",
|
||||
"showUpdateDialogLabel": "Taispeáin dialóg nuashonrú",
|
||||
"showUpdateDialogHint": "Taispeáin dialóg nuair a bhíonn nuashonrú nua ar fáil",
|
||||
"universalPatchesLabel": "Taispeáin paistí uilíocha",
|
||||
|
@ -26,7 +26,7 @@
|
||||
"lastPatchedAppSubtitle": "Aplikasi terakhir ditambal",
|
||||
"patchedSubtitle": "Aplikasi terpasang",
|
||||
"changeLaterSubtitle": "Anda dapat mengubahnya di pengaturan nanti.",
|
||||
"noSavedAppFound": "App tidak ditemukan",
|
||||
"noSavedAppFound": "Aplikasi tidak ditemukan",
|
||||
"noInstallations": "Aplikasi tertambal tidak terpasang",
|
||||
"installUpdate": "Lanjut mengunduh pembaruan?",
|
||||
"updateSheetTitle": "Perbarui ReVanced Manager",
|
||||
@ -180,6 +180,7 @@
|
||||
"disablePatchesSelectionWarningText": "Anda akan menonaktifkan pengubahan pilihan tambalan.\nPilihan tambalan bawaan akan dikembalikan.\n\nTetap nonaktifkan?",
|
||||
"autoUpdatePatchesLabel": "Otomatis perbarui tambalan",
|
||||
"autoUpdatePatchesHint": "Otomatis perbarui tambalan ke versi terbaru",
|
||||
"usePrereleasesLabel": "Gunakan rilis pra-rilis",
|
||||
"showUpdateDialogLabel": "Tampilkan dialog pembaruan",
|
||||
"showUpdateDialogHint": "Tampilkan dialog ketika pembaruan tersedia",
|
||||
"universalPatchesLabel": "Tampilkan tambalan universal",
|
||||
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
"okButton": "OK",
|
||||
"cancelButton": "キャンセル",
|
||||
"dismissButton": "閉じる",
|
||||
"dismissButton": "取り消す",
|
||||
"quitButton": "終了",
|
||||
"updateButton": "更新",
|
||||
"suggested": "推奨: ${version}",
|
||||
"suggested": "推奨バージョン: ${version}",
|
||||
"yesButton": "はい",
|
||||
"noButton": "いいえ",
|
||||
"warning": "警告",
|
||||
@ -30,12 +30,12 @@
|
||||
"noInstallations": "パッチ済みのアプリはインストールされていません",
|
||||
"installUpdate": "更新を適用しますか?",
|
||||
"updateSheetTitle": "ReVanced Managerを更新",
|
||||
"updateDialogTitle": "新しいアップデートが利用可能",
|
||||
"updateDialogTitle": "新しいアップデートが利用可能です",
|
||||
"updatePatchesSheetTitle": "ReVanced Patchesを更新",
|
||||
"updateChangelogTitle": "変更履歴",
|
||||
"updateChangelogTitle": "更新履歴",
|
||||
"updateDialogText": "${file} の更新が利用可能です。\n現在のバージョン: ${version} ",
|
||||
"downloadConsentDialogTitle": "必要なファイルをダウンロードしますか?",
|
||||
"downloadConsentDialogText": "ReVanced Managerを正常に動作させるためのファイルをダウンロードする必要があります。",
|
||||
"downloadConsentDialogText": "ReVanced Managerを正常に動作させるために必要なファイルをダウンロードする必要があります。",
|
||||
"downloadConsentDialogText2": "${url} に接続します。",
|
||||
"downloadingMessage": "更新データをダウンロードしています...",
|
||||
"downloadedMessage": "アップデートのダウンロードが完了しました",
|
||||
@ -74,7 +74,7 @@
|
||||
},
|
||||
"socialMediaCard": {
|
||||
"widgetTitle": "SNS",
|
||||
"widgetSubtitle": "私たちはここにいます!"
|
||||
"widgetSubtitle": "私たちはここにいます!"
|
||||
},
|
||||
"appSelectorView": {
|
||||
"viewTitle": "アプリを選択",
|
||||
@ -82,10 +82,10 @@
|
||||
"storageButton": "APKファイルを選択",
|
||||
"selectFromStorageButton": "ストレージから選択",
|
||||
"errorMessage": "選択したアプリは使用できません",
|
||||
"downloadToast": "ダウンロード機能は現在開発中です",
|
||||
"downloadToast": "ダウンロード機能はまだ実装されていないため、利用できません",
|
||||
"requireSuggestedAppVersionDialogText": "選択したアプリのバージョンは推奨バージョンではありません。予期せぬ問題が発生する可能性があります。\n推奨バージョンを選択してください。\n\n選択されたバージョン ${selected}\n推奨バージョン ${suggested}\n\n選択されたバージョンを使用する場合、設定から「推奨バージョンの使用を強制」を無効にしてください。",
|
||||
"featureNotAvailable": "この機能は未実装です",
|
||||
"featureNotAvailableText": "このアプリは分割APKであり、パッチの適用とインストールにはroot権限でマウントする必要があります。ただし、ストレージから単一APKを選択することでパッチの適用とインストールが可能です。"
|
||||
"featureNotAvailableText": "このアプリは分割APKであり、パッチの適用とインストールにはルート権限でマウントする必要があります。ただし、ストレージから単一APKを選択することでパッチの適用とインストールが可能です。"
|
||||
},
|
||||
"patchesSelectorView": {
|
||||
"viewTitle": "パッチを選択",
|
||||
@ -111,8 +111,8 @@
|
||||
"saveOptions": "保存",
|
||||
"unselectPatch": "パッチの選択を解除",
|
||||
"tooltip": "他の入力オプション",
|
||||
"selectFilePath": "ファイルパスを選択",
|
||||
"selectFolder": "フォルダーを選択",
|
||||
"selectFilePath": "ファイルのパスを選択",
|
||||
"selectFolder": "フォルダを選択",
|
||||
"requiredOption": "このオプションは必須です",
|
||||
"unsupportedOption": "このオプションはサポートされていません",
|
||||
"requiredOptionNull": "以下のオプションを設定する必要があります:\n\n${options}"
|
||||
@ -130,8 +130,8 @@
|
||||
"installButton": "インストール",
|
||||
"installRootType": "マウント",
|
||||
"installNonRootType": "標準",
|
||||
"warning": "予期しない問題を避けるため、パッチを適用したアプリの自動更新を無効にします。",
|
||||
"pressBackAgain": "キャンセルするには、もう一度戻るを押してください",
|
||||
"warning": "予期しない問題を避けるため、パッチを適用したアプリの自動更新を無効にすることを推奨します。",
|
||||
"pressBackAgain": "キャンセルするには、もう一度戻るボタンを押してください",
|
||||
"openButton": "開く",
|
||||
"notificationTitle": "ReVanced Managerはパッチを適用しています",
|
||||
"notificationText": "インストーラーに戻るにはタップしてください",
|
||||
@ -147,14 +147,14 @@
|
||||
"teamSectionTitle": "開発チーム",
|
||||
"debugSectionTitle": "デバッグ",
|
||||
"advancedSectionTitle": "高度な設定",
|
||||
"exportSectionTitle": "インポート&エクスポート",
|
||||
"exportSectionTitle": "インポート/エクスポート",
|
||||
"dataSectionTitle": "データソース",
|
||||
"themeModeLabel": "アプリのテーマ",
|
||||
"systemThemeLabel": "システム",
|
||||
"systemThemeLabel": "システムの設定に従う",
|
||||
"lightThemeLabel": "ライト",
|
||||
"darkThemeLabel": "ダーク",
|
||||
"dynamicThemeLabel": "Material You",
|
||||
"dynamicThemeHint": "よりデバイスに近い体験が楽しめます",
|
||||
"dynamicThemeHint": "お使いのデバイスに近い体験をお楽しみください",
|
||||
"languageLabel": "言語",
|
||||
"languageUpdated": "言語が更新されました",
|
||||
"sourcesLabel": "代替ソース",
|
||||
@ -166,7 +166,7 @@
|
||||
"apiURLResetDialogText": "APIのURLをデフォルト値にリセットしてもよろしいですか?",
|
||||
"sourcesUpdateNote": "注意: 自動的に代替ソースからReVanced Patchesをダウンロードします。\n\nこれにより、代替ソースに接続されます。",
|
||||
"apiURLLabel": "APIのURL",
|
||||
"apiURLHint": "ReVinced ManagerのAPI URLを設定します",
|
||||
"apiURLHint": "ReVanced ManagerのAPI URLを設定します",
|
||||
"selectApiURL": "APIのURL",
|
||||
"orgPatchesLabel": "Patches の組織",
|
||||
"sourcesPatchesLabel": "Patches のソース",
|
||||
@ -175,19 +175,20 @@
|
||||
"logsLabel": "ログを共有",
|
||||
"logsHint": "ReVanced Managerのログを共有します",
|
||||
"enablePatchesSelectionLabel": "パッチ選択の変更を許可",
|
||||
"enablePatchesSelectionHint": "パッチの選択・解除を禁止しません",
|
||||
"enablePatchesSelectionHint": "パッチの選択/解除を禁止しません",
|
||||
"enablePatchesSelectionWarningText": "パッチの選択を変更すると、予期せぬ問題が起こる可能性があります。\n\n有効にしますか?",
|
||||
"disablePatchesSelectionWarningText": "パッチ選択の変更を無効にしようとしています。\nデフォルトのパッチの選択が復元されます。\n\n無効にしますか?",
|
||||
"autoUpdatePatchesLabel": "パッチの自動アップデート",
|
||||
"autoUpdatePatchesHint": "パッチを自動的に最新バージョンに更新する",
|
||||
"usePrereleasesHint": "ReVanced ManagerとReVanced Patchesのプレリリース版を使用します",
|
||||
"showUpdateDialogLabel": "アップデートの通知を表示",
|
||||
"showUpdateDialogHint": "新しいアップデートが利用可能な場合にダイアログを表示します",
|
||||
"universalPatchesLabel": "共通パッチの表示",
|
||||
"universalPatchesHint": "すべてのアプリと共通パッチを表示します(アプリ一覧の読み込みが遅くなる可能性があります)",
|
||||
"universalPatchesHint": "すべてのアプリと共通パッチを表示します (アプリ一覧の読み込みが遅くなる可能性があります)",
|
||||
"lastPatchedAppLabel": "パッチを適用したアプリを保存",
|
||||
"lastPatchedAppHint": "最後にパッチされた内容を保存して、後でインストールまたはエクスポートできます",
|
||||
"versionCompatibilityCheckLabel": "バージョンの互換性の確認",
|
||||
"versionCompatibilityCheckHint": "選択したアプリのバージョンと互換性のないパッチの選択を禁止する",
|
||||
"versionCompatibilityCheckHint": "選択したアプリのバージョンと互換性のないパッチの選択を防止します",
|
||||
"requireSuggestedAppVersionLabel": "推奨バージョンの使用を強制",
|
||||
"requireSuggestedAppVersionHint": "推奨されていないバージョンのアプリを選択できないようにします",
|
||||
"requireSuggestedAppVersionDialogText": "推奨バージョンではないアプリを選択すると、予期しない問題が発生する可能性があります。\n\nこのまま続行しますか?",
|
||||
@ -195,14 +196,14 @@
|
||||
"snackbarMessage": "クリップボードにコピーしました",
|
||||
"restartAppForChanges": "変更を適用するにはアプリを再起動してください",
|
||||
"deleteTempDirLabel": "一時ファイルを削除",
|
||||
"deleteTempDirHint": "未使用の一時ファイルを削除",
|
||||
"deleteTempDirHint": "未使用の一時ファイルを削除します",
|
||||
"deletedTempDir": "一時ファイルを削除しました",
|
||||
"exportSettingsLabel": "設定をエクスポート",
|
||||
"exportSettingsHint": "設定をJSONファイルにエクスポートします",
|
||||
"exportedSettings": "設定をエクスポートしました",
|
||||
"importSettingsLabel": "設定をインポート",
|
||||
"importSettingsHint": "JSONファイルから設定をインポートします",
|
||||
"importedSettings": "設定がインポートされました",
|
||||
"importedSettings": "設定をインポートしました",
|
||||
"exportPatchesLabel": "パッチ選択をエクスポート",
|
||||
"exportPatchesHint": "パッチ選択をJSONファイルにエクスポートします",
|
||||
"exportedPatches": "パッチ選択をエクスポートしました",
|
||||
@ -212,7 +213,7 @@
|
||||
"importedPatches": "パッチ選択をインポートしました",
|
||||
"resetStoredPatchesLabel": "パッチの選択をリセット",
|
||||
"resetStoredPatchesHint": "保存されたパッチの選択をリセットする",
|
||||
"resetStoredPatchesDialogTitle": "パッチの選択をリセット",
|
||||
"resetStoredPatchesDialogTitle": "パッチの選択をリセットしますか?",
|
||||
"resetStoredPatchesDialogText": "デフォルトのパッチの選択が復元されます。",
|
||||
"resetStoredPatches": "パッチの選択をリセットしました",
|
||||
"resetStoredOptionsLabel": "パッチオプションをリセット",
|
||||
@ -241,7 +242,7 @@
|
||||
"keystoreSelectorErrorMessage": "選択したキーストアファイルは使用できません"
|
||||
},
|
||||
"appInfoView": {
|
||||
"widgetTitle": "アプリ情報",
|
||||
"widgetTitle": "アプリの情報",
|
||||
"openButton": "開く",
|
||||
"installButton": "インストール",
|
||||
"uninstallButton": "アンインストール",
|
||||
@ -250,11 +251,11 @@
|
||||
"deleteButton": "削除",
|
||||
"rootDialogTitle": "エラー",
|
||||
"lastPatchedAppDescription": "これは最後にパッチを適用したアプリのバックアップです。",
|
||||
"unmountDialogText": "このアプリをアンマウントしてもよろしいですか?",
|
||||
"uninstallDialogText": "本当にこのアプリをアンインストールしますか?",
|
||||
"rootDialogText": "アプリはスーパーユーザー権限でインストールされましたが、現在 ReVanced Manager にはその権限がありません。 スーパーユーザー権限を付与してください。",
|
||||
"unmountDialogText": "このアプリをマウント解除してもよろしいですか?",
|
||||
"uninstallDialogText": "このアプリをアンインストールしてもよろしいですか?",
|
||||
"rootDialogText": "アプリはルート権限でインストールされましたが、現在ReVanced Managerにはその権限がありません。 ルート権限を付与してください。",
|
||||
"removeAppDialogTitle": "アプリを削除しますか?",
|
||||
"removeAppDialogText": "本当にバックアップを削除してもよろしいですか?",
|
||||
"removeAppDialogText": "バックアップを削除してもよろしいですか?",
|
||||
"packageNameLabel": "パッケージ名",
|
||||
"installTypeLabel": "インストールの種類",
|
||||
"mountTypeLabel": "マウント",
|
||||
@ -271,7 +272,7 @@
|
||||
},
|
||||
"installErrorDialog": {
|
||||
"mount_version_mismatch": "バージョンが一致しません",
|
||||
"mount_no_root": "ルート権限がありません",
|
||||
"mount_no_root": "ルート権限が付与されていません",
|
||||
"mount_missing_installation": "インストールが見つかりませんでした",
|
||||
"status_failure_blocked": "インストールはブロックされました",
|
||||
"install_failed_verification_failure": "検証に失敗しました",
|
||||
@ -283,16 +284,16 @@
|
||||
"status_failure_timeout": "インストールがタイムアウトしました",
|
||||
"status_unknown": "インストールに失敗しました",
|
||||
"mount_version_mismatch_description": "インストールされたアプリがパッチを当てたアプリとは異なるバージョンであるため、インストールに失敗しました。\n\nマウントしているアプリのバージョンをインストールし、再度お試しください。",
|
||||
"mount_no_root_description": "ルートアクセスが許可されていないためインストールに失敗しました。\n\nReVanced Managerへのルートアクセスを許可し、もう一度お試しください。",
|
||||
"mount_no_root_description": "ルート権限が付与されていないためインストールに失敗しました。\n\nReVanced Managerへのルート権限を許可し、もう一度お試しください。",
|
||||
"mount_missing_installation_description": "パッチが適用されていないアプリがマウントされていないためインストールに失敗しました。\n\nマウントする前にパッチが適用されていないアプリをインストールし、もう一度お試しください。",
|
||||
"status_failure_timeout_description": "インストールに時間がかかりすぎました。\n\nもう一度やり直しますか?",
|
||||
"status_failure_timeout_description": "インストールに時間がかかりすぎたため、完了しませんでした。\n\nもう一度やり直しますか?",
|
||||
"status_failure_storage_description": "ストレージが不足しているためインストールに失敗しました。\n\n空き領域を解放して再度お試し下さい。",
|
||||
"status_failure_invalid_description": "パッチ適用されたアプリが無効なためインストールに失敗しました。\n\nアプリをアンインストールしてもう一度お試しください。",
|
||||
"status_failure_incompatible_description": "アプリはこのデバイスと互換性がありません。\n\nこのデバイスに対応しているAPKを使用して、もう一度お試しください。",
|
||||
"status_failure_conflict_description": "インストールはアプリの既存のインストールによって中止されました。\n\nインストールされたアプリをアンインストールし、もう一度やり直してください。",
|
||||
"status_failure_blocked_description": "インストールは ${packageName} によってブロックされました。\n\nセキュリティ設定を調整して、もう一度お試しください。",
|
||||
"install_failed_verification_failure_description": "認証の問題によりインストールに失敗しました。\n\nセキュリティ設定を調整して、もう一度お試しください。",
|
||||
"install_failed_version_downgrade_description": "インストールに失敗しました。パッチを当てたアプリがインストールされたアプリよりも低いバージョンであるためです。\n\nアプリをアンインストールしてもう一度お試しください。",
|
||||
"status_failure_conflict_description": "既にインストールされているアプリがあるため、インストールが中止されました。\n\nインストールされているアプリをアンインストールして、再試行しますか?",
|
||||
"status_failure_blocked_description": "インストールは${packageName}によってブロックされました。\n\nセキュリティ設定を確認して、もう一度お試しください。",
|
||||
"install_failed_verification_failure_description": "認証の問題によりインストールに失敗しました。\n\nセキュリティ設定を確認して、もう一度お試しください。",
|
||||
"install_failed_version_downgrade_description": "インストールに失敗しました。パッチが適用されたアプリがインストールされたアプリよりも低いバージョンであるためです。\n\nアプリをアンインストールしてもう一度お試しください。",
|
||||
"status_unknown_description": "不明な理由によりインストールに失敗しました。もう一度やり直してください。"
|
||||
}
|
||||
}
|
@ -11,7 +11,7 @@
|
||||
"notice": "알림",
|
||||
"noShowAgain": "다시 보지 않기",
|
||||
"add": "추가",
|
||||
"remove": "제거",
|
||||
"remove": "삭제",
|
||||
"showChangelogButton": "변경 사항 보기",
|
||||
"showUpdateButton": "업데이트 보기",
|
||||
"navigationView": {
|
||||
@ -25,18 +25,18 @@
|
||||
"updatesSubtitle": "업데이트",
|
||||
"lastPatchedAppSubtitle": "마지막으로 패치된 앱",
|
||||
"patchedSubtitle": "설치된 앱",
|
||||
"changeLaterSubtitle": "나중에 설정에서 변경할 수 있습니다",
|
||||
"changeLaterSubtitle": "나중에 설정에서 변경할 수 있습니다.",
|
||||
"noSavedAppFound": "앱을 찾을 수 없습니다",
|
||||
"noInstallations": "패치된 앱이 설치되어 있지 않습니다",
|
||||
"installUpdate": "업데이트를 계속 설치하시겠습니까?",
|
||||
"updateSheetTitle": "ReVanced Manager 업데이트",
|
||||
"updateDialogTitle": "새 업데이트가 있습니다",
|
||||
"updatePatchesSheetTitle": "ReVanced 패치 업데이트",
|
||||
"updateDialogTitle": "새로운 업데이트가 있습니다",
|
||||
"updatePatchesSheetTitle": "ReVanced Patches 업데이트",
|
||||
"updateChangelogTitle": "변경 사항",
|
||||
"updateDialogText": "'${file}'에 대한 새 업데이트를 할 수 있습니다\n\n현재 설치된 버전은 '${version}' 입니다",
|
||||
"updateDialogText": "'${file}'에 대한 새로운 업데이트를 할 수 있습니다.\n\n현재 설치된 버전은 '${version}' 입니다.",
|
||||
"downloadConsentDialogTitle": "필요한 파일을 다운로드하시겠습니까?",
|
||||
"downloadConsentDialogText": "ReVanced Manager가 제대로 작동하려면 필요한 파일을 다운로드해야 합니다",
|
||||
"downloadConsentDialogText2": "진행하면 '${url}' 에 연결됩니다",
|
||||
"downloadConsentDialogText": "ReVanced Manager가 제대로 작동하려면 필요한 파일을 다운로드해야 합니다.",
|
||||
"downloadConsentDialogText2": "진행하면 '${url}' 에 연결됩니다.",
|
||||
"downloadingMessage": "업데이트 다운로드 중 ...",
|
||||
"downloadedMessage": "업데이트를 다운로드 완료하였습니다",
|
||||
"installingMessage": "업데이트 설치 중 ...",
|
||||
@ -55,9 +55,9 @@
|
||||
"widgetTitle": "Patcher",
|
||||
"patchButton": "패치하기",
|
||||
"incompatibleArchWarningDialogText": "이 아키텍처에 대한 패치는 아직 지원되지 않으므로 실패할 수 있습니다. 그래도 계속하시겠습니까?",
|
||||
"removedPatchesWarningDialogText": "이 앱을 마지막으로 패치한 이후 제거된 패치입니다:\n\n${patches}\n\n${newPatches}\n\n그래도 계속하시겠습니까?",
|
||||
"removedPatchesWarningDialogText": "이 앱을 마지막으로 패치한 이후 삭제된 패치입니다:\n\n${patches}\n\n${newPatches}\n\n그래도 계속하시겠습니까?",
|
||||
"addedPatchesDialogText": "이 앱을 마지막으로 패치한 이후 추가된 패치입니다:\n\n${addedPatches}",
|
||||
"requiredOptionDialogText": "일부 패치 옵션을 설정해야 합니다"
|
||||
"requiredOptionDialogText": "일부 패치 옵션을 설정해야 합니다."
|
||||
},
|
||||
"appSelectorCard": {
|
||||
"widgetTitle": "앱 선택하기",
|
||||
@ -83,15 +83,15 @@
|
||||
"selectFromStorageButton": "기기 저장소에서 선택",
|
||||
"errorMessage": "선택한 앱을 사용할 수 없습니다",
|
||||
"downloadToast": "다운로드 기능은 아직 사용할 수 없습니다",
|
||||
"requireSuggestedAppVersionDialogText": "선택한 앱 버전이 권장 앱 버전과 일치하지 않아서 예상되지 않은 문제점이 발생할 수 있습니다. 권장 앱 버전을 사용하세요\n\n선택한 앱 버전: ${selected}\n권장 앱 버전: ${suggested}\n\n계속하려면 설정에서 '권장 앱 버전 요구'를 비활성화하세요",
|
||||
"requireSuggestedAppVersionDialogText": "선택한 앱 버전이 권장 앱 버전과 일치하지 않아서 예상되지 않은 문제점이 발생할 수 있습니다. 권장 앱 버전을 사용하세요.\n\n선택한 앱 버전: ${selected}\n권장 앱 버전: ${suggested}\n\n계속하려면 설정에서 '권장 앱 버전 요구'를 비활성화하세요.",
|
||||
"featureNotAvailable": "기능이 구현되지 않았습니다",
|
||||
"featureNotAvailableText": "이 기기에서 추출할 수 있는 앱이 분할된 APK 파일이므로 Root 권한으로 마운트해야만 안정적으로 패치 및 설치할 수 있습니다. 그러나 Non-Root 사용자는 기기 저장소에서 '외부에서 다운로드한 완전한 APK 파일'을 선택하여 패치 및 설치할 수 있습니다"
|
||||
"featureNotAvailableText": "이 기기에서 추출할 수 있는 앱이 분할 APK 파일이므로 Root 권한으로 마운트해야만 안정적으로 패치 및 설치할 수 있습니다. 그러나 Non-Root 사용자는 기기 저장소에서 '외부에서 다운로드한 완전한 APK 파일'을 선택하여 패치 및 설치할 수 있습니다."
|
||||
},
|
||||
"patchesSelectorView": {
|
||||
"viewTitle": "패치 선택하기",
|
||||
"searchBarHint": "패치 검색하기",
|
||||
"universalPatches": "공용 패치",
|
||||
"newPatches": "새 패치",
|
||||
"newPatches": "새로운 패치",
|
||||
"patches": "패치",
|
||||
"doneButton": "선택완료",
|
||||
"defaultChip": "기본값",
|
||||
@ -99,9 +99,9 @@
|
||||
"noneChip": "선택안함",
|
||||
"noneTooltip": "모든 패치 선택 해제",
|
||||
"loadPatchesSelection": "패치 선택목록 가져오기",
|
||||
"noSavedPatches": "선택한 앱에 적용할 패치가 저장되지 않았습니다\n'선택완료' 버튼을 눌러서 현재 선택목록을 저장하세요",
|
||||
"noSavedPatches": "선택한 앱에 적용할 패치가 저장되지 않았습니다.\n'선택완료' 버튼을 눌러서 현재 선택목록을 저장하세요.",
|
||||
"noPatchesFound": "선택한 앱에 대한 패치를 찾을 수 없습니다",
|
||||
"setRequiredOption": "옵션을 설정해야 하는 패치가 있습니다:\n\n${patches}\n\n진행하기 전 설정을 마쳐주세요"
|
||||
"setRequiredOption": "옵션을 설정해야 하는 패치가 있습니다:\n\n${patches}\n\n진행하기 전 설정을 마쳐주세요."
|
||||
},
|
||||
"patchOptionsView": {
|
||||
"customValue": "사용자 정의 값",
|
||||
@ -118,26 +118,26 @@
|
||||
"requiredOptionNull": "다음 옵션들이 설정되어 있어야 합니다:\n\n${options}"
|
||||
},
|
||||
"patchItem": {
|
||||
"unsupportedDialogText": "이 패치는 문제점을 발생시킬 수 있습니다\n\n앱 버전: ${packageVersion}\n지원되는 버전:\n${supportedVersions}",
|
||||
"unsupportedPatchVersion": "패치가 이 앱 버전을 지원하지 않습니다",
|
||||
"unsupportedDialogText": "이 패치는 문제점을 발생시킬 수 있습니다.\n\n앱 버전: ${packageVersion}\n지원되는 버전:\n${supportedVersions}",
|
||||
"unsupportedPatchVersion": "패치가 이 앱 버전을 지원하지 않습니다.",
|
||||
"unsupportedRequiredOption": "패치에 이 앱을 지원하지 않는 필수 옵션이 포함되어 있습니다",
|
||||
"patchesChangeWarningDialogText": "기본 패치 선택을 사용하는 것을 권장합니다. 설정을 변경할 경우에는 예상되지 않은 문제점의 원인이 될 수 있습니다\n\n패치 선택을 변경하기 위해서는 설정에서 \"패치 선택 변경 허용\"을 활성화해야 합니다",
|
||||
"patchesChangeWarningDialogText": "기본 패치 선택을 사용하는 것을 권장합니다. 설정을 변경할 경우에는 예상되지 않은 문제점의 원인이 될 수 있습니다.\n\n패치 선택을 변경하기 위해서는 설정에서 \"패치 선택 변경 허용\"을 활성화해야 합니다.",
|
||||
"patchesChangeWarningDialogButton": "기본 선택목록 사용"
|
||||
},
|
||||
"installerView": {
|
||||
"installType": "설치 유형 선택",
|
||||
"installTypeDescription": "설치를 진행할 유형을 선택해주세요",
|
||||
"installTypeDescription": "설치를 진행할 유형을 선택해주세요.",
|
||||
"installButton": "설치하기",
|
||||
"installRootType": "마운트",
|
||||
"installNonRootType": "일반",
|
||||
"warning": "패치된 앱의 자동 업데이트를 비활성화하여 예상되지 않은 문제점을 방지하세요",
|
||||
"warning": "패치된 앱의 자동 업데이트를 비활성화하여 예상되지 않은 문제점을 방지하세요.",
|
||||
"pressBackAgain": "취소하려면 뒤로가기 버튼을 다시 누르세요",
|
||||
"openButton": "열기",
|
||||
"notificationTitle": "ReVanced Manager가 패치 중입니다",
|
||||
"notificationText": "설치 관리자로 돌아가려면 여기를 누르세요",
|
||||
"exportApkButtonTooltip": "패치된 APK 내보내기",
|
||||
"exportLogButtonTooltip": "로그 내보내기",
|
||||
"screenshotDetected": "스크린샷이 감지되었습니다. 로그를 공유할 목적이라면, 대신 텍스트 사본으로 공유해주세요\n\n로그를 클립보드에 복사하시겠습니까?",
|
||||
"screenshotDetected": "스크린샷이 감지되었습니다. 로그를 공유할 목적이라면, 대신 텍스트 사본으로 공유해주세요.\n\n로그를 클립보드에 복사하시겠습니까?",
|
||||
"copiedToClipboard": "로그를 클립보드에 복사하였습니다",
|
||||
"noExit": "설치 관리자가 실행 중이므로 중단할 수 없습니다 ..."
|
||||
},
|
||||
@ -164,7 +164,7 @@
|
||||
"sourcesResetDialogTitle": "초기화",
|
||||
"sourcesResetDialogText": "정말 사용자 정의 소스를 기본값으로 초기화하시겠습니까?",
|
||||
"apiURLResetDialogText": "정말 API URL을 기본값으로 초기화하시겠습니까?",
|
||||
"sourcesUpdateNote": "알림: 변경하면 대체 소스에서 ReVanced Patches가 자동으로 다운로드됩니다\n\n그 이후에는 대체 소스로 연결됩니다",
|
||||
"sourcesUpdateNote": "알림: 변경하면 대체 소스에서 ReVanced Patches가 자동으로 다운로드됩니다.\n\n그 이후에는 대체 소스로 연결됩니다.",
|
||||
"apiURLLabel": "API URL",
|
||||
"apiURLHint": "ReVanced Manager의 API URL를 설정할 수 있습니다",
|
||||
"selectApiURL": "API URL",
|
||||
@ -176,12 +176,15 @@
|
||||
"logsHint": "수집된 ReVanced Manager 로그를 공유합니다",
|
||||
"enablePatchesSelectionLabel": "패치 선택 변경 허용",
|
||||
"enablePatchesSelectionHint": "패치를 선택하거나 선택 해제할 수 있습니다",
|
||||
"enablePatchesSelectionWarningText": "패치 선택을 변경하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다\n\n그래도 활성화하시겠습니까?",
|
||||
"disablePatchesSelectionWarningText": "패치 선택 변경을 비활성화하려 합니다\n기본 패치 선택목록으로 복원될 것입니다\n\n그래도 비활성화하시겠습니까?",
|
||||
"enablePatchesSelectionWarningText": "패치 선택을 변경하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다.\n\n그래도 활성화하시겠습니까?",
|
||||
"disablePatchesSelectionWarningText": "패치 선택 변경을 비활성화하려 합니다.\n기본 패치 선택목록으로 복원될 것입니다.\n\n그래도 비활성화하시겠습니까?",
|
||||
"autoUpdatePatchesLabel": "패치 자동 업데이트",
|
||||
"autoUpdatePatchesHint": "ReVanced Manager 앱 내에서 사용되는 패치를 최신 버전으로 자동 업데이트합니다",
|
||||
"autoUpdatePatchesHint": "ReVanced Patches를 최신 버전으로 자동 업데이트합니다",
|
||||
"usePrereleasesLabel": "Pre-Releases 버전 사용",
|
||||
"usePrereleasesHint": "ReVanced Manager 및 ReVanced Patches의 Pre-Releases 버전을 사용합니다",
|
||||
"usePrereleasesWarningText": "Pre-Releases 버전을 사용하면 예상되지 않은 문제점이 발생할 수 있습니다.\n\n그래도 활성화하시겠습니까?",
|
||||
"showUpdateDialogLabel": "업데이트 팝업창 보기",
|
||||
"showUpdateDialogHint": "새 업데이트가 있으면 팝업창을 표시합니다",
|
||||
"showUpdateDialogHint": "새로운 업데이트가 있으면 팝업창을 표시합니다",
|
||||
"universalPatchesLabel": "공용 패치 보기",
|
||||
"universalPatchesHint": "기기에 설치된 모든 앱과 공용 패치를 표시합니다 (앱 목록이 느려질 수 있음)",
|
||||
"lastPatchedAppLabel": "패치된 앱 저장",
|
||||
@ -190,18 +193,18 @@
|
||||
"versionCompatibilityCheckHint": "선택한 앱 버전과 호환되지 않는 패치를 선택할 수 없습니다",
|
||||
"requireSuggestedAppVersionLabel": "권장 앱 버전 요구",
|
||||
"requireSuggestedAppVersionHint": "권장되지 않은 앱 버전은 선택할 수 없습니다",
|
||||
"requireSuggestedAppVersionDialogText": "권장 앱 버전이 아닌 앱을 선택하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다\n\n그래도 계속하시겠습니까?",
|
||||
"requireSuggestedAppVersionDialogText": "권장 앱 버전이 아닌 앱을 선택하는 경우에는 예상되지 않은 문제점이 발생할 수 있습니다.\n\n그래도 계속하시겠습니까?",
|
||||
"aboutLabel": "정보",
|
||||
"snackbarMessage": "클립보드에 복사하였습니다",
|
||||
"restartAppForChanges": "변경 사항을 적용하려면 앱을 다시 시작하세요",
|
||||
"deleteTempDirLabel": "임시 파일 제거",
|
||||
"deleteTempDirHint": "사용하지 않는 임시 파일을 제거합니다",
|
||||
"deletedTempDir": "임시 파일을 제거하였습니다",
|
||||
"deleteTempDirLabel": "임시 파일 삭제",
|
||||
"deleteTempDirHint": "사용하지 않는 임시 파일을 삭제합니다",
|
||||
"deletedTempDir": "임시 파일을 삭제하였습니다",
|
||||
"exportSettingsLabel": "설정 내보내기",
|
||||
"exportSettingsHint": "설정을 JSON 파일로 내보낼 수 있습니다",
|
||||
"exportSettingsHint": "설정을 JSON 파일로 내보냅니다",
|
||||
"exportedSettings": "설정을 내보냈습니다",
|
||||
"importSettingsLabel": "설정 가져오기",
|
||||
"importSettingsHint": "설정을 JSON 파일에서 가져올 수 있습니다",
|
||||
"importSettingsHint": "설정을 JSON 파일에서 가져옵니다",
|
||||
"importedSettings": "설정을 가져왔습니다",
|
||||
"exportPatchesLabel": "패치 선택목록 내보내기",
|
||||
"exportPatchesHint": "패치 선택목록을 JSON 파일로 내보냅니다",
|
||||
@ -218,15 +221,15 @@
|
||||
"resetStoredOptionsLabel": "패치 옵션 초기화",
|
||||
"resetStoredOptionsHint": "모든 패치 옵션을 초기화합니다",
|
||||
"resetStoredOptionsDialogTitle": "패치 옵션을 초기화하시겠습니까?",
|
||||
"resetStoredOptionsDialogText": "패치 옵션을 초기화하면 저장한 모든 옵션이 제거됩니다",
|
||||
"resetStoredOptionsDialogText": "패치 옵션을 초기화하면 저장한 모든 옵션이 삭제됩니다.",
|
||||
"resetStoredOptions": "옵션을 초기화하였습니다",
|
||||
"deleteLogsLabel": "로그 제거하기",
|
||||
"deleteLogsHint": "수집된 ReVanced Manager 로그를 제거합니다",
|
||||
"deletedLogs": "로그를 제거하였습니다",
|
||||
"deleteLogsLabel": "로그 삭제하기",
|
||||
"deleteLogsHint": "수집된 ReVanced Manager 로그를 삭제합니다",
|
||||
"deletedLogs": "로그를 삭제하였습니다",
|
||||
"regenerateKeystoreLabel": "키스토어 재생성",
|
||||
"regenerateKeystoreHint": "앱을 서명할 때 사용한 키스토어를 재생성합니다",
|
||||
"regenerateKeystoreDialogTitle": "키스토어를 재생성하시겠습니까?",
|
||||
"regenerateKeystoreDialogText": "기존 키스토어로 서명한 패치된 앱을 더 이상 업데이트할 수 없게 됩니다",
|
||||
"regenerateKeystoreDialogText": "기존 키스토어로 서명한 패치된 앱을 더 이상 업데이트할 수 없게 됩니다.",
|
||||
"regeneratedKeystore": "키스토어를 재생성하였습니다",
|
||||
"exportKeystoreLabel": "키스토어 내보내기",
|
||||
"exportKeystoreHint": "앱을 서명할 때 사용한 키스토어를 내보냅니다",
|
||||
@ -244,17 +247,17 @@
|
||||
"widgetTitle": "앱 정보",
|
||||
"openButton": "열기",
|
||||
"installButton": "설치하기",
|
||||
"uninstallButton": "제거하기",
|
||||
"uninstallButton": "삭제하기",
|
||||
"unmountButton": "마운트 해제",
|
||||
"exportButton": "내보내기",
|
||||
"deleteButton": "제거하기",
|
||||
"deleteButton": "삭제하기",
|
||||
"rootDialogTitle": "오류",
|
||||
"lastPatchedAppDescription": "마지막으로 패치된 앱의 백업입니다",
|
||||
"lastPatchedAppDescription": "마지막으로 패치된 앱의 백업입니다.",
|
||||
"unmountDialogText": "이 앱의 마운트를 해제하시겠습니까?",
|
||||
"uninstallDialogText": "이 앱을 제거하시겠습니까?",
|
||||
"rootDialogText": "앱이 슈퍼유저 권한으로 설치되었으나 현재 ReVanced Manager에는 권한이 없습니다\n먼저 슈퍼유저 권한을 부여하세요",
|
||||
"removeAppDialogTitle": "앱을 제거하시겠습니까?",
|
||||
"removeAppDialogText": "이 백업을 제거하시겠습니까?",
|
||||
"uninstallDialogText": "이 앱을 삭제하시겠습니까?",
|
||||
"rootDialogText": "앱이 슈퍼유저 권한으로 설치되었으나 현재 ReVanced Manager에는 권한이 없습니다.\n먼저 슈퍼유저 권한을 부여하세요.",
|
||||
"removeAppDialogTitle": "앱을 삭제하시겠습니까?",
|
||||
"removeAppDialogText": "이 백업을 삭제하시겠습니까?",
|
||||
"packageNameLabel": "패키지 이름",
|
||||
"installTypeLabel": "설치 유형",
|
||||
"mountTypeLabel": "마운트",
|
||||
@ -282,17 +285,17 @@
|
||||
"status_failure_incompatible": "설치 미호환",
|
||||
"status_failure_timeout": "설치 시간 초과",
|
||||
"status_unknown": "설치 실패",
|
||||
"mount_version_mismatch_description": "패치된 앱과 설치된 앱의 버전이 달라서 설치에 실패하였습니다\n\n마운트하고 있는 앱의 버전으로 설치한 후에 다시 시도하세요",
|
||||
"mount_no_root_description": "Root 권한이 주어지지 않아서 설치에 실패하였습니다\n\nReVanced Manager에 Root 권한을 부여한 후에 다시 시도하세요",
|
||||
"mount_missing_installation_description": "패치되지 않은 앱이 이 기기에 설치되지 않아서 마운트를 진행할 수 없어서 설치에 실패하였습니다\n\n마운트하기 전 패치되지 않은 앱을 설치한 후에 다시 시도하세요",
|
||||
"status_failure_timeout_description": "설치하는 데 시간이 너무 오래 걸립니다\n\n다시 시도하시겠습니까?",
|
||||
"status_failure_storage_description": "저장소 공간이 충분하지 않아서 설치에 실패하였습니다\n\n저장소 공간을 확보한 후에 다시 시도하세요",
|
||||
"status_failure_invalid_description": "패치된 앱이 유효하지 않아서 설치에 실패하였습니다\n\n앱을 제거한 후에 다시 시도하시겠습니까?",
|
||||
"status_failure_incompatible_description": "이 앱은 이 기기와 호환되지 않습니다\n\n이 기기에서 지원되는 APK를 사용하여 다시 시도하세요",
|
||||
"status_failure_conflict_description": "기존에 설치된 앱이 설치를 방해하였습니다\n\n설치된 앱을 제거한 후에 다시 시도하시겠습니까?",
|
||||
"status_failure_blocked_description": "설치가 '${packageName}'에 의해 차단되었습니다\n\n보안 설정을 조정한 후에 다시 시도하세요",
|
||||
"install_failed_verification_failure_description": "인증 문제로 인해 설치에 실패하였습니다\n\n보안 설정을 조정한 후에 다시 시도하세요",
|
||||
"install_failed_version_downgrade_description": "패치된 앱의 버전이 설치된 앱의 버전보다 낮아서 설치에 실패하였습니다\n\n앱을 제거한 후에 다시 시도하시겠습니까?",
|
||||
"status_unknown_description": "알 수 없는 이유로 설치에 실패하였습니다. 다시 시도하세요"
|
||||
"mount_version_mismatch_description": "패치된 앱과 설치된 앱의 버전이 달라서 설치에 실패하였습니다.\n\n마운트하고 있는 앱의 버전으로 설치한 후에 다시 시도하세요.",
|
||||
"mount_no_root_description": "Root 권한이 주어지지 않아서 설치에 실패하였습니다.\n\nReVanced Manager에 Root 권한을 부여한 후에 다시 시도하세요.",
|
||||
"mount_missing_installation_description": "패치되지 않은 앱이 이 기기에 설치되지 않아서 마운트를 진행할 수 없어서 설치에 실패하였습니다.\n\n마운트하기 전 패치되지 않은 앱을 설치한 후에 다시 시도하세요.",
|
||||
"status_failure_timeout_description": "설치하는 데 시간이 너무 오래 걸립니다.\n\n다시 시도하시겠습니까?",
|
||||
"status_failure_storage_description": "저장소 공간이 충분하지 않아서 설치에 실패하였습니다.\n\n저장소 공간을 확보한 후에 다시 시도하세요.",
|
||||
"status_failure_invalid_description": "패치된 앱이 유효하지 않아서 설치에 실패하였습니다.\n\n앱을 삭제한 후에 다시 시도하시겠습니까?",
|
||||
"status_failure_incompatible_description": "이 앱은 이 기기와 호환되지 않습니다.\n\n이 기기에서 지원되는 APK를 사용하여 다시 시도하세요.",
|
||||
"status_failure_conflict_description": "기존에 설치된 앱이 설치를 방해하였습니다.\n\n설치된 앱을 삭제한 후에 다시 시도하시겠습니까?",
|
||||
"status_failure_blocked_description": "설치가 '${packageName}'에 의해 차단되었습니다.\n\n보안 설정을 조정한 후에 다시 시도하세요.",
|
||||
"install_failed_verification_failure_description": "인증 문제로 인해 설치에 실패하였습니다.\n\n보안 설정을 조정한 후에 다시 시도하세요.",
|
||||
"install_failed_version_downgrade_description": "패치된 앱의 버전이 설치된 앱의 버전보다 낮아서 설치에 실패하였습니다.\n\n앱을 삭제한 후에 다시 시도하시겠습니까?",
|
||||
"status_unknown_description": "알 수 없는 이유로 설치에 실패하였습니다. 다시 시도하세요."
|
||||
}
|
||||
}
|
@ -180,6 +180,7 @@
|
||||
"disablePatchesSelectionWarningText": "Jūs gatavojaties atspējot labojumu izvēles maiņu.\nTiksies atjaunota labojumu noklusējuma izvēle.\n\nTomēr atspējot?",
|
||||
"autoUpdatePatchesLabel": "Automātiski atjaunināt ielāpus",
|
||||
"autoUpdatePatchesHint": "Automātiski atjaunināt ielāpus uz jaunāko versiju",
|
||||
"usePrereleasesLabel": "Lietot pirmizlaidumus",
|
||||
"showUpdateDialogLabel": "Rādīt atjauninājuma dialoglodziņu",
|
||||
"showUpdateDialogHint": "Rādīt dialoglodziņu, kad ir pieejams jauns atjauninājums",
|
||||
"universalPatchesLabel": "Rādīt universālos ielāpus",
|
||||
|
@ -1,18 +1,41 @@
|
||||
{
|
||||
"okButton": "OK",
|
||||
"cancelButton": "Batal",
|
||||
"dismissButton": "Melepaskan",
|
||||
"quitButton": "Henti",
|
||||
"updateButton": "Kemas kini",
|
||||
"suggested": "Versi dicadangkan: ${version}",
|
||||
"yesButton": "Ya",
|
||||
"noButton": "Tidak",
|
||||
"warning": "Amaran",
|
||||
"notice": "Notis",
|
||||
"noShowAgain": "Jangan tunjukkan lagi",
|
||||
"add": "Tambah",
|
||||
"remove": "Buang",
|
||||
"showChangelogButton": "Tunjuk log perubahan",
|
||||
"showUpdateButton": "Tunjuk kemas kini",
|
||||
"navigationView": {
|
||||
"dashboardTab": "Papan Pemuka",
|
||||
"patcherTab": "Pemodifikasi",
|
||||
"settingsTab": "Tetapan"
|
||||
},
|
||||
"homeView": {
|
||||
"refreshSuccess": "Muat semula berjaya",
|
||||
"widgetTitle": "Papan Pemuka",
|
||||
"updatesSubtitle": "Kemas Kini",
|
||||
"lastPatchedAppSubtitle": "Aplikasi tampalan terakhir",
|
||||
"patchedSubtitle": "Apl yang telah di pasang",
|
||||
"changeLaterSubtitle": "Anda boleh menukar tetapan pada waktu lain",
|
||||
"noSavedAppFound": "Tiada aplikasi di jumpai",
|
||||
"noInstallations": "Tiada aplikasi tampalan telah di pasang",
|
||||
"installUpdate": "Teruskan untuk pasang kemaskini? ",
|
||||
"updateSheetTitle": "Kemaskini ReVanced Manager",
|
||||
"updateDialogTitle": "Kemas kini baharu tersedia",
|
||||
"updatePatchesSheetTitle": "Kemaskini ReVanced Patches",
|
||||
"updateChangelogTitle": "Log perubahan",
|
||||
"updateDialogText": "Kemas kini baharu tersedia untuk ${file}\n\nVersi yang terpasang adalah ${version}",
|
||||
"downloadConsentDialogTitle": "Muat turun fail yang diperlukan?",
|
||||
"downloadConsentDialogText": "ReVanced Manager perlu memuat turun fail penting untuk berfungsi dengan baik.",
|
||||
"downloadingMessage": "Memuat turun pengemaskinian...",
|
||||
"downloadedMessage": "Kemaskini dimuat turun",
|
||||
"installingMessage": "Memasang pengemaskinian...",
|
||||
|
@ -7,7 +7,7 @@
|
||||
"suggested": "Sugerowana wersja: ${version}",
|
||||
"yesButton": "Tak",
|
||||
"noButton": "Nie",
|
||||
"warning": "Ostrzeżenie",
|
||||
"warning": "Uwaga",
|
||||
"notice": "Komunikat",
|
||||
"noShowAgain": "Nie pokazuj ponownie",
|
||||
"add": "Dodaj",
|
||||
@ -23,7 +23,7 @@
|
||||
"refreshSuccess": "Odświeżono pomyślnie",
|
||||
"widgetTitle": "Panel główny",
|
||||
"updatesSubtitle": "Aktualizacje",
|
||||
"lastPatchedAppSubtitle": "Ostatnio poprawiona aplikacja",
|
||||
"lastPatchedAppSubtitle": "Ostatnio załatana aplikacja",
|
||||
"patchedSubtitle": "Zainstalowane aplikacje",
|
||||
"changeLaterSubtitle": "Możesz to zmienić w ustawieniach w późniejszym czasie.",
|
||||
"noSavedAppFound": "Nie znaleziono aplikacji",
|
||||
@ -52,7 +52,7 @@
|
||||
"timeagoLabel": "${time} temu"
|
||||
},
|
||||
"patcherView": {
|
||||
"widgetTitle": "Łataj",
|
||||
"widgetTitle": "Łatanie",
|
||||
"patchButton": "Załataj",
|
||||
"incompatibleArchWarningDialogText": "Łatanie na tej architekturze nie jest jeszcze obsługiwane i może się nie powieść. Czy chcesz kontynuować mimo to?",
|
||||
"removedPatchesWarningDialogText": "Łatki usunięte od czasu Twojego ostatniego łatania aplikacji:\n\n${patches}\n\n${newPatches}Kontynuować?",
|
||||
@ -79,7 +79,7 @@
|
||||
"appSelectorView": {
|
||||
"viewTitle": "Wybierz aplikację",
|
||||
"searchBarHint": "Wyszukaj aplikację",
|
||||
"storageButton": "Pamięć",
|
||||
"storageButton": "Wybierz z pamięci",
|
||||
"selectFromStorageButton": "Wybierz z pamięci",
|
||||
"errorMessage": "Nie można użyć wybranej aplikacji",
|
||||
"downloadToast": "Funkcja pobierania jest jeszcze niedostępna",
|
||||
@ -107,7 +107,7 @@
|
||||
"customValue": "Niestandardowa wartość",
|
||||
"setToNull": "Ustaw na zerowy",
|
||||
"nullValue": "Ta opcja jest obecnie pusta",
|
||||
"viewTitle": "Opcje łatek",
|
||||
"viewTitle": "Opcje łatki",
|
||||
"saveOptions": "Zapisz",
|
||||
"unselectPatch": "Odznacz łatkę",
|
||||
"tooltip": "Więcej opcji wejściowych",
|
||||
@ -154,9 +154,9 @@
|
||||
"lightThemeLabel": "Jasny",
|
||||
"darkThemeLabel": "Ciemny",
|
||||
"dynamicThemeLabel": "Material You",
|
||||
"dynamicThemeHint": "Ciesz się wrażeniami bliższymi twojemu urządzeniu",
|
||||
"dynamicThemeHint": "Ciesz się wyglądem dopasowanym do twojego urządzenia",
|
||||
"languageLabel": "Język",
|
||||
"languageUpdated": "Zaktualizowano język",
|
||||
"languageUpdated": "Zmieniono język",
|
||||
"sourcesLabel": "Alternatywne źródło",
|
||||
"sourcesLabelHint": "Skonfiguruj alternatywne źródła dla łatek ReVanced",
|
||||
"useAlternativeSources": "Używaj alternatywnych źródeł",
|
||||
|
@ -180,6 +180,7 @@
|
||||
"disablePatchesSelectionWarningText": "Você irá desabilitar a mudança da pré-seleção dos patches.\nA seleção padrão dos patches será restaurada.\n\nDesabilitar mesmo assim?",
|
||||
"autoUpdatePatchesLabel": "Atualizar patches automaticamente",
|
||||
"autoUpdatePatchesHint": "Atualize automaticamente os patches para a versão mais recente",
|
||||
"usePrereleasesLabel": "Usar versões preliminares",
|
||||
"showUpdateDialogLabel": "Mostrar alerta de atualização",
|
||||
"showUpdateDialogHint": "Mostra um aviso quando uma nova atualização estiver disponível",
|
||||
"universalPatchesLabel": "Mostrar patches universais",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Вы собираетесь выключить измененную выборку патчей.\nБудет восстановлен стандартный выбор патчей.\n\nВсе равно выключить?",
|
||||
"autoUpdatePatchesLabel": "Автообновление патчей",
|
||||
"autoUpdatePatchesHint": "Автоматически обновлять патчи до последней версии",
|
||||
"usePrereleasesLabel": "Использовать предварительные версии",
|
||||
"usePrereleasesHint": "Использовать предварительные версии ReVanced Manager и ReVanced Patches",
|
||||
"usePrereleasesWarningText": "Использование предварительных версий может привести к непредвиденным проблемам.\n\nВключить в любом случае?",
|
||||
"showUpdateDialogLabel": "Показать диалог обновления",
|
||||
"showUpdateDialogHint": "Показывать диалоговое окно, когда доступно новое обновление",
|
||||
"universalPatchesLabel": "Показать универсальные патчи",
|
||||
|
@ -8,7 +8,7 @@
|
||||
"yesButton": "Da",
|
||||
"noButton": "Ne",
|
||||
"warning": "Opozorilo",
|
||||
"notice": "Notice",
|
||||
"notice": "Obvestilo",
|
||||
"noShowAgain": "Ne prikazuj več",
|
||||
"add": "Dodaj",
|
||||
"remove": "Odstrani",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Upravo ćete da onemogućite promenu izbora pečeva.\nPodrazumevani izbor pečeva će biti vraćen.\n\nIpak onemogućiti?",
|
||||
"autoUpdatePatchesLabel": "Automatski ažuriraj pečeve",
|
||||
"autoUpdatePatchesHint": "Instalira najnoviju verziju pečeva automatski",
|
||||
"usePrereleasesLabel": "Koristi predizdanja",
|
||||
"usePrereleasesHint": "Korišćenje verzije predizdanja ReVanced Managera i ReVanced pečeva",
|
||||
"usePrereleasesWarningText": "Korišćenje verzija predizdanja može izazvati neočekivane probleme.\n\nIpak omogućiti?",
|
||||
"showUpdateDialogLabel": "Prikaži dijalog o ažuriranju",
|
||||
"showUpdateDialogHint": "Prikazivanje dijaloga kada je novo ažuriranje dostupno",
|
||||
"universalPatchesLabel": "Prikaži univerzalne pečeve",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Управо ћете да онемогућите промену избора печева.\nПодразумевани избор печева ће бити враћен.\n\nИпак онемогућити?",
|
||||
"autoUpdatePatchesLabel": "Аутоматски ажурирај печеве",
|
||||
"autoUpdatePatchesHint": "Инсталира најновију верзију печева аутоматски",
|
||||
"usePrereleasesLabel": "Користи предиздања",
|
||||
"usePrereleasesHint": "Коришћење верзија предиздања ReVanced Manager-а и ReVanced печева",
|
||||
"usePrereleasesWarningText": "Коришћење верзија предиздања може изазвати неочекиване проблеме.\n\nИпак омогућити?",
|
||||
"showUpdateDialogLabel": "Прикажи дијалог о ажурирању",
|
||||
"showUpdateDialogHint": "Приказивање дијалога када је ново ажурирање доступно",
|
||||
"universalPatchesLabel": "Прикажи универзалне печеве",
|
||||
|
@ -180,6 +180,7 @@
|
||||
"disablePatchesSelectionWarningText": "คุณกำลังจะปิดใช้งานการเปลี่ยนการเลือกการแก้ไข\nการเลือกการแก้ไขเริ่มต้นจะถูกคืนค่า\n\nปิดใช้งานอยู่ดี?",
|
||||
"autoUpdatePatchesLabel": "อัปเดตการแก้ไขโดยอัตโนมัติ",
|
||||
"autoUpdatePatchesHint": "อัปเดตการแก้ไขเป็นเวอร์ชันล่าสุดโดยอัตโนมัติ",
|
||||
"usePrereleasesLabel": "ใช้รุ่นก่อนเผยแพร่",
|
||||
"showUpdateDialogLabel": "แสดงกล่องโต้ตอบการอัปเดต",
|
||||
"showUpdateDialogHint": "แสดงกล่องโต้ตอบเมื่อมีการอัปเดตใหม่",
|
||||
"universalPatchesLabel": "แสดงการแก้ไขแบบสากล",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Yama seçimini değiştirmeyi devre dışı bırakmak üzeresiniz.\nVarsayılan yama seçimi geri yüklenecektir.\n\nYine de devre dışı bırakılsın mı?",
|
||||
"autoUpdatePatchesLabel": "Yamaları otomatik güncelle",
|
||||
"autoUpdatePatchesHint": "Yamaları otomatik olarak en son sürüme güncelle",
|
||||
"usePrereleasesLabel": "Ön sürümleri kullan",
|
||||
"usePrereleasesHint": "ReVanced Manager ve ReVanced Yamaları'nın ön sürüm versiyonlarını kullan",
|
||||
"usePrereleasesWarningText": "Ön sürüm versiyonlarını kullanmak beklenmedik sorunlara neden olabilir.\n\nYine de etkinleştirmek istiyor musunuz?",
|
||||
"showUpdateDialogLabel": "Güncelleme penceresini göster",
|
||||
"showUpdateDialogHint": "Yeni bir güncelleme mevcut olduğunda bir pencere göster",
|
||||
"universalPatchesLabel": "Ortak yamaları göster",
|
||||
|
@ -180,6 +180,9 @@
|
||||
"disablePatchesSelectionWarningText": "Ви збираєтеся вимкнути зміну вибору патчів.\nБуде відновлено стандартний вибір патчів.\n\nВсе одно вимкнути?",
|
||||
"autoUpdatePatchesLabel": "Автоматичне оновлення патчів",
|
||||
"autoUpdatePatchesHint": "Автоматично оновлювати патчі до останньої версії",
|
||||
"usePrereleasesLabel": "Використовувати передрелізи",
|
||||
"usePrereleasesHint": "Використовувати передрелізні версії ReVanced Manager та ReVanced Patches",
|
||||
"usePrereleasesWarningText": "Використання передрелізних версій може спричинити несподівані проблеми.\n\nВсе одно увімкнути?",
|
||||
"showUpdateDialogLabel": "Показувати вікно оновлення",
|
||||
"showUpdateDialogHint": "Показувати діалогове вікно, коли доступне нове оновлення",
|
||||
"universalPatchesLabel": "Показувати універсальні патчі",
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"okButton": "Đồng ý",
|
||||
"cancelButton": "Hủy",
|
||||
"dismissButton": "Từ bỏ",
|
||||
"dismissButton": "Đóng",
|
||||
"quitButton": "Thoát",
|
||||
"updateButton": "Cập nhật",
|
||||
"suggested": "Được đề xuất: ${version}",
|
||||
@ -9,7 +9,7 @@
|
||||
"noButton": "Không",
|
||||
"warning": "Cảnh báo",
|
||||
"notice": "Lưu ý",
|
||||
"noShowAgain": "Không hiển thị lại điều này",
|
||||
"noShowAgain": "Không hiển thị lại nội dung này",
|
||||
"add": "Thêm",
|
||||
"remove": "Loại bỏ",
|
||||
"showChangelogButton": "Hiển thị nhật ký thay đổi",
|
||||
@ -25,7 +25,7 @@
|
||||
"updatesSubtitle": "Các bản cập nhật",
|
||||
"lastPatchedAppSubtitle": "Ứng dụng đã vá lần cuối",
|
||||
"patchedSubtitle": "Các ứng dụng đã cài đặt",
|
||||
"changeLaterSubtitle": "Bạn có thể thay đổi cài đặt này sau.",
|
||||
"changeLaterSubtitle": "Bạn có thể thay đổi cài đặt này sau đó.",
|
||||
"noSavedAppFound": "Không tìm thấy ứng dụng",
|
||||
"noInstallations": "Không có ứng dụng đã vá nào được cài đặt",
|
||||
"installUpdate": "Tiếp tục cài đặt bản cập nhật?",
|
||||
@ -33,7 +33,7 @@
|
||||
"updateDialogTitle": "Có bản cập nhật mới",
|
||||
"updatePatchesSheetTitle": "Cập nhật Các bản vá ReVanced",
|
||||
"updateChangelogTitle": "Nhật ký thay đổi",
|
||||
"updateDialogText": "Có một bản cập nhật cho ${file}.\n\nPhiên bản đã cài hiện tại là ${version}.",
|
||||
"updateDialogText": "${file} đã có bản cập nhật mới.\n\nBạn đang dùng phiên bản ${version}.",
|
||||
"downloadConsentDialogTitle": "Tải các tập tin cần thiết?",
|
||||
"downloadConsentDialogText": "ReVanced Manager cần tải các tập tin cần thiết để hoạt động đúng cách.",
|
||||
"downloadConsentDialogText2": "Điều này sẽ kết nối bạn đến ${url}.",
|
||||
@ -54,7 +54,7 @@
|
||||
"patcherView": {
|
||||
"widgetTitle": "Trình vá",
|
||||
"patchButton": "Vá",
|
||||
"incompatibleArchWarningDialogText": "Việc vá ứng dụng trên kiến trúc này hiện chưa được hỗ trợ và có thể thất bại. Bạn vẫn muốn tiếp tục?",
|
||||
"incompatibleArchWarningDialogText": "Việc vá trên kiến trúc này hiện chưa được hỗ trợ và có thể không thành công. Vẫn tiếp tục dù sao?",
|
||||
"removedPatchesWarningDialogText": "Các bản vá đã loại bỏ từ lần cuối cùng bạn vá ứng dụng này:\n\n${patches}\n\n${newPatches}Vẫn tiếp tục?",
|
||||
"addedPatchesDialogText": "Các bản vá đã thêm vào từ lần cuối cùng bạn vá ứng dụng này:\n\n${addedPatches}",
|
||||
"requiredOptionDialogText": "Một số tùy chọn bản vá cần được thiết đặt."
|
||||
@ -83,9 +83,9 @@
|
||||
"selectFromStorageButton": "Chọn từ bộ nhớ",
|
||||
"errorMessage": "Không thể dùng ứng dụng đã chọn",
|
||||
"downloadToast": "Tính năng tải về chưa khả dụng",
|
||||
"requireSuggestedAppVersionDialogText": "Phiên bản của ứng dụng bạn đã chọn không trùng khớp vói phiên bản được đề xuất có thể dẫn đến các phát sinh không mong muốn. Xin chọn ứng dụng khớp với phiên bản được đề xuất.\n\nPhiên bản đã chọn: ${selected}\nPhiên bản được đề xuất: ${suggested}\n\nĐể tiếp tục, tắt \"Yêu cầu phiên bản ứng dụng được đề xuất\" trong cài đặt.",
|
||||
"requireSuggestedAppVersionDialogText": "Phiên bản của ứng dụng bạn đã chọn không khớp với phiên bản được đề xuất có thể dẫn đến các sự cố không mong muốn. Vui lòng sử dụng phiên bản đề xuất.\n\nPhiên bản đã chọn: ${selected}\nPhiên bản được đề xuất: ${suggested}\n\nĐể tiếp tục, hãy tắt \"Yêu cầu phiên bản ứng dụng được đề xuất\" trong cài đặt.",
|
||||
"featureNotAvailable": "Tính năng chưa triển khai",
|
||||
"featureNotAvailableText": "Ứng dụng này là một APK tách rời và chỉ có thể được vá và cài một cách tin cậy bằng cách gắn kết với quyền root. Tuy nhiên, bạn có thể vá và cài APK đầy đủ bằng cách chọn chúng từ lưu trữ."
|
||||
"featureNotAvailableText": "Ứng dụng này là một APK tách rời và chỉ có thể được vá và cài đặt một cách tin cậy bằng cách gắn kết với quyền root. Tuy nhiên, bạn có thể vá và cài đặt APK đầy đủ bằng cách chọn chúng từ kho lưu trữ."
|
||||
},
|
||||
"patchesSelectorView": {
|
||||
"viewTitle": "Chọn bản vá",
|
||||
@ -99,7 +99,7 @@
|
||||
"noneChip": "Không có",
|
||||
"noneTooltip": "Bỏ chọn tất cả bản vá",
|
||||
"loadPatchesSelection": "Nạp các bản vá được chọn",
|
||||
"noSavedPatches": "Không có bản vá cho ứng dụng được chọn\nNhấn Hoàn tất để lưu lựa chọn hiện tại.",
|
||||
"noSavedPatches": "Không có bản vá nào được lưu cho ứng dụng đã chọn.\nNhấn Hoàn tất để lưu lựa chọn hiện tại.",
|
||||
"noPatchesFound": "Không tìm thấy bản vá cho ứng dụng đã chọn",
|
||||
"setRequiredOption": "Một số bản vá yêu cầu thiết đặt tùy chọn:\n\n${patches}\n\nXin thiết đặt chúng trước khi tiếp tục."
|
||||
},
|
||||
@ -121,12 +121,12 @@
|
||||
"unsupportedDialogText": "Chọn bản vá này có thể gây lỗi khi vá.\n\nPhiên bản ứng dụng: ${packageVersion}\nPhiên bản được hỗ trợ: ${supportedVersions}",
|
||||
"unsupportedPatchVersion": "Bản vá không được hỗ trợ cho phiên bản ứng dụng này.",
|
||||
"unsupportedRequiredOption": "Bản vá này chứa một tùy chọn bắt buộc không được hỗ trợ bởi ứng dụng này",
|
||||
"patchesChangeWarningDialogText": "Bạn nên sử dụng lựa chọn bản vá mặc định và các tùy chọn. Thay đổi chúng có thể dẫn đến các vấn đề không mong muốn.\n\nBạn cần bật \"Cho phép thay đổi lựa chọn đường dẫn\" trong cài đặt trước khi thay đổi bất kỳ lựa chọn đường dẫn nào.",
|
||||
"patchesChangeWarningDialogText": "Nên sử dụng các tùy chọn và lựa chọn bản vá mặc định. Thay đổi chúng có thể dẫn đến các sự cố không mong muốn.\n\nBạn cần bật \"Cho phép thay đổi lựa chọn bản vá\" trong cài đặt trước khi thay đổi bất kỳ lựa chọn bản vá nào.",
|
||||
"patchesChangeWarningDialogButton": "Dùng lựa chọn mặc định"
|
||||
},
|
||||
"installerView": {
|
||||
"installType": "Chọn kiểu cài đặt",
|
||||
"installTypeDescription": "Chọn kiểu cài đặt để thực hiện với nó.",
|
||||
"installTypeDescription": "Chọn kiểu cài đặt để tiếp tục.",
|
||||
"installButton": "Cài đặt",
|
||||
"installRootType": "Gắn kết",
|
||||
"installNonRootType": "Thông thường",
|
||||
@ -137,8 +137,8 @@
|
||||
"notificationText": "Nhấn để trở lại trình cài đặt",
|
||||
"exportApkButtonTooltip": "Xuất APK đã vá",
|
||||
"exportLogButtonTooltip": "Xuất nhật ký",
|
||||
"screenshotDetected": "Một ảnh chụp màn hình đã được phát hiện. Nếu bạn đang cố chia sẻ nhật ký, xin thay bằng chia sẻ văn bản sao chép.\n\nSao chép nhật ký vào bảng tạm?",
|
||||
"copiedToClipboard": "Đã sao chép nhật ký vào bảng tạm",
|
||||
"screenshotDetected": "Đã phát hiện ảnh chụp màn hình. Nếu bạn đang cố chia sẻ nhật ký, vui lòng thay thế bằng chia sẻ văn bản sao chép.\n\nSao chép nhật ký vào bảng nhớ tạm?",
|
||||
"copiedToClipboard": "Đã sao chép nhật ký vào bảng nhớ tạm",
|
||||
"noExit": "Trình cài đặt vẫn đang chạy, không thể thoát..."
|
||||
},
|
||||
"settingsView": {
|
||||
@ -152,15 +152,15 @@
|
||||
"themeModeLabel": "Chủ đề ứng dụng",
|
||||
"systemThemeLabel": "Hệ thống",
|
||||
"lightThemeLabel": "Sáng",
|
||||
"darkThemeLabel": "Chế độ tối",
|
||||
"darkThemeLabel": "Tối",
|
||||
"dynamicThemeLabel": "Cá nhân",
|
||||
"dynamicThemeHint": "Tận hưởng trải nghiệm gần hơn với thiết bị của bạn",
|
||||
"languageLabel": "Ngôn ngữ",
|
||||
"languageUpdated": "Ngôn ngữ đã cập nhập",
|
||||
"languageUpdated": "Ngôn ngữ đã được cập nhập",
|
||||
"sourcesLabel": "Nguồn thay thế",
|
||||
"sourcesLabelHint": "Cấu hình nguồn thay thế cho Bản vá ReVanced",
|
||||
"sourcesLabelHint": "Cấu hình nguồn thay thế cho ReVanced Patches",
|
||||
"useAlternativeSources": "Dùng nguồn thay thế",
|
||||
"useAlternativeSourcesHint": "Dùng nguồn thay thế cho Bản vá ReVanced thay cho API",
|
||||
"useAlternativeSourcesHint": "Dùng nguồn thay thế cho ReVanced Patches thay vì dùng API",
|
||||
"sourcesResetDialogTitle": "Đặt lại",
|
||||
"sourcesResetDialogText": "Bạn có chắc chắn muốn đặt lại nguồn của mình về giá trị mặc định không?",
|
||||
"apiURLResetDialogText": "Bạn có chắc bạn muốn đặt lại API URL của bạn về giá trị mặc định của nó không?",
|
||||
@ -175,11 +175,13 @@
|
||||
"logsLabel": "Chia sẻ nhật ký",
|
||||
"logsHint": "Chia sẻ nhật ký ReVanced Manager",
|
||||
"enablePatchesSelectionLabel": "Cho phép thay đổi lựa chọn bản vá",
|
||||
"enablePatchesSelectionHint": "Không ngăn chặn việc chọn hoặc bỏ chọn các bản vá",
|
||||
"enablePatchesSelectionWarningText": "Thay đổi lựa chọn mặc định của các bản vá có thể gây vấn đề không ngờ tới.\n\nVẫn bật?",
|
||||
"enablePatchesSelectionHint": "Không ngăn chặn chọn hoặc bỏ chọn các bản vá",
|
||||
"enablePatchesSelectionWarningText": "Thay đổi lựa chọn mặc định của các bản vá có thể gây ra các sự cố không mong muốn.\n\nVẫn tiếp tục bật?",
|
||||
"disablePatchesSelectionWarningText": "Bạn chuẩn bị tắt thay đổi lựa chọn các bản vá.\nLựa chọn mặc định các bản vá sẽ được khôi phục.\n\nVẫn tắt?",
|
||||
"autoUpdatePatchesLabel": "Tự động cập nhật các bản vá",
|
||||
"autoUpdatePatchesHint": "Tự động cập nhật các bản vá lên phiên bản mới nhất",
|
||||
"usePrereleasesLabel": "Sử dụng bản phát hành trước",
|
||||
"usePrereleasesWarningText": "Sử dụng các phiên bản phát hành trước có thể gây ra các sự cố không mong muốn.\n\nVẫn tiếp tục bật?",
|
||||
"showUpdateDialogLabel": "Hiện hộp thoại cập nhật",
|
||||
"showUpdateDialogHint": "Hiện một hộp thoại khi có một bản cập nhật",
|
||||
"universalPatchesLabel": "Các bản vá phổ quát",
|
||||
@ -290,8 +292,8 @@
|
||||
"status_failure_invalid_description": "Việc cài đặt đã thất bại do ứng dụng đã vá không hợp lệ.\n\nGỡ cài đặt ứng dụng và thử lại?",
|
||||
"status_failure_incompatible_description": "Ứng dụng không tương thích với thiết bị này.\n\nDùng một APK được hỗ trợ bởi thiết bị và thử lại.",
|
||||
"status_failure_conflict_description": "Việc cài đặt đã bị ngăn chặn bởi bản cài đã có của ứng dụng.\n\nGỡ cài đặt ứng dụng đã cài và thử lại?",
|
||||
"status_failure_blocked_description": "Việc cài đặt đã đã bị chặn bởi ${packageName}.\n\nĐiều chỉnh thiết lập bảo mật của bạn và thử lại.",
|
||||
"install_failed_verification_failure_description": "Việc cài đặt đã thất bại do phát sinh xác minh.\n\nĐiều chỉnh thiết lập bảo mật của bạn và thử lại.",
|
||||
"status_failure_blocked_description": "Quá trình cài đặt đã bị chặn bởi ${packageName}.\n\nĐiều chỉnh cài đặt bảo mật của bạn và thử lại.",
|
||||
"install_failed_verification_failure_description": "Quá trình cài đặt không thành công do gặp lỗi xác minh.\n\nĐiều chỉnh cài đặt bảo mật của bạn và thử lại.",
|
||||
"install_failed_version_downgrade_description": "Việc cài đặt đã thất bại do ứng dụng đã vá có phiên bản nhỏ hơn ứng dụng đã cài đặt.\n\nGỡ cài đặt ứng dụng và thử lại?",
|
||||
"status_unknown_description": "Việc cài đặt đã thất bại do một lý do chưa rõ. Xin thử lại."
|
||||
}
|
||||
|
@ -27,7 +27,7 @@
|
||||
"patchedSubtitle": "已安裝應用程式",
|
||||
"changeLaterSubtitle": "你稍後可以在設定中變更此選項。",
|
||||
"noSavedAppFound": "找不到應用程式",
|
||||
"noInstallations": "未安裝已修補的應用程式",
|
||||
"noInstallations": "未安裝已修補應用程式",
|
||||
"installUpdate": "是否要繼續更新?",
|
||||
"updateSheetTitle": "更新 ReVanced Manager",
|
||||
"updateDialogTitle": "有可用的更新",
|
||||
@ -99,7 +99,7 @@
|
||||
"noneChip": "無",
|
||||
"noneTooltip": "取消選取修補檔",
|
||||
"loadPatchesSelection": "載入修補檔選項",
|
||||
"noSavedPatches": "所選的應用程式沒有已儲存的修補選項。\n按下「完成」以儲存目前的選擇。",
|
||||
"noSavedPatches": "所選的應用程式沒有已儲存的修補選項。\n按下「完成」以儲存目前的修補選項。",
|
||||
"noPatchesFound": "找不到適合所選應用程式的修補檔",
|
||||
"setRequiredOption": "某些修補檔選項需要進行設定:\n\n${patches}\n\n請在繼續之前進行設定。"
|
||||
},
|
||||
|
@ -33,13 +33,16 @@ class GithubAPI {
|
||||
});
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>?> getLatestRelease(
|
||||
String repoName,
|
||||
) async {
|
||||
Future<Map<String, dynamic>?> getLatestRelease(String repoName) async {
|
||||
final String target =
|
||||
_managerAPI.usePrereleases() ? '?per_page=1' : '/latest';
|
||||
try {
|
||||
final response = await _dioGetSynchronously(
|
||||
'/repos/$repoName/releases/latest',
|
||||
'/repos/$repoName/releases$target',
|
||||
);
|
||||
if (_managerAPI.usePrereleases()) {
|
||||
return response.data.first;
|
||||
}
|
||||
return response.data;
|
||||
} on Exception catch (e) {
|
||||
if (kDebugMode) {
|
||||
@ -50,7 +53,8 @@ class GithubAPI {
|
||||
}
|
||||
|
||||
Future<String?> getChangelogs(bool isPatches) async {
|
||||
final String repoName = isPatches
|
||||
final String repoName =
|
||||
isPatches
|
||||
? _managerAPI.getPatchesRepo()
|
||||
: _managerAPI.defaultManagerRepo;
|
||||
try {
|
||||
@ -58,7 +62,8 @@ class GithubAPI {
|
||||
'/repos/$repoName/releases?per_page=50',
|
||||
);
|
||||
final buffer = StringBuffer();
|
||||
final String version = isPatches
|
||||
final String version =
|
||||
isPatches
|
||||
? _managerAPI.getLastUsedPatchesVersion()
|
||||
: await _managerAPI.getCurrentManagerVersion();
|
||||
int releases = 0;
|
||||
@ -70,7 +75,7 @@ class GithubAPI {
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (release['prerelease']) {
|
||||
if (!_managerAPI.usePrereleases() && release['prerelease']) {
|
||||
continue;
|
||||
}
|
||||
buffer.writeln(release['body']);
|
||||
@ -96,25 +101,21 @@ class GithubAPI {
|
||||
) async {
|
||||
try {
|
||||
if (url.isNotEmpty) {
|
||||
return await _downloadManager.getSingleFile(
|
||||
url,
|
||||
);
|
||||
return await _downloadManager.getSingleFile(url);
|
||||
}
|
||||
final response = await _dioGetSynchronously(
|
||||
'/repos/$repoName/releases/tags/$version',
|
||||
);
|
||||
final Map<String, dynamic>? release = response.data;
|
||||
if (release != null) {
|
||||
final Map<String, dynamic>? asset =
|
||||
(release['assets'] as List<dynamic>).firstWhereOrNull(
|
||||
final Map<String, dynamic>? asset = (release['assets'] as List<dynamic>)
|
||||
.firstWhereOrNull(
|
||||
(asset) => (asset['name'] as String).endsWith(extension),
|
||||
);
|
||||
if (asset != null) {
|
||||
final String downloadUrl = asset['browser_download_url'];
|
||||
_managerAPI.setPatchesDownloadURL(downloadUrl);
|
||||
return await _downloadManager.getSingleFile(
|
||||
downloadUrl,
|
||||
);
|
||||
return await _downloadManager.getSingleFile(downloadUrl);
|
||||
}
|
||||
}
|
||||
} on Exception catch (e) {
|
||||
|
@ -36,7 +36,6 @@ class ManagerAPI {
|
||||
Patch? selectedPatch;
|
||||
BuildContext? ctx;
|
||||
bool isRooted = false;
|
||||
bool releaseBuild = false;
|
||||
bool suggestedAppVersionSelected = true;
|
||||
bool isDynamicThemeAvailable = false;
|
||||
bool isScopedStorageAvailable = false;
|
||||
@ -63,11 +62,9 @@ class ManagerAPI {
|
||||
isScopedStorageAvailable = sdkVersion >= 30; // ANDROID_11_SDK_VERSION = 30
|
||||
storedPatchesFile =
|
||||
(await getApplicationDocumentsDirectory()).path + storedPatchesFile;
|
||||
if (kReleaseMode) {
|
||||
releaseBuild = !(await getCurrentManagerVersion()).contains('-dev');
|
||||
}
|
||||
|
||||
final hasMigratedToNewMigrationSystem = _prefs.getBool('migratedToNewApiPrefSystem') ?? false;
|
||||
final hasMigratedToNewMigrationSystem =
|
||||
_prefs.getBool('migratedToNewApiPrefSystem') ?? false;
|
||||
if (!hasMigratedToNewMigrationSystem) {
|
||||
final apiUrl = getApiUrl().toLowerCase();
|
||||
|
||||
@ -168,6 +165,18 @@ class ManagerAPI {
|
||||
return _prefs.getBool('patchesAutoUpdate') ?? false;
|
||||
}
|
||||
|
||||
bool usePrereleases() {
|
||||
return _prefs.getBool('usePrereleases') ?? false;
|
||||
}
|
||||
|
||||
void setPrereleases(bool value) {
|
||||
_prefs.setBool('usePrereleases', value);
|
||||
if (isPatchesAutoUpdate()) {
|
||||
setCurrentPatchesVersion('0.0.0');
|
||||
_toast.showBottom(t.settingsView.restartAppForChanges);
|
||||
}
|
||||
}
|
||||
|
||||
bool isPatchesChangeEnabled() {
|
||||
return _prefs.getBool('patchesChangeEnabled') ?? false;
|
||||
}
|
||||
@ -207,14 +216,16 @@ class ManagerAPI {
|
||||
List<Patch> getSavedPatches(String packageName) {
|
||||
final List<String> patchesJson =
|
||||
_prefs.getStringList('savedPatches-$packageName') ?? [];
|
||||
final List<Patch> patches = patchesJson.map((String patchJson) {
|
||||
final List<Patch> patches =
|
||||
patchesJson.map((String patchJson) {
|
||||
return Patch.fromJson(jsonDecode(patchJson));
|
||||
}).toList();
|
||||
return patches;
|
||||
}
|
||||
|
||||
Future<void> savePatches(List<Patch> patches, String packageName) async {
|
||||
final List<String> patchesJson = patches.map((Patch patch) {
|
||||
final List<String> patchesJson =
|
||||
patches.map((Patch patch) {
|
||||
return jsonEncode(patch.toJson());
|
||||
}).toList();
|
||||
await _prefs.setStringList('savedPatches-$packageName', patchesJson);
|
||||
@ -223,14 +234,16 @@ class ManagerAPI {
|
||||
List<Patch> getUsedPatches(String packageName) {
|
||||
final List<String> patchesJson =
|
||||
_prefs.getStringList('usedPatches-$packageName') ?? [];
|
||||
final List<Patch> patches = patchesJson.map((String patchJson) {
|
||||
final List<Patch> patches =
|
||||
patchesJson.map((String patchJson) {
|
||||
return Patch.fromJson(jsonDecode(patchJson));
|
||||
}).toList();
|
||||
return patches;
|
||||
}
|
||||
|
||||
Future<void> setUsedPatches(List<Patch> patches, String packageName) async {
|
||||
final List<String> patchesJson = patches.map((Patch patch) {
|
||||
final List<String> patchesJson =
|
||||
patches.map((Patch patch) {
|
||||
return jsonEncode(patch.toJson());
|
||||
}).toList();
|
||||
await _prefs.setStringList('usedPatches-$packageName', patchesJson);
|
||||
@ -246,8 +259,9 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
Option? getPatchOption(String packageName, String patchName, String key) {
|
||||
final String? optionJson =
|
||||
_prefs.getString('patchOption-$packageName-$patchName-$key');
|
||||
final String? optionJson = _prefs.getString(
|
||||
'patchOption-$packageName-$patchName-$key',
|
||||
);
|
||||
if (optionJson != null) {
|
||||
final Option option = Option.fromJson(jsonDecode(optionJson));
|
||||
return option;
|
||||
@ -325,13 +339,7 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
String getLocale() {
|
||||
final String? savedLocale = _prefs.getString('locale');
|
||||
if (savedLocale != null && savedLocale.isNotEmpty) {
|
||||
return savedLocale;
|
||||
} else {
|
||||
final Locale deviceLocale = PlatformDispatcher.instance.locale;
|
||||
return deviceLocale.languageCode.isNotEmpty ? deviceLocale.languageCode : 'en';
|
||||
}
|
||||
return _prefs.getString('locale') ?? Platform.localeName;
|
||||
}
|
||||
|
||||
Future<void> setLocale(String value) async {
|
||||
@ -346,9 +354,7 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
Future<void> deleteKeystore() async {
|
||||
final File keystore = File(
|
||||
keystoreFile,
|
||||
);
|
||||
final File keystore = File(keystoreFile);
|
||||
if (await keystore.exists()) {
|
||||
await keystore.delete();
|
||||
}
|
||||
@ -370,17 +376,13 @@ class ManagerAPI {
|
||||
|
||||
Future<void> setLastPatchedApp(
|
||||
PatchedApplication app,
|
||||
File outFile,
|
||||
File outFile
|
||||
) async {
|
||||
deleteLastPatchedApp();
|
||||
final Directory appCache = await getApplicationSupportDirectory();
|
||||
app.patchedFilePath =
|
||||
outFile.copySync('${appCache.path}/lastPatchedApp.apk').path;
|
||||
app.fileSize = outFile.lengthSync();
|
||||
await _prefs.setString(
|
||||
'lastPatchedApp',
|
||||
json.encode(app.toJson()),
|
||||
);
|
||||
await _prefs.setString('lastPatchedApp', json.encode(app.toJson()));
|
||||
}
|
||||
|
||||
List<PatchedApplication> getPatchedApps() {
|
||||
@ -388,9 +390,7 @@ class ManagerAPI {
|
||||
return apps.map((a) => PatchedApplication.fromJson(jsonDecode(a))).toList();
|
||||
}
|
||||
|
||||
Future<void> setPatchedApps(
|
||||
List<PatchedApplication> patchedApps,
|
||||
) async {
|
||||
Future<void> setPatchedApps(List<PatchedApplication> patchedApps) async {
|
||||
if (patchedApps.length > 1) {
|
||||
patchedApps.sort((a, b) => a.name.compareTo(b.name));
|
||||
}
|
||||
@ -403,10 +403,8 @@ class ManagerAPI {
|
||||
Future<void> savePatchedApp(PatchedApplication app) async {
|
||||
final List<PatchedApplication> patchedApps = getPatchedApps();
|
||||
patchedApps.removeWhere((a) => a.packageName == app.packageName);
|
||||
final ApplicationWithIcon? installed = await DeviceApps.getApp(
|
||||
app.packageName,
|
||||
true,
|
||||
) as ApplicationWithIcon?;
|
||||
final ApplicationWithIcon? installed =
|
||||
await DeviceApps.getApp(app.packageName, true) as ApplicationWithIcon?;
|
||||
if (installed != null) {
|
||||
app.name = installed.appName;
|
||||
app.version = installed.versionName!;
|
||||
@ -446,12 +444,11 @@ class ManagerAPI {
|
||||
try {
|
||||
final String patchesJson = await PatcherAPI.patcherChannel.invokeMethod(
|
||||
'getPatches',
|
||||
{
|
||||
'patchBundleFilePath': patchBundleFile.path,
|
||||
},
|
||||
{'patchBundleFilePath': patchBundleFile.path},
|
||||
);
|
||||
final List<dynamic> patchesJsonList = jsonDecode(patchesJson);
|
||||
patches = patchesJsonList
|
||||
patches =
|
||||
patchesJsonList
|
||||
.map((patchJson) => Patch.fromJson(patchJson))
|
||||
.toList();
|
||||
return patches;
|
||||
@ -498,8 +495,9 @@ class ManagerAPI {
|
||||
} else {
|
||||
final release = await _githubAPI.getLatestRelease(getPatchesRepo());
|
||||
if (release != null) {
|
||||
final DateTime timestamp =
|
||||
DateTime.parse(release['created_at'] as String);
|
||||
final DateTime timestamp = DateTime.parse(
|
||||
release['created_at'] as String,
|
||||
);
|
||||
return format(timestamp, locale: 'en_short');
|
||||
} else {
|
||||
return null;
|
||||
@ -508,22 +506,16 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
Future<String?> getLatestManagerReleaseTime() async {
|
||||
return await _revancedAPI.getLatestReleaseTime(
|
||||
'manager',
|
||||
);
|
||||
return await _revancedAPI.getLatestReleaseTime('manager');
|
||||
}
|
||||
|
||||
Future<String?> getLatestManagerVersion() async {
|
||||
return await _revancedAPI.getLatestReleaseVersion(
|
||||
'manager',
|
||||
);
|
||||
return await _revancedAPI.getLatestReleaseVersion('manager');
|
||||
}
|
||||
|
||||
Future<String?> getLatestPatchesVersion() async {
|
||||
if (!isUsingAlternativeSources()) {
|
||||
return await _revancedAPI.getLatestReleaseVersion(
|
||||
'patches',
|
||||
);
|
||||
return await _revancedAPI.getLatestReleaseVersion('patches');
|
||||
} else {
|
||||
final release = await _githubAPI.getLatestRelease(getPatchesRepo());
|
||||
if (release != null) {
|
||||
@ -537,8 +529,9 @@ class ManagerAPI {
|
||||
String getLastUsedPatchesVersion() {
|
||||
final String lastPatchesVersions =
|
||||
_prefs.getString('lastUsedPatchesVersion') ?? '{}';
|
||||
final Map<String, dynamic> lastPatchesVersionMap =
|
||||
jsonDecode(lastPatchesVersions);
|
||||
final Map<String, dynamic> lastPatchesVersionMap = jsonDecode(
|
||||
lastPatchesVersions,
|
||||
);
|
||||
final String repo = getPatchesRepo();
|
||||
return lastPatchesVersionMap[repo] ?? '0.0.0';
|
||||
}
|
||||
@ -546,8 +539,9 @@ class ManagerAPI {
|
||||
void setLastUsedPatchesVersion({String? version}) {
|
||||
final String lastPatchesVersions =
|
||||
_prefs.getString('lastUsedPatchesVersion') ?? '{}';
|
||||
final Map<String, dynamic> lastPatchesVersionMap =
|
||||
jsonDecode(lastPatchesVersions);
|
||||
final Map<String, dynamic> lastPatchesVersionMap = jsonDecode(
|
||||
lastPatchesVersions,
|
||||
);
|
||||
final repo = getPatchesRepo();
|
||||
final String lastPatchesVersion =
|
||||
version ?? lastPatchesVersionMap[repo] ?? '0.0.0';
|
||||
@ -604,10 +598,8 @@ class ManagerAPI {
|
||||
if (hasRootPermissions) {
|
||||
final List<String> installedApps = await _rootAPI.getInstalledApps();
|
||||
for (final String packageName in installedApps) {
|
||||
final ApplicationWithIcon? application = await DeviceApps.getApp(
|
||||
packageName,
|
||||
true,
|
||||
) as ApplicationWithIcon?;
|
||||
final ApplicationWithIcon? application =
|
||||
await DeviceApps.getApp(packageName, true) as ApplicationWithIcon?;
|
||||
if (application != null) {
|
||||
mountedApps.add(
|
||||
PatchedApplication(
|
||||
@ -628,12 +620,14 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
Future<void> showPatchesChangeWarningDialog(BuildContext context) {
|
||||
final ValueNotifier<bool> noShow =
|
||||
ValueNotifier(!showPatchesChangeWarning());
|
||||
final ValueNotifier<bool> noShow = ValueNotifier(
|
||||
!showPatchesChangeWarning(),
|
||||
);
|
||||
return showDialog(
|
||||
barrierDismissible: false,
|
||||
context: context,
|
||||
builder: (context) => PopScope(
|
||||
builder:
|
||||
(context) => PopScope(
|
||||
canPop: false,
|
||||
child: AlertDialog(
|
||||
title: Text(t.warning),
|
||||
@ -655,9 +649,7 @@ class ManagerAPI {
|
||||
HapticCheckboxListTile(
|
||||
value: value,
|
||||
contentPadding: EdgeInsets.zero,
|
||||
title: Text(
|
||||
t.noShowAgain,
|
||||
),
|
||||
title: Text(t.noShowAgain),
|
||||
onChanged: (selected) {
|
||||
noShow.value = selected!;
|
||||
},
|
||||
@ -684,29 +676,21 @@ class ManagerAPI {
|
||||
final List<PatchedApplication> patchedApps = getPatchedApps();
|
||||
|
||||
// Remove apps that are not installed anymore.
|
||||
final List<PatchedApplication> toRemove =
|
||||
await getAppsToRemove(patchedApps);
|
||||
final List<PatchedApplication> toRemove = await getAppsToRemove(
|
||||
patchedApps,
|
||||
);
|
||||
patchedApps.removeWhere((a) => toRemove.contains(a));
|
||||
|
||||
// Determine all apps that are installed by mounting.
|
||||
final List<PatchedApplication> mountedApps = await getMountedApps();
|
||||
mountedApps.removeWhere(
|
||||
(app) => patchedApps
|
||||
.any((patchedApp) => patchedApp.packageName == app.packageName),
|
||||
(app) => patchedApps.any(
|
||||
(patchedApp) => patchedApp.packageName == app.packageName,
|
||||
),
|
||||
);
|
||||
patchedApps.addAll(mountedApps);
|
||||
|
||||
await setPatchedApps(patchedApps);
|
||||
|
||||
// Delete the saved app if the file is not found.
|
||||
final PatchedApplication? lastPatchedApp = getLastPatchedApp();
|
||||
if (lastPatchedApp != null) {
|
||||
final File file = File(lastPatchedApp.patchedFilePath);
|
||||
if (!file.existsSync()) {
|
||||
deleteLastPatchedApp();
|
||||
_prefs.remove('lastPatchedApp');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Future<bool> isAppUninstalled(PatchedApplication app) async {
|
||||
@ -732,10 +716,7 @@ class ManagerAPI {
|
||||
return app != null && app.isSplit;
|
||||
}
|
||||
|
||||
Future<void> setSelectedPatches(
|
||||
String app,
|
||||
List<String> patches,
|
||||
) async {
|
||||
Future<void> setSelectedPatches(String app, List<String> patches) async {
|
||||
final File selectedPatchesFile = File(storedPatchesFile);
|
||||
final Map<String, dynamic> patchesMap = await readSelectedPatchesFile();
|
||||
if (patches.isEmpty) {
|
||||
@ -818,11 +799,11 @@ class ManagerAPI {
|
||||
}
|
||||
|
||||
void resetAllOptions() {
|
||||
_prefs.getKeys().where((key) => key.startsWith('patchOption-')).forEach(
|
||||
(key) {
|
||||
_prefs.getKeys().where((key) => key.startsWith('patchOption-')).forEach((
|
||||
key,
|
||||
) {
|
||||
_prefs.remove(key);
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> resetLastSelectedPatches() async {
|
||||
|
@ -14,6 +14,7 @@ import 'package:timeago/timeago.dart';
|
||||
class RevancedAPI {
|
||||
late final Dio _dio;
|
||||
late final DownloadManager _downloadManager = locator<DownloadManager>();
|
||||
late final ManagerAPI _managerAPI = locator<ManagerAPI>();
|
||||
|
||||
final Lock getToolsLock = Lock();
|
||||
|
||||
@ -43,15 +44,15 @@ class RevancedAPI {
|
||||
return contributors;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>?> _getLatestRelease(
|
||||
String toolName,
|
||||
) {
|
||||
Future<Map<String, dynamic>?> _getLatestRelease(String toolName) {
|
||||
if (!locator<ManagerAPI>().getDownloadConsent()) {
|
||||
return Future(() => null);
|
||||
}
|
||||
return getToolsLock.synchronized(() async {
|
||||
try {
|
||||
final response = await _dio.get('/$toolName');
|
||||
final response = await _dio.get(
|
||||
'/$toolName?prerelease=${_managerAPI.usePrereleases()}',
|
||||
);
|
||||
return response.data;
|
||||
} on Exception catch (e) {
|
||||
if (kDebugMode) {
|
||||
@ -62,13 +63,9 @@ class RevancedAPI {
|
||||
});
|
||||
}
|
||||
|
||||
Future<String?> getLatestReleaseVersion(
|
||||
String toolName,
|
||||
) async {
|
||||
Future<String?> getLatestReleaseVersion(String toolName) async {
|
||||
try {
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(
|
||||
toolName,
|
||||
);
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(toolName);
|
||||
if (release != null) {
|
||||
return release['version'];
|
||||
}
|
||||
@ -81,13 +78,9 @@ class RevancedAPI {
|
||||
return null;
|
||||
}
|
||||
|
||||
Future<File?> getLatestReleaseFile(
|
||||
String toolName,
|
||||
) async {
|
||||
Future<File?> getLatestReleaseFile(String toolName) async {
|
||||
try {
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(
|
||||
toolName,
|
||||
);
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(toolName);
|
||||
if (release != null) {
|
||||
final String url = release['download_url'];
|
||||
return await _downloadManager.getSingleFile(url);
|
||||
@ -136,16 +129,13 @@ class RevancedAPI {
|
||||
return outputFile;
|
||||
}
|
||||
|
||||
Future<String?> getLatestReleaseTime(
|
||||
String toolName,
|
||||
) async {
|
||||
Future<String?> getLatestReleaseTime(String toolName) async {
|
||||
try {
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(
|
||||
toolName,
|
||||
);
|
||||
final Map<String, dynamic>? release = await _getLatestRelease(toolName);
|
||||
if (release != null) {
|
||||
final DateTime timestamp =
|
||||
DateTime.parse(release['created_at'] as String);
|
||||
final DateTime timestamp = DateTime.parse(
|
||||
release['created_at'] as String,
|
||||
);
|
||||
return format(timestamp, locale: 'en_short');
|
||||
}
|
||||
} on Exception catch (e) {
|
||||
|
@ -82,10 +82,13 @@ class HomeViewModel extends BaseViewModel {
|
||||
);
|
||||
flutterLocalNotificationsPlugin
|
||||
.resolvePlatformSpecificImplementation<
|
||||
AndroidFlutterLocalNotificationsPlugin>()
|
||||
AndroidFlutterLocalNotificationsPlugin
|
||||
>()
|
||||
?.requestNotificationsPermission();
|
||||
final bool isConnected = !(await Connectivity().checkConnectivity())
|
||||
.contains(ConnectivityResult.none);
|
||||
final bool isConnected =
|
||||
!(await Connectivity().checkConnectivity()).contains(
|
||||
ConnectivityResult.none,
|
||||
);
|
||||
if (!isConnected) {
|
||||
_toast.showBottom(t.homeView.noConnection);
|
||||
}
|
||||
@ -106,8 +109,10 @@ class HomeViewModel extends BaseViewModel {
|
||||
void navigateToAppInfo(PatchedApplication app, bool isLastPatchedApp) {
|
||||
_navigationService.navigateTo(
|
||||
Routes.appInfoView,
|
||||
arguments:
|
||||
AppInfoViewArguments(app: app, isLastPatchedApp: isLastPatchedApp),
|
||||
arguments: AppInfoViewArguments(
|
||||
app: app,
|
||||
isLastPatchedApp: isLastPatchedApp,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@ -118,8 +123,8 @@ class HomeViewModel extends BaseViewModel {
|
||||
|
||||
Future<void> navigateToPatcher(PatchedApplication app) async {
|
||||
locator<PatcherViewModel>().selectedApp = app;
|
||||
locator<PatcherViewModel>().selectedPatches =
|
||||
await _patcherAPI.getAppliedPatches(app.appliedPatches);
|
||||
locator<PatcherViewModel>().selectedPatches = await _patcherAPI
|
||||
.getAppliedPatches(app.appliedPatches);
|
||||
locator<PatcherViewModel>().notifyListeners();
|
||||
locator<NavigationViewModel>().setIndex(1);
|
||||
}
|
||||
@ -135,9 +140,6 @@ class HomeViewModel extends BaseViewModel {
|
||||
}
|
||||
|
||||
Future<bool> hasManagerUpdates() async {
|
||||
if (!_managerAPI.releaseBuild) {
|
||||
return false;
|
||||
}
|
||||
latestManagerVersion =
|
||||
await _managerAPI.getLatestManagerVersion() ?? _currentManagerVersion;
|
||||
|
||||
@ -151,10 +153,12 @@ class HomeViewModel extends BaseViewModel {
|
||||
latestPatchesVersion = await _managerAPI.getLatestPatchesVersion();
|
||||
if (latestPatchesVersion != null) {
|
||||
try {
|
||||
final int latestVersionInt =
|
||||
int.parse(latestPatchesVersion!.replaceAll(RegExp('[^0-9]'), ''));
|
||||
final int currentVersionInt =
|
||||
int.parse(_currentPatchesVersion.replaceAll(RegExp('[^0-9]'), ''));
|
||||
final int latestVersionInt = int.parse(
|
||||
latestPatchesVersion!.replaceAll(RegExp('[^0-9]'), ''),
|
||||
);
|
||||
final int currentVersionInt = int.parse(
|
||||
_currentPatchesVersion.replaceAll(RegExp('[^0-9]'), ''),
|
||||
);
|
||||
return latestVersionInt > currentVersionInt;
|
||||
} on Exception catch (e) {
|
||||
if (kDebugMode) {
|
||||
@ -187,7 +191,8 @@ class HomeViewModel extends BaseViewModel {
|
||||
await showDialog(
|
||||
context: context,
|
||||
barrierDismissible: false,
|
||||
builder: (context) => PopScope(
|
||||
builder:
|
||||
(context) => PopScope(
|
||||
canPop: false,
|
||||
child: AlertDialog(
|
||||
title: Text(t.homeView.downloadConsentDialogTitle),
|
||||
@ -246,11 +251,13 @@ class HomeViewModel extends BaseViewModel {
|
||||
}
|
||||
|
||||
void showUpdateDialog(BuildContext context, bool isPatches) {
|
||||
final ValueNotifier<bool> noShow =
|
||||
ValueNotifier(!_managerAPI.showUpdateDialog());
|
||||
final ValueNotifier<bool> noShow = ValueNotifier(
|
||||
!_managerAPI.showUpdateDialog(),
|
||||
);
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (innerContext) => AlertDialog(
|
||||
builder:
|
||||
(innerContext) => AlertDialog(
|
||||
title: Text(t.homeView.updateDialogTitle),
|
||||
content: ValueListenableBuilder(
|
||||
valueListenable: noShow,
|
||||
@ -261,8 +268,10 @@ class HomeViewModel extends BaseViewModel {
|
||||
children: [
|
||||
Text(
|
||||
t.homeView.updateDialogText(
|
||||
file: isPatches ? 'ReVanced Patches' : 'ReVanced Manager',
|
||||
version: isPatches
|
||||
file:
|
||||
isPatches ? 'ReVanced Patches' : 'ReVanced Manager',
|
||||
version:
|
||||
isPatches
|
||||
? _currentPatchesVersion
|
||||
: _currentManagerVersion,
|
||||
),
|
||||
@ -326,7 +335,8 @@ class HomeViewModel extends BaseViewModel {
|
||||
_toast.showBottom(t.homeView.downloadingMessage);
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) => ValueListenableBuilder(
|
||||
builder:
|
||||
(context) => ValueListenableBuilder(
|
||||
valueListenable: downloaded,
|
||||
builder: (context, value, child) {
|
||||
return AlertDialog(
|
||||
@ -468,7 +478,8 @@ class HomeViewModel extends BaseViewModel {
|
||||
shape: const RoundedRectangleBorder(
|
||||
borderRadius: BorderRadius.vertical(top: Radius.circular(24.0)),
|
||||
),
|
||||
builder: (context) => UpdateConfirmationSheet(
|
||||
builder:
|
||||
(context) => UpdateConfirmationSheet(
|
||||
isPatches: isPatches,
|
||||
changelog: changelog,
|
||||
),
|
||||
|
@ -125,7 +125,7 @@ class InstallerViewModel extends BaseViewModel {
|
||||
});
|
||||
await WakelockPlus.enable();
|
||||
await handlePlatformChannelMethods();
|
||||
await runPatcher(context);
|
||||
await runPatcher();
|
||||
}
|
||||
|
||||
Future<dynamic> handlePlatformChannelMethods() async {
|
||||
@ -164,6 +164,16 @@ class InstallerViewModel extends BaseViewModel {
|
||||
_managerAPI.setLastUsedPatchesVersion(
|
||||
version: _managerAPI.patchesVersion,
|
||||
);
|
||||
_app.appliedPatches = _patches.map((p) => p.name).toList();
|
||||
if (_managerAPI.isLastPatchedAppEnabled()) {
|
||||
await _managerAPI.setLastPatchedApp(_app, _patcherAPI.outFile!);
|
||||
} else {
|
||||
_app.patchedFilePath = _patcherAPI.outFile!.path;
|
||||
}
|
||||
final homeViewModel = locator<HomeViewModel>();
|
||||
_managerAPI
|
||||
.reAssessPatchedApps()
|
||||
.then((_) => homeViewModel.getPatchedApps());
|
||||
} else if (value == -100.0) {
|
||||
isPatching = false;
|
||||
hasErrors = true;
|
||||
@ -187,7 +197,7 @@ class InstallerViewModel extends BaseViewModel {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
Future<void> runPatcher(BuildContext context) async {
|
||||
Future<void> runPatcher() async {
|
||||
try {
|
||||
await _patcherAPI.runPatcher(
|
||||
_app.packageName,
|
||||
@ -195,16 +205,6 @@ class InstallerViewModel extends BaseViewModel {
|
||||
_patches,
|
||||
_app.isFromStorage,
|
||||
);
|
||||
_app.appliedPatches = _patches.map((p) => p.name).toList();
|
||||
if (_managerAPI.isLastPatchedAppEnabled()) {
|
||||
await _managerAPI.setLastPatchedApp(_app, _patcherAPI.outFile!);
|
||||
} else {
|
||||
_app.patchedFilePath = _patcherAPI.outFile!.path;
|
||||
}
|
||||
final homeViewModel = locator<HomeViewModel>();
|
||||
_managerAPI
|
||||
.reAssessPatchedApps()
|
||||
.then((_) => homeViewModel.getPatchedApps());
|
||||
} on Exception catch (e) {
|
||||
update(
|
||||
-100.0,
|
||||
@ -506,7 +506,7 @@ class InstallerViewModel extends BaseViewModel {
|
||||
_app.isRooted = installAsRoot;
|
||||
if (headerLogs != 'Installing...') {
|
||||
update(
|
||||
.85,
|
||||
-1.0,
|
||||
'Installing...',
|
||||
_app.isRooted ? 'Mounting patched app' : 'Installing patched app',
|
||||
);
|
||||
@ -534,7 +534,7 @@ class InstallerViewModel extends BaseViewModel {
|
||||
update(1.0, 'Installed', 'Installed');
|
||||
} else if (response == 3) {
|
||||
update(
|
||||
.85,
|
||||
-1.0,
|
||||
'Installation canceled',
|
||||
'Installation canceled',
|
||||
);
|
||||
@ -542,7 +542,7 @@ class InstallerViewModel extends BaseViewModel {
|
||||
installResult(context, installAsRoot);
|
||||
} else {
|
||||
update(
|
||||
.85,
|
||||
-1.0,
|
||||
'Installation failed',
|
||||
'Installation failed',
|
||||
);
|
||||
|
@ -40,6 +40,10 @@ class SettingsViewModel extends BaseViewModel {
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
bool usePrereleases() {
|
||||
return _managerAPI.usePrereleases();
|
||||
}
|
||||
|
||||
bool showUpdateDialog() {
|
||||
return _managerAPI.showUpdateDialog();
|
||||
}
|
||||
@ -64,6 +68,45 @@ class SettingsViewModel extends BaseViewModel {
|
||||
return _managerAPI.isUsingAlternativeSources();
|
||||
}
|
||||
|
||||
Future<void> showUsePrereleasesDialog(
|
||||
BuildContext context,
|
||||
bool value,
|
||||
) async {
|
||||
if (value) {
|
||||
return showDialog(
|
||||
context: context,
|
||||
builder:
|
||||
(context) => AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: Text(
|
||||
t.settingsView.usePrereleasesWarningText,
|
||||
style: const TextStyle(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
_managerAPI.setPrereleases(true);
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.yesButton),
|
||||
),
|
||||
FilledButton(
|
||||
onPressed: () {
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
child: Text(t.noButton),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
} else {
|
||||
_managerAPI.setPrereleases(false);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> showPatchesChangeEnableDialog(
|
||||
bool value,
|
||||
BuildContext context,
|
||||
@ -71,7 +114,8 @@ class SettingsViewModel extends BaseViewModel {
|
||||
if (value) {
|
||||
return showDialog(
|
||||
context: context,
|
||||
builder: (context) => AlertDialog(
|
||||
builder:
|
||||
(context) => AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: Text(
|
||||
t.settingsView.enablePatchesSelectionWarningText,
|
||||
@ -101,7 +145,8 @@ class SettingsViewModel extends BaseViewModel {
|
||||
} else {
|
||||
return showDialog(
|
||||
context: context,
|
||||
builder: (context) => AlertDialog(
|
||||
builder:
|
||||
(context) => AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: Text(
|
||||
t.settingsView.disablePatchesSelectionWarningText,
|
||||
@ -173,7 +218,8 @@ class SettingsViewModel extends BaseViewModel {
|
||||
if (!value) {
|
||||
return showDialog(
|
||||
context: context,
|
||||
builder: (context) => AlertDialog(
|
||||
builder:
|
||||
(context) => AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: Text(
|
||||
t.settingsView.requireSuggestedAppVersionDialogText,
|
||||
@ -249,9 +295,7 @@ class SettingsViewModel extends BaseViewModel {
|
||||
Future<void> importSettings() async {
|
||||
try {
|
||||
final String? result = await FlutterFileDialog.pickFile(
|
||||
params: const OpenFileDialogParams(
|
||||
fileExtensionsFilter: ['json'],
|
||||
),
|
||||
params: const OpenFileDialogParams(fileExtensionsFilter: ['json']),
|
||||
);
|
||||
if (result != null) {
|
||||
final File inFile = File(result);
|
||||
@ -298,9 +342,7 @@ class SettingsViewModel extends BaseViewModel {
|
||||
if (isPatchesChangeEnabled()) {
|
||||
try {
|
||||
final String? result = await FlutterFileDialog.pickFile(
|
||||
params: const OpenFileDialogParams(
|
||||
fileExtensionsFilter: ['json'],
|
||||
),
|
||||
params: const OpenFileDialogParams(fileExtensionsFilter: ['json']),
|
||||
);
|
||||
if (result != null) {
|
||||
final File inFile = File(result);
|
||||
@ -393,8 +435,9 @@ class SettingsViewModel extends BaseViewModel {
|
||||
.replaceAll(':', '')
|
||||
.replaceAll('T', '')
|
||||
.replaceAll('.', '');
|
||||
final File logcat =
|
||||
File('${logDir.path}/revanced-manager_logcat_$dateTime.log');
|
||||
final File logcat = File(
|
||||
'${logDir.path}/revanced-manager_logcat_$dateTime.log',
|
||||
);
|
||||
final String logs = await Logcat.execute();
|
||||
logcat.writeAsStringSync(logs);
|
||||
await Share.shareXFiles([XFile(logcat.path)]);
|
||||
|
@ -5,6 +5,7 @@ import 'package:revanced_manager/gen/strings.g.dart';
|
||||
import 'package:revanced_manager/ui/views/settings/settingsFragment/settings_manage_api_url.dart';
|
||||
import 'package:revanced_manager/ui/widgets/settingsView/settings_section.dart';
|
||||
import 'package:revanced_manager/ui/widgets/settingsView/settings_use_alternative_sources.dart';
|
||||
import 'package:revanced_manager/ui/widgets/settingsView/settings_use_prereleases.dart';
|
||||
|
||||
class SDataSection extends StatelessWidget {
|
||||
const SDataSection({super.key});
|
||||
@ -15,6 +16,7 @@ class SDataSection extends StatelessWidget {
|
||||
title: t.settingsView.dataSectionTitle,
|
||||
children: const <Widget>[
|
||||
SManageApiUrlUI(),
|
||||
SUsePrereleases(),
|
||||
SUseAlternativeSources(),
|
||||
],
|
||||
);
|
||||
|
32
lib/ui/widgets/settingsView/settings_use_prereleases.dart
Normal file
32
lib/ui/widgets/settingsView/settings_use_prereleases.dart
Normal file
@ -0,0 +1,32 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:revanced_manager/gen/strings.g.dart';
|
||||
import 'package:revanced_manager/ui/views/settings/settings_viewmodel.dart';
|
||||
import 'package:revanced_manager/ui/widgets/shared/haptics/haptic_switch_list_tile.dart';
|
||||
|
||||
class SUsePrereleases extends StatefulWidget {
|
||||
const SUsePrereleases({super.key});
|
||||
|
||||
@override
|
||||
State<SUsePrereleases> createState() => _SUsePrereleasesState();
|
||||
}
|
||||
|
||||
final _settingsViewModel = SettingsViewModel();
|
||||
|
||||
class _SUsePrereleasesState extends State<SUsePrereleases> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return HapticSwitchListTile(
|
||||
contentPadding: const EdgeInsets.symmetric(horizontal: 20.0),
|
||||
title: Text(
|
||||
t.settingsView.usePrereleasesLabel,
|
||||
style: const TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
|
||||
),
|
||||
subtitle: Text(t.settingsView.usePrereleasesHint),
|
||||
value: _settingsViewModel.usePrereleases(),
|
||||
onChanged: (value) async {
|
||||
await _settingsViewModel.showUsePrereleasesDialog(context, value);
|
||||
setState(() {});
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
226
pubspec.lock
226
pubspec.lock
@ -34,10 +34,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: args
|
||||
sha256: bf9f5caeea8d8fe6721a9c358dd8a5c1947b27f1cfaa18b39c301273594919e6
|
||||
sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.0"
|
||||
version: "2.7.0"
|
||||
async:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -74,10 +74,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_daemon
|
||||
sha256: "294a2edaf4814a378725bfe6358210196f5ea37af89ecd81bfa32960113d4948"
|
||||
sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.3"
|
||||
version: "4.0.4"
|
||||
build_resolvers:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -114,10 +114,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: built_value
|
||||
sha256: "28a712df2576b63c6c005c465989a348604960c0958d28be5303ba9baa841ac2"
|
||||
sha256: "082001b5c3dc495d4a42f1d5789990505df20d8547d42507c29050af6933ee27"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.9.3"
|
||||
version: "8.10.1"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -162,10 +162,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: connectivity_plus
|
||||
sha256: "04bf81bb0b77de31557b58d052b24b3eee33f09a6e7a8c68a3e247c7df19ec27"
|
||||
sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.3"
|
||||
version: "6.1.4"
|
||||
connectivity_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -210,18 +210,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dart_style
|
||||
sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
|
||||
sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.7"
|
||||
version: "2.3.8"
|
||||
dbus:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dbus
|
||||
sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac"
|
||||
sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.10"
|
||||
version: "0.7.11"
|
||||
device_apps:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -235,10 +235,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: device_info_plus
|
||||
sha256: "306b78788d1bb569edb7c55d622953c2414ca12445b41c9117963e03afc5c513"
|
||||
sha256: "0c6396126421b590089447154c5f98a5de423b70cfb15b1578fd018843ee6f53"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.3.3"
|
||||
version: "11.4.0"
|
||||
device_info_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -251,10 +251,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: dio
|
||||
sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260"
|
||||
sha256: "253a18bbd4851fecba42f7343a1df3a9a4c1d31a2c1b37e221086b4fa8c8dbc9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.7.0"
|
||||
version: "5.8.0+1"
|
||||
dio_cache_interceptor:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -267,10 +267,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dio_web_adapter
|
||||
sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8"
|
||||
sha256: "7586e476d70caecaf1686d21eee7247ea43ef5c345eab9e0cc3583ff13378d78"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
version: "2.1.1"
|
||||
dynamic_color:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -299,10 +299,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fake_async
|
||||
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
|
||||
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.3"
|
||||
version: "1.3.2"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -323,10 +323,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: file_picker
|
||||
sha256: "7423298f08f6fc8cce05792bae329f9a93653fc9c08712831b1a55540127995d"
|
||||
sha256: "77f8e81d22d2a07d0dee2c62e1dda71dc1da73bf43bb2d45af09727406167964"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.0.2"
|
||||
version: "10.1.9"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -405,18 +405,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_markdown
|
||||
sha256: e7bbc718adc9476aa14cfddc1ef048d2e21e4e8f18311aaac723266db9f9e7b5
|
||||
sha256: "08fb8315236099ff8e90cb87bb2b935e0a724a3af1623000a9cec930468e0f27"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.6+2"
|
||||
version: "0.7.7+1"
|
||||
flutter_plugin_android_lifecycle:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: "615a505aef59b151b46bbeef55b36ce2b6ed299d160c51d84281946f0aa0ce0e"
|
||||
sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.24"
|
||||
version: "2.0.28"
|
||||
flutter_test:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
@ -463,10 +463,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: get
|
||||
sha256: e4e7335ede17452b391ed3b2ede016545706c01a02292a6c97619705e7d2a85e
|
||||
sha256: c79eeb4339f1f3deffd9ec912f8a923834bec55f7b49c9e882b8fef2c139d425
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.6.6"
|
||||
version: "4.7.2"
|
||||
get_it:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -479,10 +479,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: glob
|
||||
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
|
||||
sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.1.3"
|
||||
google_fonts:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -503,10 +503,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http
|
||||
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
|
||||
sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.2"
|
||||
version: "1.4.0"
|
||||
http_multi_server:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -519,10 +519,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http_parser
|
||||
sha256: "76d306a1c3afb33fe82e2bbacad62a61f409b5634c915fceb0d799de1a913360"
|
||||
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.1.1"
|
||||
version: "4.1.2"
|
||||
injectable:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -543,10 +543,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: intl
|
||||
sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
|
||||
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.20.2"
|
||||
version: "0.19.0"
|
||||
io:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -559,18 +559,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: js
|
||||
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
|
||||
sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.1"
|
||||
json2yaml:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: json2yaml
|
||||
sha256: da94630fbc56079426fdd167ae58373286f603371075b69bf46d848d63ba3e51
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "0.7.2"
|
||||
json_annotation:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -599,10 +591,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
|
||||
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.9"
|
||||
version: "10.0.8"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -623,10 +615,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: lints
|
||||
sha256: "4a16b3f03741e1252fda5de3ce712666d010ba2122f8e912c94f9f7b90e1a4c3"
|
||||
sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.1.0"
|
||||
version: "5.1.1"
|
||||
logcat:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -664,10 +656,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: markdown
|
||||
sha256: ef2a1298144e3f985cc736b22e0ccdaf188b5b3970648f2d9dc13efd1d9df051
|
||||
sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.2.2"
|
||||
version: "7.3.0"
|
||||
matcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -720,10 +712,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: package_config
|
||||
sha256: "92d4488434b520a62570293fbd33bb556c7d49230791c1b4bbd973baf6d2dc67"
|
||||
sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.2.0"
|
||||
package_info_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -760,10 +752,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: "4adf4fd5423ec60a29506c76581bc05854c55e3a0b72d35bb28d661c9686edf2"
|
||||
sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.15"
|
||||
version: "2.2.17"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -800,26 +792,26 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: permission_handler
|
||||
sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849"
|
||||
sha256: "2d070d8684b68efb580a5997eb62f675e8a885ef0be6e754fb9ef489c177470f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.4.0"
|
||||
version: "12.0.0+1"
|
||||
permission_handler_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_android
|
||||
sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc
|
||||
sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "12.1.0"
|
||||
version: "13.0.1"
|
||||
permission_handler_apple:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: permission_handler_apple
|
||||
sha256: f84a188e79a35c687c132a0a0556c254747a08561e99ab933f12f6ca71ef3c98
|
||||
sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "9.4.6"
|
||||
version: "9.4.7"
|
||||
permission_handler_html:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -848,10 +840,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: petitparser
|
||||
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
|
||||
sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.2"
|
||||
version: "6.1.0"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -880,26 +872,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: provider
|
||||
sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c
|
||||
sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.1.2"
|
||||
version: "6.1.5"
|
||||
pub_semver:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pub_semver
|
||||
sha256: "7b3cfbf654f3edd0c6298ecd5be782ce997ddf0e00531b9464b55245185bbbbd"
|
||||
sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.5"
|
||||
version: "2.2.0"
|
||||
pubspec_parse:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: pubspec_parse
|
||||
sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8
|
||||
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
version: "1.5.0"
|
||||
recase:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -954,18 +946,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: "846849e3e9b68f3ef4b60c60cf4b3e02e9321bc7f4d8c4692cf87ffa82fc8a3a"
|
||||
sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.2"
|
||||
version: "2.5.3"
|
||||
shared_preferences_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: "02a7d8a9ef346c9af715811b01fbd8e27845ad2c41148eefd31321471b41863d"
|
||||
sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.4.10"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -994,10 +986,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_web
|
||||
sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e
|
||||
sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2"
|
||||
version: "2.4.3"
|
||||
shared_preferences_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1018,10 +1010,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shelf_web_socket
|
||||
sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67
|
||||
sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "3.0.0"
|
||||
skeletons:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -1040,18 +1032,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: slang
|
||||
sha256: "354283dfe5d6b5bb72d17a52c2acba0ad08c98f8de317a00aa2c801814093982"
|
||||
sha256: "6668a08355b370d5cb5446fc869c4492ed23c6433934fe88228876460fedac22"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.0"
|
||||
version: "4.7.2"
|
||||
slang_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: slang_flutter
|
||||
sha256: "6891526b13641dd2667ce60a9a65ef2c1611f838105396e5e8ad39edc4ecb191"
|
||||
sha256: fff13b6fc8b0378ee23856c4f9fd7f8e2777b430090681f4d19ab14c47de9bc6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.5.0"
|
||||
version: "4.7.0"
|
||||
source_gen:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1088,34 +1080,34 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite
|
||||
sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb"
|
||||
sha256: e2297b1da52f127bc7a3da11439985d9b536f75070f3325e62ada69a5c585d03
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.1"
|
||||
version: "2.4.2"
|
||||
sqflite_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_android
|
||||
sha256: "78f489aab276260cdd26676d2169446c7ecd3484bbd5fead4ca14f3ed4dd9ee3"
|
||||
sha256: "2b3070c5fa881839f8b402ee4a39c1b4d561704d4ebbbcfb808a119bc2a1701b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.4.1"
|
||||
sqflite_common:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_common
|
||||
sha256: "761b9740ecbd4d3e66b8916d784e581861fd3c3553eda85e167bc49fdb68f709"
|
||||
sha256: "84731e8bfd8303a3389903e01fb2141b6e59b5973cacbb0929021df08dddbe8b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.4+6"
|
||||
version: "2.5.5"
|
||||
sqflite_darwin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_darwin
|
||||
sha256: "96a698e2bc82bd770a4d6aab00b42396a7c63d9e33513a56945cbccb594c2474"
|
||||
sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.1"
|
||||
version: "2.4.2"
|
||||
sqflite_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1225,10 +1217,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: timezone
|
||||
sha256: ffc9d5f4d1193534ef051f9254063fa53d588609418c84299956c3db9383587d
|
||||
sha256: dd14a3b83cfd7cb19e7888f1cbc20f258b8d71b54c06f79ac585f14093a287d1
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.10.0"
|
||||
version: "0.10.1"
|
||||
timing:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1265,18 +1257,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: "6fc2f56536ee873eeb867ad176ae15f304ccccc357848b351f6f0d8d4a40d193"
|
||||
sha256: "8582d7f6fe14d2652b4c45c9b6c14c0b678c2af2d083a11b604caeba51930d79"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.14"
|
||||
version: "6.3.16"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
sha256: "16a513b6c12bb419304e72ea0ae2ab4fed569920d1c7cb850263fe3acc824626"
|
||||
sha256: "7f2022359d4c099eea7df3fdf739f7d3d3b9faf3166fb1dd390775176e0b76cb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.2"
|
||||
version: "6.3.3"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1305,18 +1297,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_web
|
||||
sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
|
||||
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.3"
|
||||
version: "2.4.1"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_windows
|
||||
sha256: "44cf3aabcedde30f2dba119a9dea3b0f2672fbe6fa96e85536251d678216b3c4"
|
||||
sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.3"
|
||||
version: "3.1.4"
|
||||
uuid:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1337,26 +1329,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
|
||||
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "15.0.0"
|
||||
version: "14.3.1"
|
||||
wakelock_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: wakelock_plus
|
||||
sha256: "36c88af0b930121941345306d259ec4cc4ecca3b151c02e3a9e71aede83c615e"
|
||||
sha256: a474e314c3e8fb5adef1f9ae2d247e57467ad557fa7483a2b895bc1b421c5678
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.10"
|
||||
version: "1.3.2"
|
||||
wakelock_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: wakelock_plus_platform_interface
|
||||
sha256: "70e780bc99796e1db82fe764b1e7dcb89a86f1e5b3afb1db354de50f2e41eb7a"
|
||||
sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.2"
|
||||
version: "1.2.3"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1369,34 +1361,34 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb
|
||||
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
version: "1.1.1"
|
||||
web_socket:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket
|
||||
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
|
||||
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.6"
|
||||
version: "1.0.1"
|
||||
web_socket_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket_channel
|
||||
sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
|
||||
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.0.3"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: b89e6e24d1454e149ab20fbb225af58660f0c0bf4475544650700d8e2da54aef
|
||||
sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.11.0"
|
||||
version: "5.13.0"
|
||||
win32_registry:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1425,10 +1417,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: yaml
|
||||
sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5"
|
||||
sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
version: "3.1.3"
|
||||
sdks:
|
||||
dart: ">=3.7.0 <4.0.0"
|
||||
flutter: ">=3.29.0"
|
||||
flutter: ">=3.29.3"
|
||||
|
@ -4,11 +4,11 @@ homepage: https://revanced.app
|
||||
|
||||
publish_to: 'none'
|
||||
|
||||
version: 1.24.1-dev.5+101800060
|
||||
version: 1.25.0-dev.1+101800061
|
||||
|
||||
environment:
|
||||
sdk: '>=3.7.0'
|
||||
flutter: '>=3.29.0'
|
||||
flutter: '>=3.29.3 <=3.32.0' # Do NOT use 3.32.0, sees https://github.com/flutter/flutter/issues/169215
|
||||
|
||||
dependencies:
|
||||
animations: ^2.0.11
|
||||
@ -24,7 +24,7 @@ dependencies:
|
||||
dynamic_color: ^1.7.0
|
||||
dynamic_themes: ^1.1.0
|
||||
expandable: ^5.0.1
|
||||
file_picker: ^9.0.2
|
||||
file_picker: ^10.1.9
|
||||
flutter:
|
||||
sdk: flutter
|
||||
flutter_background: ^1.3.0+1
|
||||
@ -47,7 +47,7 @@ dependencies:
|
||||
ref: 4a6d5e0e22292c8eb160cfb9365b9ea29735fd43 # Branch: master
|
||||
package_info_plus: ^8.3.0
|
||||
path_provider: ^2.1.5
|
||||
permission_handler: ^11.4.0
|
||||
permission_handler: ^12.0.0
|
||||
root:
|
||||
git:
|
||||
url: https://github.com/validcube/root
|
||||
|
Reference in New Issue
Block a user