Compare commits
219 Commits
Author | SHA1 | Date | |
---|---|---|---|
08f6724060 | |||
29daf51e64 | |||
b3b2b01c0f | |||
c3212d0308 | |||
aaa114ba13 | |||
8ca6418630 | |||
95632b7f55 | |||
64744b2abf | |||
096b315701 | |||
c27ca08d3a | |||
0011222371 | |||
29db947e25 | |||
fd43ac7581 | |||
e49c19b3cd | |||
06f0e59967 | |||
c5fc5ee93b | |||
159c85bd1f | |||
2460acf0f4 | |||
6495687841 | |||
d229ccb36c | |||
4d6a57ddcf | |||
d161d55aaf | |||
768ad0c9bc | |||
29323d4e20 | |||
630b22e193 | |||
79116f9e67 | |||
eb58475259 | |||
a879ac30fb | |||
c5b0621323 | |||
0462815014 | |||
e64318c947 | |||
b784482788 | |||
2834e8b348 | |||
b23dfd4289 | |||
217d525cb2 | |||
85b166cbda | |||
9a57f8b858 | |||
3bfdc932c2 | |||
48c878af21 | |||
490a7a58fc | |||
567b1a3ace | |||
6a45db8a38 | |||
b272988929 | |||
9828857570 | |||
ecb54d8e44 | |||
344717b021 | |||
da6cf585c0 | |||
9e93177afd | |||
16318efb01 | |||
e83e13b6d4 | |||
7c2c695d88 | |||
c7b227529d | |||
14f49e9d30 | |||
1875c4ee73 | |||
76c68baa1f | |||
68876a4414 | |||
26d7e5b60f | |||
e78af6ae99 | |||
6fe05cd86e | |||
4100d7a391 | |||
c1cc812ea4 | |||
9663e3f0f4 | |||
941f618153 | |||
716a30bf7b | |||
d051ae576b | |||
35e99cb014 | |||
af054fba49 | |||
58d837d641 | |||
6cc1bd21cd | |||
cebfa7c8ae | |||
e2d7ab8f8f | |||
ec77987fcd | |||
b161608d02 | |||
5e7458ff1c | |||
ed06aaa1f5 | |||
13b7179941 | |||
da0d88d86f | |||
b7347c312a | |||
c876f2f7e3 | |||
adad5fd8ff | |||
2aaa7ae8c9 | |||
1f64ea37bd | |||
cac1525da0 | |||
1ad906fedc | |||
20ffef39a3 | |||
185460c054 | |||
0079e74d77 | |||
a8e019482f | |||
f01b8e47aa | |||
e43dfb7599 | |||
6b8cfe2b49 | |||
7f7b14bae3 | |||
810b02d9fd | |||
62813145b2 | |||
4877058253 | |||
2a9fd3abb8 | |||
a244f7b598 | |||
5396457ad5 | |||
0186b6ea61 | |||
f6e99f7e88 | |||
c24a3828be | |||
2e38a4567a | |||
67c5d67a61 | |||
9592dde534 | |||
d030b0af70 | |||
4ccb9ac94d | |||
8af62b917c | |||
311f114132 | |||
d015bd03f7 | |||
a61b9de0fa | |||
ef1b283917 | |||
c677f00105 | |||
8d2f778dfe | |||
c549d102f6 | |||
39a9ee4e9d | |||
a27dc6ad1c | |||
8ccb75fc8d | |||
8fc86dbe02 | |||
359f052608 | |||
4150e2265c | |||
b803ce7435 | |||
289c6cd7a9 | |||
31fc7b74c2 | |||
3e565f25be | |||
e509be4e21 | |||
170fc537ac | |||
3fe5882145 | |||
a290791410 | |||
2ebd38ff68 | |||
cd987a5b19 | |||
7f1dab7ee1 | |||
bed3945aa5 | |||
15a32a18b7 | |||
d2e8e7dd5d | |||
ce12ec89c4 | |||
b286444ad9 | |||
941263102d | |||
e2ed296dc7 | |||
cfc866bef2 | |||
affba669ce | |||
7230152ab8 | |||
21fee7171f | |||
ad17995f28 | |||
ac830cbe7f | |||
65da6af3f9 | |||
3d90bf7588 | |||
62ef1c88fe | |||
d6918920b6 | |||
cdfb09fbfa | |||
bb681e31c9 | |||
c7483936ec | |||
0a1f2da33d | |||
f5aafdb7d6 | |||
c9adf1c492 | |||
4c9cb560e3 | |||
f0b028279c | |||
197770b68b | |||
37b583f560 | |||
dca2d4fe12 | |||
3b677f8ae3 | |||
0b952578d1 | |||
054afbbedd | |||
866a6e4a44 | |||
8ea7dd478b | |||
7839252934 | |||
fa4063220f | |||
d214a02abd | |||
d1c12edd1b | |||
ded1a44c37 | |||
790a6cd1e3 | |||
a79f883a0f | |||
d9c5a540a3 | |||
276f33b9ec | |||
ded59d2da0 | |||
62f7a820d8 | |||
7063ffa013 | |||
bf4dc3c095 | |||
c10e5848bf | |||
92a3b0d6e0 | |||
b475bd25c8 | |||
d318224a6f | |||
0074fee865 | |||
5617535a63 | |||
68ccefc59f | |||
6d60541626 | |||
a635e5b8d0 | |||
48a10440fe | |||
8e3ba88318 | |||
ab8fccc544 | |||
8319dc9164 | |||
6829d3cdea | |||
3ae4d69110 | |||
dc665f227e | |||
a83496568f | |||
12d25570af | |||
378c947654 | |||
bd39a3140e | |||
7d3ca3dec1 | |||
1cb556c8f8 | |||
8c8f96de1c | |||
318cd87a9a | |||
5d63d5c2d3 | |||
7d347fccc6 | |||
a54ca799b9 | |||
f5bc1a996f | |||
8591bc4d01 | |||
40888c07f3 | |||
1c965c3788 | |||
4df690c2a2 | |||
d6abb61e2b | |||
3434c862e9 | |||
ea8af926fa | |||
c3df48174c | |||
f1e60f96c4 | |||
cdd852678b | |||
bf518b5467 | |||
ffd53fab26 | |||
5aad7dad35 | |||
b1c1a9f4e1 |
20
.github/ISSUE_TEMPLATE/bug-issue.yml
vendored
@ -29,7 +29,7 @@ body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps to reproduce
|
||||
description: Add the steps to reproduce this bug including your environment.
|
||||
description: Add the steps to reproduce this bug, including your environment.
|
||||
placeholder: Step 1. Download some files. Step 2. ...
|
||||
validations:
|
||||
required: true
|
||||
@ -74,20 +74,20 @@ body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Device logs (exported using Manager settings).
|
||||
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
||||
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so there is no need for backticks.
|
||||
render: shell
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Installer logs (exported using Installer menu option) [unneeded if issue is not during patching].
|
||||
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks.
|
||||
label: Installer logs (exported using Installer menu option) [unneeded if the issue is not during patching].
|
||||
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so there is no need for backticks.
|
||||
render: shell
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Screenshots or videos
|
||||
label: Screenshots or video
|
||||
description: Add screenshots or videos that show the bug here.
|
||||
placeholder: Drag and drop the screenshots/videos into this box.
|
||||
validations:
|
||||
@ -105,16 +105,16 @@ body:
|
||||
validations:
|
||||
required: false
|
||||
- type: checkboxes
|
||||
id: acknowledgements
|
||||
id: acknowledgments
|
||||
attributes:
|
||||
label: Acknowledgements
|
||||
label: Acknowledgments
|
||||
description: Your issue will be closed if you haven't done these steps.
|
||||
options:
|
||||
- label: I have searched the existing issues and this is a new and no duplicate or related to another open issue.
|
||||
- label: I have searched the existing issues; this is new and no duplicate or related to another open issue.
|
||||
required: true
|
||||
- label: I have written a short but informative title.
|
||||
required: true
|
||||
- label: I filled out all of the requested information in this issue properly.
|
||||
- label: I properly filled out all of the requested information in this issue.
|
||||
required: true
|
||||
- label: The issue is related solely to the ReVanced Manager
|
||||
- label: The issue is solely related to ReVanced Manager and not caused by patches.
|
||||
required: true
|
||||
|
2
.github/config.yaml
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
firstPRMergeComment: >
|
||||
Thank you for contributing to ReVanced. Join us on [Discord](https://revanced.app/discord) if you want to receive a contributor role.
|
38
.github/workflows/analyze.yml
vendored
Normal file
@ -0,0 +1,38 @@
|
||||
name: Analyze Code
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "dev" ]
|
||||
paths:
|
||||
- "**.dart"
|
||||
- ".github/workflows/analyze.yml"
|
||||
pull_request:
|
||||
branches: [ "main", "dev" ]
|
||||
types:
|
||||
- opened
|
||||
- reopened
|
||||
- synchronize
|
||||
- ready_for_review
|
||||
paths:
|
||||
- "**.dart"
|
||||
- ".github/workflows/analyze.yml"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: "Static analysis & format check"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
cache: true
|
||||
- name: Install Flutter dependencies
|
||||
run: flutter pub get
|
||||
- name: Generate files with Builder
|
||||
run: flutter packages pub run build_runner build --delete-conflicting-outputs
|
||||
- name: Analyze code
|
||||
uses: ValentinVignal/action-dart-analyze@v0.15
|
||||
with:
|
||||
fail-on: warning
|
41
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
name: PR Build
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
build:
|
||||
name: Build
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
# Make sure the release step uses its own credentials:
|
||||
# https://github.com/cycjimmy/semantic-release-action#private-packages
|
||||
persist-credentials: false
|
||||
fetch-depth: 0
|
||||
- name: Setup JDK
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '11'
|
||||
distribution: 'zulu'
|
||||
cache: 'gradle'
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
cache: true
|
||||
- name: Install Flutter dependencies
|
||||
run: flutter pub get
|
||||
- name: Generate files with Builder
|
||||
run: flutter packages pub run build_runner build --delete-conflicting-outputs
|
||||
- name: Build with Flutter
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: flutter build apk
|
||||
- name: Upload build
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: revanced-manager
|
||||
path: build/app/outputs/flutter-apk/app-release.apk
|
55
.github/workflows/commit-build.yml
vendored
@ -1,55 +0,0 @@
|
||||
name: "Android CI Actions"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "**"
|
||||
tags-ignore:
|
||||
- "v*" # Ignore tags that start with "v" (e.g. v1.0.0) because they are handled by release-build.yml
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set env
|
||||
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
||||
- name: Set up JDK 12
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '12'
|
||||
distribution: 'zulu'
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
- name: Set environment variables
|
||||
run: echo $SECRETS | base64 -d > lib/utils/environment.dart
|
||||
env:
|
||||
SECRETS: ${{ secrets.SECRETS }}
|
||||
- name: Set up Flutter
|
||||
run: flutter pub get
|
||||
- name: Generate files with Builder
|
||||
run: flutter packages pub run build_runner build --delete-conflicting-outputs
|
||||
- name: Build with Flutter
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
|
||||
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
|
||||
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
|
||||
run: flutter build apk
|
||||
- name: Sign APK
|
||||
id: sign_apk
|
||||
uses: ilharp/sign-android-release@v1
|
||||
with:
|
||||
releaseDir: build/app/outputs/apk/release
|
||||
signingKey: ${{ secrets.SIGNING_KEYSTORE }}
|
||||
keyStorePassword: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
|
||||
keyAlias: ${{ secrets.SIGNING_KEY_ALIAS }}
|
||||
keyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
|
||||
- name: Add version to APK
|
||||
run: mv ${{ steps.sign_apk.outputs.signedFile }} revanced-manager-${{ env.RELEASE_VERSION }}.apk
|
||||
- name: Upload APK
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: revanced-manager-${{ env.RELEASE_VERSION }}
|
||||
path: revanced-manager-${{ env.RELEASE_VERSION }}.apk
|
4
.github/workflows/crowdin.yml
vendored
@ -3,7 +3,7 @@ name: Sync Crowdin translations
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- "flutter"
|
||||
- "dev"
|
||||
paths:
|
||||
- "assets/i18n/en_US.json"
|
||||
- ".github/workflows/crowdin.yml"
|
||||
@ -19,7 +19,7 @@ jobs:
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Crowdin
|
||||
uses: crowdin/github-action@1.5.0
|
||||
uses: crowdin/github-action@v1
|
||||
with:
|
||||
config: crowdin.yml
|
||||
upload_sources: true
|
||||
|
41
.github/workflows/pull-request-build.yml
vendored
@ -1,41 +0,0 @@
|
||||
name: "Android CI PR Build"
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- "**"
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set env
|
||||
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
||||
- name: Set up JDK 12
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '12'
|
||||
distribution: 'zulu'
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
- name: Set environment variables
|
||||
run: echo $SECRETS | base64 -d > lib/utils/environment.dart
|
||||
env:
|
||||
SECRETS: ${{ secrets.SECRETS }}
|
||||
- name: Set up Flutter
|
||||
run: flutter pub get
|
||||
- name: Generate files with Builder
|
||||
run: flutter packages pub run build_runner build --delete-conflicting-outputs
|
||||
- name: Build with Flutter
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: flutter build apk
|
||||
- name: Add version to APK
|
||||
run: mv build/app/outputs/flutter-apk/app-release.apk revanced-manager-${{ env.RELEASE_VERSION }}.apk
|
||||
- name: Upload APK
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: revanced-manager-${{ env.RELEASE_VERSION }}
|
||||
path: revanced-manager-${{ env.RELEASE_VERSION }}.apk
|
14
.github/workflows/release-build.yml
vendored
@ -12,18 +12,14 @@ jobs:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set env
|
||||
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
|
||||
- name: Set up JDK 12
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '12'
|
||||
distribution: 'zulu'
|
||||
java-version: "11"
|
||||
distribution: "zulu"
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
- name: Set environment variables
|
||||
run: echo $SECRETS | base64 -d > lib/utils/environment.dart
|
||||
env:
|
||||
SECRETS: ${{ secrets.SECRETS }}
|
||||
channel: "stable"
|
||||
- name: Set up Flutter
|
||||
run: flutter pub get
|
||||
- name: Generate files with Builder
|
||||
@ -51,4 +47,4 @@ jobs:
|
||||
with:
|
||||
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
prerelease: false
|
||||
files: revanced-manager-${{ env.RELEASE_VERSION }}.apk
|
||||
files: revanced-manager-${{ env.RELEASE_VERSION }}.apk
|
68
.github/workflows/release.yml
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- dev
|
||||
jobs:
|
||||
release:
|
||||
name: Release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
# Make sure the release step uses its own credentials:
|
||||
# https://github.com/cycjimmy/semantic-release-action#private-packages
|
||||
persist-credentials: false
|
||||
fetch-depth: 0
|
||||
- name: Setup JDK
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '11'
|
||||
distribution: 'zulu'
|
||||
cache: 'gradle'
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '18'
|
||||
cache: 'npm'
|
||||
- name: Setup Flutter
|
||||
uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: 'stable'
|
||||
cache: true
|
||||
- name: Install Flutter dependencies
|
||||
run: flutter pub get
|
||||
- name: Generate files with Builder
|
||||
run: flutter packages pub run build_runner build --delete-conflicting-outputs
|
||||
- name: Build with Flutter
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: flutter build apk
|
||||
- name: Sign APK
|
||||
id: sign_apk
|
||||
uses: ilharp/sign-android-release@v1
|
||||
with:
|
||||
releaseDir: build/app/outputs/apk/release
|
||||
signingKey: ${{ secrets.SIGNING_KEYSTORE }}
|
||||
keyStorePassword: ${{ secrets.SIGNING_KEYSTORE_PASSWORD }}
|
||||
keyAlias: ${{ secrets.SIGNING_KEY_ALIAS }}
|
||||
keyPassword: ${{ secrets.SIGNING_KEY_PASSWORD }}
|
||||
- name: Setup semantic-release
|
||||
run: npm ci
|
||||
- name: Get release version
|
||||
run: npm exec -- semantic-release --dry-run
|
||||
id: get-next-version
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Add version to APK
|
||||
run: mv $SIGNED_FILE_PATH $(dirname $SIGNED_FILE_PATH)/revanced-manager-${{ steps.get-next-version.outputs.new-release-version }}.apk
|
||||
env:
|
||||
SIGNED_FILE_PATH: ${{steps.sign_apk.outputs.signedFile}}
|
||||
- name: Release
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.REPOSITORY_PUSH_ACCESS }}
|
||||
run: npm exec semantic-release
|
19
.github/workflows/update-documentation.yml
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
name: Update documentation
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- docs/**
|
||||
|
||||
jobs:
|
||||
trigger:
|
||||
runs-on: ubuntu-latest
|
||||
name: Dispatch event to documentation repository
|
||||
if: github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- uses: peter-evans/repository-dispatch@v2
|
||||
with:
|
||||
token: ${{ secrets.DOCUMENTATION_REPO_ACCESS_TOKEN }}
|
||||
repository: revanced/revanced-documentation
|
||||
event-type: update-documentation
|
||||
client-payload: '{"repo": "${{ github.event.repository.name }}", "ref": "${{ github.ref }}"}'
|
10
.gitignore
vendored
@ -134,5 +134,11 @@ app.*.map.json
|
||||
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||||
!/dev/ci/**/Gemfile.lock
|
||||
|
||||
Firebase related
|
||||
.firebase
|
||||
# Firebase related
|
||||
.firebase
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
|
||||
# FVM
|
||||
.fvm
|
75
.releaserc
Normal file
@ -0,0 +1,75 @@
|
||||
{
|
||||
"branches": [
|
||||
"main",
|
||||
{
|
||||
"name": "dev",
|
||||
"prerelease": true
|
||||
}
|
||||
],
|
||||
"plugins": [
|
||||
"semantic-release-export-data",
|
||||
"@semantic-release/commit-analyzer",
|
||||
[
|
||||
"@semantic-release/release-notes-generator",
|
||||
{
|
||||
"presetConfig": {
|
||||
"types": [
|
||||
{
|
||||
"type": "build",
|
||||
"section": "Dependency Updates"
|
||||
},
|
||||
{
|
||||
"type": "chore",
|
||||
"section": "Other Changes",
|
||||
"hidden": false
|
||||
},
|
||||
{
|
||||
"type": "perf",
|
||||
"section": "Performance Improvements",
|
||||
"hidden": false
|
||||
},
|
||||
{
|
||||
"type": "refactor",
|
||||
"section": "Code Improvements",
|
||||
"hidden": false
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
],
|
||||
"@semantic-release/changelog",
|
||||
"semantic-release-flutter-plugin",
|
||||
[
|
||||
"@semantic-release/git",
|
||||
{
|
||||
"assets": [
|
||||
"CHANGELOG.md",
|
||||
"pubspec.yaml"
|
||||
]
|
||||
}
|
||||
],
|
||||
[
|
||||
"@semantic-release/github",
|
||||
{
|
||||
"assets": [
|
||||
{
|
||||
"path": "build/app/outputs/apk/release/revanced-manager-*.apk"
|
||||
}
|
||||
],
|
||||
"successComment": false
|
||||
}
|
||||
],
|
||||
[
|
||||
"@saithodev/semantic-release-backmerge",
|
||||
{
|
||||
"backmergeBranches": [
|
||||
{
|
||||
"from": "main",
|
||||
"to": "dev"
|
||||
}
|
||||
],
|
||||
"clearWorkspace": true
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
1
CHANGELOG.md
Normal file
@ -0,0 +1 @@
|
||||
|
@ -3,15 +3,11 @@
|
||||
The official ReVanced Manager based on Flutter.
|
||||
|
||||
## 🔽 Download
|
||||
To download the Alpha version of Manager, go [here](https://github.com/revanced/revanced-manager/releases/latest) and install the provided APK file.
|
||||
To download latest Manager, go [here](https://github.com/revanced/revanced-manager/releases/latest) and install the provided APK file.
|
||||
|
||||
## 📝 Prerequisites
|
||||
1. Android 8 or higher
|
||||
2. Does not work on some armv7 devices
|
||||
3. [Vanced MicroG](https://github.com/TeamVanced/VancedMicroG/releases) required for YouTube and YouTube Music (Only for non-root)
|
||||
|
||||
## ⚠️ Disclaimer
|
||||
*Please note that even though we're releasing the Manager, it is an ALPHA version. There's a big chance that the Manager might not work at all for you.*
|
||||
|
||||
## 🔴 Issues
|
||||
For suggestions and bug reports, open an issue [here](https://github.com/revanced/revanced-manager/issues/new/choose).
|
||||
@ -28,7 +24,7 @@ If you wish to translate ReVanced Manager, we're accepting translations on [Crow
|
||||
## 🛠️ Building Manager from source
|
||||
1. Setup flutter environment for your [platform](https://docs.flutter.dev/get-started/install)
|
||||
2. Clone the repository locally
|
||||
3. Add your github token in gradle.properties like [this](https://github.com/revanced/revanced-documentation/blob/main/docs/revanced-development/2_building_from_source.md)
|
||||
3. Add your github token in gradle.properties like [this](/docs/4_building.md)
|
||||
4. Open the project in terminal
|
||||
5. Run `flutter pub get` in terminal
|
||||
6. Then `flutter packages pub run build_runner build --delete-conflicting-outputs` (Must be done on each git pull)
|
||||
|
@ -11,23 +11,154 @@ include: package:flutter_lints/flutter.yaml
|
||||
|
||||
analyzer:
|
||||
exclude:
|
||||
- lib/utils/env_class.g.dart
|
||||
- lib/app/app.locator.dart
|
||||
- lib/app/app.router.dart
|
||||
- lib/models/patch.g.dart
|
||||
- lib/models/patched_application.g.dart
|
||||
|
||||
linter:
|
||||
# The lint rules applied to this project can be customized in the
|
||||
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
||||
# included above or to enable additional rules. A list of all available lints
|
||||
# and their documentation is published at
|
||||
# https://dart-lang.github.io/linter/lints/index.html.
|
||||
#
|
||||
# Instead of disabling a lint rule for the entire project in the
|
||||
# section below, it can also be suppressed for a single line of code
|
||||
# or a specific dart file by using the `// ignore: name_of_lint` and
|
||||
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
|
||||
# producing the lint.
|
||||
rules:
|
||||
# avoid_print: false # Uncomment to disable the `avoid_print` rule
|
||||
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
|
||||
|
||||
# Additional information about this file can be found at
|
||||
# https://dart.dev/guides/language/analysis-options
|
||||
- always_declare_return_types
|
||||
- require_trailing_commas
|
||||
- always_put_control_body_on_new_line
|
||||
- always_require_non_null_named_parameters
|
||||
- always_use_package_imports # we do this commonly
|
||||
- annotate_overrides
|
||||
- avoid_bool_literals_in_conditional_expressions
|
||||
- avoid_double_and_int_checks
|
||||
- avoid_empty_else
|
||||
- avoid_equals_and_hash_code_on_mutable_classes
|
||||
- avoid_escaping_inner_quotes
|
||||
- avoid_field_initializers_in_const_classes
|
||||
- avoid_function_literals_in_foreach_calls
|
||||
- avoid_implementing_value_types
|
||||
- avoid_init_to_null
|
||||
- avoid_js_rounded_ints
|
||||
- avoid_null_checks_in_equality_operators
|
||||
- avoid_print
|
||||
- avoid_redundant_argument_values
|
||||
- avoid_relative_lib_imports
|
||||
- avoid_renaming_method_parameters
|
||||
- avoid_return_types_on_setters
|
||||
- avoid_returning_null
|
||||
- avoid_returning_null_for_future
|
||||
- avoid_returning_null_for_void
|
||||
- avoid_setters_without_getters
|
||||
- avoid_shadowing_type_parameters
|
||||
- avoid_single_cascade_in_expression_statements
|
||||
- avoid_type_to_string
|
||||
- avoid_types_as_parameter_names
|
||||
- avoid_unnecessary_containers
|
||||
- avoid_void_async
|
||||
- avoid_web_libraries_in_flutter # we use web libraries in web-specific code, and our tests prevent us from using them elsewhere
|
||||
- await_only_futures
|
||||
- camel_case_extensions
|
||||
- camel_case_types
|
||||
- cancel_subscriptions
|
||||
- cast_nullable_to_non_nullable
|
||||
- close_sinks # not reliable enough
|
||||
- control_flow_in_finally
|
||||
- curly_braces_in_flow_control_structures
|
||||
- depend_on_referenced_packages
|
||||
- deprecated_consistency
|
||||
- directives_ordering
|
||||
- empty_catches
|
||||
- empty_constructor_bodies
|
||||
- empty_statements
|
||||
- eol_at_end_of_file
|
||||
- exhaustive_cases
|
||||
- file_names
|
||||
- flutter_style_todos
|
||||
- hash_and_equals
|
||||
- implementation_imports
|
||||
- iterable_contains_unrelated_type
|
||||
- leading_newlines_in_multiline_strings
|
||||
- library_names
|
||||
- library_prefixes
|
||||
- library_private_types_in_public_api
|
||||
- list_remove_unrelated_type
|
||||
- missing_whitespace_between_adjacent_strings
|
||||
- no_adjacent_strings_in_list
|
||||
- no_duplicate_case_values
|
||||
- no_logic_in_create_state
|
||||
- non_constant_identifier_names
|
||||
- noop_primitive_operations
|
||||
- null_check_on_nullable_type_parameter
|
||||
- null_closures
|
||||
- overridden_fields
|
||||
- package_api_docs
|
||||
- package_names
|
||||
- package_prefixed_library_names
|
||||
- prefer_adjacent_string_concatenation
|
||||
- prefer_asserts_in_initializer_lists
|
||||
- prefer_collection_literals
|
||||
- prefer_conditional_assignment
|
||||
- prefer_const_constructors
|
||||
- prefer_const_constructors_in_immutables
|
||||
- prefer_const_declarations
|
||||
- prefer_const_literals_to_create_immutables
|
||||
- prefer_contains
|
||||
- prefer_final_fields
|
||||
- prefer_final_in_for_each
|
||||
- prefer_final_locals
|
||||
- prefer_for_elements_to_map_fromIterable
|
||||
- prefer_foreach
|
||||
- prefer_function_declarations_over_variables
|
||||
- prefer_generic_function_type_aliases
|
||||
- prefer_if_elements_to_conditional_expressions
|
||||
- prefer_if_null_operators
|
||||
- prefer_initializing_formals
|
||||
- prefer_inlined_adds
|
||||
- prefer_interpolation_to_compose_strings
|
||||
- prefer_is_empty
|
||||
- prefer_is_not_empty
|
||||
- prefer_is_not_operator
|
||||
- prefer_iterable_whereType
|
||||
- prefer_mixin # Has false positives, see https://github.com/dart-lang/linter/issues/3018
|
||||
- prefer_null_aware_method_calls # "call()" is confusing to people new to the language since it's not documented anywhere
|
||||
- prefer_null_aware_operators
|
||||
- prefer_single_quotes
|
||||
- prefer_spread_collections
|
||||
- prefer_typing_uninitialized_variables
|
||||
- prefer_void_to_null
|
||||
- provide_deprecation_message
|
||||
- recursive_getters
|
||||
- sized_box_for_whitespace
|
||||
- slash_for_doc_comments
|
||||
- sort_child_properties_last
|
||||
- sort_constructors_first
|
||||
- sort_unnamed_constructors_first
|
||||
- test_types_in_equals
|
||||
- throw_in_finally
|
||||
- tighten_type_of_initializing_formals
|
||||
- type_init_formals
|
||||
- unnecessary_brace_in_string_interps
|
||||
- unnecessary_const
|
||||
- unnecessary_getters_setters
|
||||
- unnecessary_new
|
||||
- unnecessary_null_aware_assignments
|
||||
- unnecessary_null_checks
|
||||
- unnecessary_null_in_if_null_operators
|
||||
- unnecessary_nullable_for_final_variable_declarations
|
||||
- unnecessary_overrides
|
||||
- unnecessary_parenthesis
|
||||
- unnecessary_statements
|
||||
- unnecessary_string_escapes
|
||||
- unnecessary_string_interpolations
|
||||
- unnecessary_this
|
||||
- unrelated_type_equality_checks
|
||||
- unsafe_html
|
||||
- use_build_context_synchronously
|
||||
- use_full_hex_values_for_flutter_colors
|
||||
- use_function_type_syntax_for_parameters
|
||||
- use_if_null_to_convert_nulls_to_bools
|
||||
- use_is_even_rather_than_modulo
|
||||
- use_key_in_widget_constructors
|
||||
- use_late_for_private_fields_and_variables
|
||||
- use_named_constants
|
||||
- use_raw_strings
|
||||
- use_rethrow_when_possible
|
||||
- use_setters_to_change_properties
|
||||
- use_test_throws_matchers
|
||||
- valid_regexps
|
||||
- void_checks
|
||||
|
3
android/Gemfile
Normal file
@ -0,0 +1,3 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "fastlane"
|
@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
|
||||
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||
|
||||
android {
|
||||
compileSdkVersion 33
|
||||
compileSdkVersion flutter.compileSdkVersion
|
||||
ndkVersion flutter.ndkVersion
|
||||
|
||||
compileOptions {
|
||||
@ -71,14 +71,10 @@ dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||
|
||||
// ReVanced
|
||||
implementation "app.revanced:revanced-patcher:6.3.2"
|
||||
implementation "app.revanced:revanced-patcher:12.0.0"
|
||||
|
||||
// Signing & aligning
|
||||
implementation("org.bouncycastle:bcpkix-jdk15on:1.70")
|
||||
implementation("com.android.tools.build:apksig:7.2.2")
|
||||
|
||||
// MicroG cronet
|
||||
implementation("org.microg:cronet-common:$cronetVersion")
|
||||
implementation("org.microg:cronet-native:$cronetVersion")
|
||||
|
||||
}
|
||||
|
@ -2,22 +2,31 @@
|
||||
package="app.revanced.manager.flutter">
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
|
||||
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
|
||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
|
||||
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="32" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="32" />
|
||||
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
|
||||
|
||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
|
||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
|
||||
<application
|
||||
android:label="ReVanced Manager"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:largeHeap="true"
|
||||
android:extractNativeLibs="true">
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:extractNativeLibs="true"
|
||||
android:enableOnBackInvokedCallback="true">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
@ -28,8 +37,7 @@
|
||||
android:windowSoftInputMode="adjustResize">
|
||||
<meta-data
|
||||
android:name="io.flutter.embedding.android.NormalTheme"
|
||||
android:resource="@style/NormalTheme"
|
||||
/>
|
||||
android:resource="@style/NormalTheme"/>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
|
@ -43,8 +43,9 @@ class MainActivity : FlutterActivity() {
|
||||
val integrationsPath = call.argument<String>("integrationsPath")
|
||||
val selectedPatches = call.argument<List<String>>("selectedPatches")
|
||||
val cacheDirPath = call.argument<String>("cacheDirPath")
|
||||
val mergeIntegrations = call.argument<Boolean>("mergeIntegrations")
|
||||
val keyStoreFilePath = call.argument<String>("keyStoreFilePath")
|
||||
val keystorePassword = call.argument<String>("keystorePassword")
|
||||
|
||||
if (patchBundleFilePath != null &&
|
||||
originalFilePath != null &&
|
||||
inputFilePath != null &&
|
||||
@ -53,8 +54,8 @@ class MainActivity : FlutterActivity() {
|
||||
integrationsPath != null &&
|
||||
selectedPatches != null &&
|
||||
cacheDirPath != null &&
|
||||
mergeIntegrations != null &&
|
||||
keyStoreFilePath != null
|
||||
keyStoreFilePath != null &&
|
||||
keystorePassword != null
|
||||
) {
|
||||
runPatcher(
|
||||
result,
|
||||
@ -66,8 +67,8 @@ class MainActivity : FlutterActivity() {
|
||||
integrationsPath,
|
||||
selectedPatches,
|
||||
cacheDirPath,
|
||||
mergeIntegrations,
|
||||
keyStoreFilePath
|
||||
keyStoreFilePath,
|
||||
keystorePassword
|
||||
)
|
||||
} else {
|
||||
result.notImplemented()
|
||||
@ -88,8 +89,8 @@ class MainActivity : FlutterActivity() {
|
||||
integrationsPath: String,
|
||||
selectedPatches: List<String>,
|
||||
cacheDirPath: String,
|
||||
mergeIntegrations: Boolean,
|
||||
keyStoreFilePath: String
|
||||
keyStoreFilePath: String,
|
||||
keystorePassword: String
|
||||
) {
|
||||
val originalFile = File(originalFilePath)
|
||||
val inputFile = File(inputFilePath)
|
||||
@ -139,19 +140,17 @@ class MainActivity : FlutterActivity() {
|
||||
mapOf("progress" to 0.3, "header" to "", "log" to "")
|
||||
)
|
||||
}
|
||||
if (mergeIntegrations) {
|
||||
handler.post {
|
||||
installerChannel.invokeMethod(
|
||||
"update",
|
||||
mapOf(
|
||||
"progress" to 0.4,
|
||||
"header" to "Merging integrations...",
|
||||
"log" to "Merging integrations"
|
||||
)
|
||||
handler.post {
|
||||
installerChannel.invokeMethod(
|
||||
"update",
|
||||
mapOf(
|
||||
"progress" to 0.4,
|
||||
"header" to "Merging integrations...",
|
||||
"log" to "Merging integrations"
|
||||
)
|
||||
}
|
||||
patcher.addFiles(listOf(integrations)) {}
|
||||
)
|
||||
}
|
||||
patcher.addIntegrations(listOf(integrations)) {}
|
||||
|
||||
handler.post {
|
||||
installerChannel.invokeMethod(
|
||||
@ -248,7 +247,7 @@ class MainActivity : FlutterActivity() {
|
||||
// Signer("ReVanced", "s3cur3p@ssw0rd").signApk(patchedFile, outFile, keyStoreFile)
|
||||
|
||||
try {
|
||||
Signer("ReVanced", "s3cur3p@ssw0rd").signApk(patchedFile, outFile, keyStoreFile)
|
||||
Signer("ReVanced", keystorePassword).signApk(patchedFile, outFile, keyStoreFile)
|
||||
} catch (e: Exception) {
|
||||
//log to console
|
||||
print("Error signing apk: ${e.message}")
|
||||
@ -272,8 +271,8 @@ class MainActivity : FlutterActivity() {
|
||||
"update",
|
||||
mapOf(
|
||||
"progress" to -100.0,
|
||||
"header" to "Aborting...",
|
||||
"log" to "An error occurred! Aborting\nError:\n$stack"
|
||||
"header" to "Aborted...",
|
||||
"log" to "An error occurred! Aborted\nError:\n$stack"
|
||||
)
|
||||
)
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 814 B |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 5.4 KiB |
30
android/app/src/main/res/drawable/ic_launcher_foreground.xml
Normal file
@ -0,0 +1,30 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:aapt="http://schemas.android.com/aapt"
|
||||
android:width="108dp"
|
||||
android:height="108dp"
|
||||
android:viewportWidth="256"
|
||||
android:viewportHeight="256">
|
||||
<group android:scaleX="0.23"
|
||||
android:scaleY="0.23"
|
||||
android:translateX="98.56"
|
||||
android:translateY="98.56">
|
||||
<path
|
||||
android:pathData="M253.85,4.9C254.32,3.82 254.22,2.57 253.58,1.58C252.93,0.6 251.83,0 250.64,0C243.29,0 230.47,0 225.95,0C224.96,0 224.06,0.59 223.66,1.5C216.03,18.88 144.1,182.7 130.29,214.16C129.89,215.07 128.99,215.66 128,215.66C127.01,215.66 126.11,215.07 125.71,214.16C111.9,182.7 39.97,18.88 32.34,1.5C31.94,0.59 31.04,0 30.05,0C25.53,0 12.71,0 5.36,0C4.17,0 3.07,0.6 2.42,1.58C1.78,2.57 1.68,3.82 2.15,4.9C16.78,38.3 101.47,231.61 111.24,253.9C111.8,255.18 113.06,256 114.45,256C120.29,256 135.71,256 141.55,256C142.94,256 144.2,255.18 144.76,253.9C154.52,231.61 239.22,38.3 253.85,4.9Z"
|
||||
android:fillColor="#ffffff"/>
|
||||
<path
|
||||
android:pathData="M130.59,131.75C130.06,132.68 129.07,133.25 128,133.25C126.93,133.25 125.94,132.68 125.4,131.75C113.45,111.06 63.88,25.19 51.93,4.5C51.4,3.57 51.4,2.43 51.93,1.5C52.47,0.57 53.46,-0 54.53,-0L201.47,-0C202.54,-0 203.53,0.57 204.06,1.5C204.6,2.43 204.6,3.57 204.06,4.5C192.12,25.19 142.54,111.06 130.59,131.75Z">
|
||||
<aapt:attr name="android:fillColor">
|
||||
<gradient
|
||||
android:startX="128"
|
||||
android:startY="-0"
|
||||
android:endX="128"
|
||||
android:endY="254.6"
|
||||
android:type="linear">
|
||||
<item android:offset="0" android:color="#FFF04E98"/>
|
||||
<item android:offset="0.5" android:color="#FF5F65D4"/>
|
||||
<item android:offset="1" android:color="#FF4E98F0"/>
|
||||
</gradient>
|
||||
</aapt:attr>
|
||||
</path>
|
||||
</group>
|
||||
</vector>
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 5.3 KiB |
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
||||
<background android:drawable="@color/ic_launcher_background"/>
|
||||
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
<monochrome android:drawable="@drawable/ic_launcher_foreground"/>
|
||||
</adaptive-icon>
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 9.4 KiB |
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="ic_launcher_background">#1B1B1B</color>
|
||||
</resources>
|
||||
</resources>
|
@ -1,6 +1,5 @@
|
||||
buildscript {
|
||||
ext.cronetVersion = '102.5005.125'
|
||||
ext.kotlin_version = '1.7.20'
|
||||
ext.kotlin_version = '1.7.10'
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
@ -32,6 +31,6 @@ subprojects {
|
||||
project.evaluationDependsOn(':app')
|
||||
}
|
||||
|
||||
task clean(type: Delete) {
|
||||
tasks.register("clean", Delete) {
|
||||
delete rootProject.buildDir
|
||||
}
|
||||
|
@ -1,3 +1,6 @@
|
||||
org.gradle.jvmargs=-Xmx1536M
|
||||
org.gradle.jvmargs=-Xmx1536M -XX:+UseParallelGC
|
||||
org.gradle.parallel=true
|
||||
org.gradle.daemon=true
|
||||
org.gradle.caching=true
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
|
@ -1,6 +1,7 @@
|
||||
#Mon May 09 12:07:41 MSK 2022
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-rc-1-bin.zip
|
||||
distributionPath=wrapper/dists
|
||||
zipStorePath=wrapper/dists
|
||||
distributionSha256Sum=a01b6587e15fe7ed120a0ee299c25982a1eee045abd6a9dd5e216b2f628ef9ac
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip
|
||||
networkTimeout=10000
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "لم يتم اختيار أي تطبيق",
|
||||
"noAppsLabel": "لم يتم العثور على تطبيقات",
|
||||
"currentVersion": "الحالي",
|
||||
"recommendedVersion": "موصى به",
|
||||
"anyVersion": "أي"
|
||||
"recommendedVersion": "موصى به"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "اختر التعديلات",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "تسجيل الحراسة",
|
||||
"sentryHint": "إرسال سجلات مجهولة لمساعدتنا في تحسين ReVanced Manager",
|
||||
"restartAppForChanges": "إعادة تشغيل التطبيق لتطبيق التغييرات",
|
||||
"deleteKeystoreLabel": "حذف ملف تخزين المفاتيح",
|
||||
"deleteKeystoreHint": "حذف ملف تخزين المفاتيح المستخدم للتوقيع على التطبيق",
|
||||
"deletedKeystore": "تم حذف مِلَفّ تخزين المفاتيح",
|
||||
"regenerateKeystoreLabel": "حذف ملف تخزين المفاتيح",
|
||||
"regenerateKeystoreHint": "حذف ملف تخزين المفاتيح المستخدم للتوقيع على التطبيق",
|
||||
"regeneratedKeystore": "تم حذف مِلَفّ تخزين المفاتيح",
|
||||
"deleteTempDirLabel": "حذف الملفات المؤقتة",
|
||||
"deleteTempDirHint": "حذف الملفات المؤقتة غير المستخدمة",
|
||||
"deletedTempDir": "تم حذف الملفات المؤقتة",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "Heç bir tətbiq seçilməyib",
|
||||
"noAppsLabel": "Heç bir tətbiq tapılmadı",
|
||||
"currentVersion": "Hazırkı",
|
||||
"recommendedVersion": "Tövsiyyə edilən",
|
||||
"anyVersion": "istənilən"
|
||||
"recommendedVersion": "Tövsiyyə edilən"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Yamaqları seçin",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Keşikçi jurnalı",
|
||||
"sentryHint": "ReVanced Manager-i inkişaf etdirməyimizə kömək etməsi üçün anonim jurnallar göndərin",
|
||||
"restartAppForChanges": "Dəyişiklikləri tətbiq etmək üçün tətbiqi yenidən başlat",
|
||||
"deleteKeystoreLabel": "Keystore-u sil",
|
||||
"deleteKeystoreHint": "Tətbiqi imzalamaq üçün istifadə edilən keystoru-u sil",
|
||||
"deletedKeystore": "Keystore silindi",
|
||||
"regenerateKeystoreLabel": "Keystore-u sil",
|
||||
"regenerateKeystoreHint": "Tətbiqi imzalamaq üçün istifadə edilən keystoru-u sil",
|
||||
"regeneratedKeystore": "Keystore silindi",
|
||||
"deleteTempDirLabel": "Müvəqqəti faylları sil",
|
||||
"deleteTempDirHint": "İstifadə edilməyən müvəqqəti faylları sil",
|
||||
"deletedTempDir": "Müvəqqəti fayllar silindi",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Няма избрано приложение",
|
||||
"noAppsLabel": "Няма намерени приложения",
|
||||
"currentVersion": "Текуща",
|
||||
"recommendedVersion": "Препоръчана",
|
||||
"anyVersion": "всяка"
|
||||
"recommendedVersion": "Препоръчана"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Изберете модификации",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Sentry логване",
|
||||
"sentryHint": "Пращайте анонимни логове за да ни помогнете да подобрим ReVanced Manager",
|
||||
"restartAppForChanges": "Рестартирайте приложението, за да се приложат промените",
|
||||
"deleteKeystoreLabel": "Изтриване на keystore",
|
||||
"deleteKeystoreHint": "Изтриване на keystore използван за подписване на приложението",
|
||||
"deletedKeystore": "Keystore изтрит",
|
||||
"regenerateKeystoreLabel": "Изтриване на keystore",
|
||||
"regenerateKeystoreHint": "Изтриване на keystore използван за подписване на приложението",
|
||||
"regeneratedKeystore": "Keystore изтрит",
|
||||
"deleteTempDirLabel": "Изтриване на временни файлове",
|
||||
"deleteTempDirHint": "Изтриване на неизползвани временни файлове",
|
||||
"deletedTempDir": "Временните файлове са изтрити",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "কোনো অ্যাপ্লিকেশন নির্বাচন করা হয়নি",
|
||||
"noAppsLabel": "কোন অ্যাপ্লিকেশন পাওয়া যায়নি",
|
||||
"currentVersion": "বর্তমান",
|
||||
"recommendedVersion": "প্রস্তাবিত",
|
||||
"anyVersion": "যেকোনো সংস্করণ"
|
||||
"recommendedVersion": "প্রস্তাবিত"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "প্যাচ নির্বাচন করুন",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "সেন্ট্রি লগিং",
|
||||
"sentryHint": "ReVanced Manager উন্নত করতে আমাদের সাহায্য করতে বেনামী লগ পাঠান",
|
||||
"restartAppForChanges": "পরিবর্তনগুলি প্রয়োগ করতে অ্যাপটি পুনরায় চালু করুন",
|
||||
"deleteKeystoreLabel": "কীস্টোর মুছুন",
|
||||
"deleteKeystoreHint": "প্যাচড অ্যাপ সাইন করতে ব্যবহৃত কীস্টোরটি মুছুন",
|
||||
"deletedKeystore": "কীস্টোর মুছে ফেলা হয়েছে",
|
||||
"regenerateKeystoreLabel": "কীস্টোর মুছুন",
|
||||
"regenerateKeystoreHint": "প্যাচড অ্যাপ সাইন করতে ব্যবহৃত কীস্টোরটি মুছুন",
|
||||
"regeneratedKeystore": "কীস্টোর মুছে ফেলা হয়েছে",
|
||||
"deleteTempDirLabel": "অস্থায়ী ফাইল মুছুন",
|
||||
"deleteTempDirHint": "অব্যবহৃত অস্থায়ী ফাইল মুছুন",
|
||||
"deletedTempDir": "অস্থায়ী ফাইল মুছে ফেলা হয়েছে",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "Nebyla vybrána žádná aplikace",
|
||||
"noAppsLabel": "Nebyly nalezeny žádné aplikace",
|
||||
"currentVersion": "Aktuální",
|
||||
"recommendedVersion": "Doporučeno",
|
||||
"anyVersion": "jakákoliv"
|
||||
"recommendedVersion": "Doporučeno"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Vybrat záplaty",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Log Sentry",
|
||||
"sentryHint": "Odeslat anonymní protokoly, které nám pomohou zlepšit ReVanced Manager",
|
||||
"restartAppForChanges": "Pro aplikování změn restartuj aplikaci",
|
||||
"deleteKeystoreLabel": "Vymazat úložiště klíčů",
|
||||
"deleteKeystoreHint": "Smazat úložiště klíčů používané k podpisu aplikace",
|
||||
"deletedKeystore": "Úložiště klíčů bylo smazáno",
|
||||
"regenerateKeystoreLabel": "Vymazat úložiště klíčů",
|
||||
"regenerateKeystoreHint": "Smazat úložiště klíčů používané k podpisu aplikace",
|
||||
"regeneratedKeystore": "Úložiště klíčů bylo smazáno",
|
||||
"deleteTempDirLabel": "Odstranit dočasné soubory",
|
||||
"deleteTempDirHint": "Odstranit nepoužité dočasné soubory",
|
||||
"deletedTempDir": "Dočasné soubory byly smazány",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Ingen applikation valgt",
|
||||
"noAppsLabel": "Ingen applikationer fundet",
|
||||
"currentVersion": "Nuværende",
|
||||
"recommendedVersion": "Anbefalet",
|
||||
"anyVersion": "enhver"
|
||||
"recommendedVersion": "Anbefalet"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Vælg patches",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Sentry logning",
|
||||
"sentryHint": "Send anonyme logfiler for at hjælpe os med at forbedre ReVanced Manager",
|
||||
"restartAppForChanges": "Genstart appen for at anvende ændringer",
|
||||
"deleteKeystoreLabel": "Slet keystore",
|
||||
"deleteKeystoreHint": "Slet keystore der bruges til at signere appen",
|
||||
"deletedKeystore": "Keystore slettet",
|
||||
"regenerateKeystoreLabel": "Slet keystore",
|
||||
"regenerateKeystoreHint": "Slet keystore der bruges til at signere appen",
|
||||
"regeneratedKeystore": "Keystore slettet",
|
||||
"deleteTempDirLabel": "Slet midlertidige filer",
|
||||
"deleteTempDirHint": "Slet ubrugte midlertidige filer",
|
||||
"deletedTempDir": "Midlertidige filer slettet",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Keine App ausgewählt",
|
||||
"noAppsLabel": "Keine Apps gefunden",
|
||||
"currentVersion": "Aktuell",
|
||||
"recommendedVersion": "Empfohlen",
|
||||
"anyVersion": "beliebig"
|
||||
"recommendedVersion": "Empfohlen"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Patches auswählen",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Sentry-Protokollierung",
|
||||
"sentryHint": "Sende anonyme Protokolle, um den ReVanced Manager zu verbessern",
|
||||
"restartAppForChanges": "Starte die App neu um die Änderungen zu übernehmen",
|
||||
"deleteKeystoreLabel": "Den Schlüsselspeicher löschen",
|
||||
"deleteKeystoreHint": "Löschen des Schlüsselspeichers, der zum Signieren der Anwendung verwendet wurde",
|
||||
"deletedKeystore": "Schlüsselspeicher gelöscht",
|
||||
"regenerateKeystoreLabel": "Den Schlüsselspeicher löschen",
|
||||
"regenerateKeystoreHint": "Löschen des Schlüsselspeichers, der zum Signieren der Anwendung verwendet wurde",
|
||||
"regeneratedKeystore": "Schlüsselspeicher gelöscht",
|
||||
"deleteTempDirLabel": "Lösche temporäre Dateien",
|
||||
"deleteTempDirHint": "Unbenutzte temporäre Dateien löschen",
|
||||
"deletedTempDir": "Temporäre Dateien gelöscht",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Δεν έχει επιλεχθεί εφαρμογή",
|
||||
"noAppsLabel": "Δεν βρέθηκαν εφαρμογές",
|
||||
"currentVersion": "Τρέχουσα",
|
||||
"recommendedVersion": "Προτεινόμενη",
|
||||
"anyVersion": "οποιαδήποτε"
|
||||
"recommendedVersion": "Προτεινόμενη"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Επιλέξτε τροποποιήσεις",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Αρχεία καταγραφής «Sentry»",
|
||||
"sentryHint": "Στείλτε ανώνυμα αρχεία καταγραφής για να μας βοηθήσετε να βελτιώσουμε το ReVanced Manager",
|
||||
"restartAppForChanges": "Επανεκκινήστε την εφαρμογή για να εφαρμόσετε αλλαγές",
|
||||
"deleteKeystoreLabel": "Διαγραφή κλειδιών",
|
||||
"deleteKeystoreHint": "Διαγράψτε το κλειδί που χρησιμοποιείται για την υπογραφή της εφαρμογής",
|
||||
"deletedKeystore": "Το κλειδί διαγράφηκε",
|
||||
"regenerateKeystoreLabel": "Διαγραφή κλειδιών",
|
||||
"regenerateKeystoreHint": "Διαγράψτε το κλειδί που χρησιμοποιείται για την υπογραφή της εφαρμογής",
|
||||
"regeneratedKeystore": "Το κλειδί διαγράφηκε",
|
||||
"deleteTempDirLabel": "Διαγραφή προσωρινών αρχείων",
|
||||
"deleteTempDirHint": "Διαγραφή των αχρησιμοποίητων προσωρινών αρχείων",
|
||||
"deletedTempDir": "Τα προσωρινά αρχεία διαγράφηκαν",
|
||||
|
@ -4,6 +4,8 @@
|
||||
"updateButton": "Update",
|
||||
"enabledLabel": "Enabled",
|
||||
"disabledLabel": "Disabled",
|
||||
"installed":"Installed: {version}",
|
||||
"suggested":"Suggested: {version}",
|
||||
"yesButton": "Yes",
|
||||
"noButton": "No",
|
||||
"warning": "Warning",
|
||||
@ -13,22 +15,35 @@
|
||||
"settingsTab": "Settings"
|
||||
},
|
||||
"homeView": {
|
||||
"refreshSuccess": "Refreshed successfully",
|
||||
"widgetTitle": "Dashboard",
|
||||
|
||||
"updatesSubtitle": "Updates",
|
||||
"patchedSubtitle": "Patched applications",
|
||||
|
||||
"updatesAvailable": "Updates available",
|
||||
"noUpdates": "No updates available",
|
||||
|
||||
"WIP": "Work in progress...",
|
||||
|
||||
"noInstallations": "No patched applications installed",
|
||||
"installed": "Installed",
|
||||
"installUpdate": "Continue to install the update?",
|
||||
|
||||
"updateDialogTitle": "Update Manager",
|
||||
"updateChangelogTitle": "Changelog",
|
||||
|
||||
"notificationTitle": "Update downloaded",
|
||||
"notificationText": "Tap to install the update",
|
||||
|
||||
"downloadingMessage": "Downloading update...",
|
||||
"downloadedMessage": "Update downloaded!",
|
||||
|
||||
"installingMessage": "Installing update...",
|
||||
|
||||
"errorDownloadMessage": "Unable to download update",
|
||||
"errorInstallMessage": "Unable to install update",
|
||||
|
||||
"noConnection": "No internet connection",
|
||||
"updatesDisabled": "Updating a patched app is currently disabled. Repatch the app again."
|
||||
},
|
||||
@ -47,20 +62,27 @@
|
||||
"patcherView": {
|
||||
"widgetTitle": "Patcher",
|
||||
"patchButton": "Patch",
|
||||
"patchDialogText": "You have selected a resource patch and a split APK installation has been detected, so patching errors may occur.\nAre you sure you want to proceed?"
|
||||
|
||||
"patchDialogText": "You have selected a resource patch and a split APK installation has been detected, so patching errors may occur.\nAre you sure you want to proceed?",
|
||||
"armv7WarningDialogText": "Patching on ARMv7 devices is not yet supported and might fail. Proceed anyways?",
|
||||
"splitApkWarningDialogText": "Patching a split APK is not yet supported and might fail. Proceed anyways?"
|
||||
},
|
||||
"appSelectorCard": {
|
||||
"widgetTitle": "Select an application",
|
||||
"widgetTitleSelected": "Selected application",
|
||||
"widgetSubtitle": "No application selected",
|
||||
|
||||
"noAppsLabel": "No applications found",
|
||||
"notInstalled":"App not installed",
|
||||
|
||||
"currentVersion": "Current",
|
||||
"recommendedVersion": "Recommended",
|
||||
"anyVersion": "any"
|
||||
"suggestedVersion": "Suggested",
|
||||
"allVersions": "All versions"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Select patches",
|
||||
"widgetTitleSelected": "Selected patches",
|
||||
|
||||
"widgetSubtitle": "Select an application first",
|
||||
"widgetEmptySubtitle": "No patches selected"
|
||||
},
|
||||
@ -71,20 +93,34 @@
|
||||
"appSelectorView": {
|
||||
"viewTitle": "Select an application",
|
||||
"searchBarHint": "Search applications",
|
||||
|
||||
"storageButton": "Storage",
|
||||
"errorMessage": "Unable to use selected application"
|
||||
"selectFromStorageButton": "Select from storage",
|
||||
|
||||
"errorMessage": "Unable to use selected application",
|
||||
|
||||
"downloadToast": "Download function is not available yet",
|
||||
|
||||
"featureNotAvailable": "Feature not implemented",
|
||||
"featureNotAvailableText": "This application is a split APK and cannot be selected. Unfortunately, this feature is only available for rooted users at the moment. However, you can still install the application by selecting its APK files from your device's storage instead"
|
||||
},
|
||||
"patchesSelectorView": {
|
||||
"viewTitle": "Select patches",
|
||||
"searchBarHint": "Search patches",
|
||||
|
||||
"doneButton": "Done",
|
||||
"recommended": "Recommended",
|
||||
"all": "All",
|
||||
|
||||
"default": "Default",
|
||||
"defaultTooltip": "Select all default patches",
|
||||
|
||||
"none": "None",
|
||||
"noneTooltip": "Deselect all patches",
|
||||
|
||||
"loadPatchesSelection": "Load patches selection",
|
||||
"noSavedPatches": "No saved patches for the selected app.\nPress Done to save current selection.",
|
||||
"noPatchesFound": "No patches found for the selected app",
|
||||
"selectAllPatchesWarningContent": "You are about to select all patches, that includes unrecommended patches and can cause unwanted behavior."
|
||||
|
||||
"selectAllPatchesWarningContent": "You are about to select all patches, that includes non-suggested patches and can cause unwanted behavior."
|
||||
},
|
||||
"patchItem": {
|
||||
"unsupportedDialogText": "Selecting this patch may result in patching errors.\n\nApp version: {packageVersion}\nSupported versions:\n{supportedVersions}",
|
||||
@ -96,11 +132,14 @@
|
||||
"installRootButton": "Install as Root",
|
||||
"openButton": "Open",
|
||||
"shareButton": "Share file",
|
||||
|
||||
"notificationTitle": "ReVanced Manager is patching",
|
||||
"notificationText": "Tap to return to the installer",
|
||||
|
||||
"shareApkMenuOption": "Share APK",
|
||||
"exportApkMenuOption": "Export APK",
|
||||
"shareLogMenuOption": "Share log",
|
||||
|
||||
"installErrorDialogTitle": "Error",
|
||||
"installErrorDialogText1": "Root install is not possible with the current patches selection.\nRepatch your app or choose non-root install.",
|
||||
"installErrorDialogText2": "Non-root install is not possible with the current patches selection.\nRepatch your app or choose root install if you have your device rooted.",
|
||||
@ -109,65 +148,99 @@
|
||||
},
|
||||
"settingsView": {
|
||||
"widgetTitle": "Settings",
|
||||
|
||||
"appearanceSectionTitle": "Appearance",
|
||||
"teamSectionTitle": "Team",
|
||||
"infoSectionTitle": "Info",
|
||||
"advancedSectionTitle": "Advanced",
|
||||
"exportSectionTitle": "Import & export",
|
||||
"logsSectionTitle": "Logs",
|
||||
|
||||
"darkThemeLabel": "Dark mode",
|
||||
"darkThemeHint": "Welcome to the dark side",
|
||||
|
||||
"dynamicThemeLabel": "Material You",
|
||||
"dynamicThemeHint": "Enjoy an experience closer to your device",
|
||||
|
||||
"languageLabel": "Language",
|
||||
"englishOption": "English",
|
||||
|
||||
"sourcesLabel": "Sources",
|
||||
"sourcesLabelHint": "Configure your custom sources",
|
||||
"hostRepositoryLabel": "Repository API",
|
||||
"orgPatchesLabel": "Patches organization",
|
||||
"sourcesPatchesLabel": "Patches source",
|
||||
"orgIntegrationsLabel": "Integrations organization",
|
||||
"sourcesIntegrationsLabel": "Integrations source",
|
||||
"sourcesResetDialogTitle": "Reset",
|
||||
"sourcesResetDialogText": "Are you sure you want to reset custom sources to their default values?",
|
||||
"apiURLResetDialogText": "Are you sure you want to reset API URL to its default value?",
|
||||
"contributorsLabel": "Contributors",
|
||||
"contributorsHint": "A list of contributors of ReVanced",
|
||||
"logsLabel": "Logs",
|
||||
"logsHint": "Share Manager's logs",
|
||||
|
||||
"apiURLLabel": "API URL",
|
||||
"apiURLHint": "Configure your custom API URL",
|
||||
"selectApiURL": "API URL",
|
||||
"hostRepositoryLabel": "Repository API",
|
||||
"orgPatchesLabel": "Patches organization",
|
||||
"sourcesPatchesLabel": "Patches source",
|
||||
"orgIntegrationsLabel": "Integrations organization",
|
||||
|
||||
"contributorsLabel": "Contributors",
|
||||
"contributorsHint": "A list of contributors of ReVanced",
|
||||
|
||||
"logsLabel": "Logs",
|
||||
"logsHint": "Share Manager's logs",
|
||||
|
||||
"experimentalUniversalPatchesLabel": "Experimental universal patches support",
|
||||
"experimentalUniversalPatchesHint": "Display all applications to use with universal patches, loading list of apps may be slower",
|
||||
"experimentalPatchesLabel": "Experimental patches support",
|
||||
"experimentalPatchesHint": "Enable usage of unsupported patches in any app version",
|
||||
"enabledExperimentalPatches": "Experimental patches support enabled",
|
||||
"exportSectionTitle": "Import & export",
|
||||
|
||||
"aboutLabel": "About",
|
||||
"snackbarMessage": "Copied to clipboard",
|
||||
"sentryLabel": "Sentry logging",
|
||||
"sentryHint": "Send anonymous logs to help us improve ReVanced Manager",
|
||||
"restartAppForChanges": "Restart the app to apply changes",
|
||||
"deleteKeystoreLabel": "Delete keystore",
|
||||
"deleteKeystoreHint": "Delete the keystore used to sign the app",
|
||||
"deletedKeystore": "Keystore deleted",
|
||||
|
||||
"deleteTempDirLabel": "Delete temporary files",
|
||||
"deleteTempDirHint": "Delete unused temporary files",
|
||||
"deletedTempDir": "Temporary files deleted",
|
||||
|
||||
"exportPatchesLabel": "Export patches selection",
|
||||
"exportPatchesHint": "Export patches selection to a JSON file",
|
||||
"exportedPatches": "Patches selection exported",
|
||||
"noExportFileFound": "No patches selection to export",
|
||||
|
||||
"importPatchesLabel": "Import patches selection",
|
||||
"importPatchesHint": "Import patches selection from a JSON file",
|
||||
"importedPatches": "Patches selection imported",
|
||||
|
||||
"resetStoredPatchesLabel": "Reset patches",
|
||||
"resetStoredPatchesHint": "Reset the stored patches selection",
|
||||
|
||||
"resetStoredPatchesDialogTitle": "Reset patches selection?",
|
||||
"resetStoredPatchesDialogText": "Resetting patches selection will remove all selected patches.",
|
||||
"resetStoredPatches": "Patches selection has been reset",
|
||||
"jsonSelectorErrorMessage": "Unable to use selected JSON file",
|
||||
|
||||
"deleteLogsLabel": "Delete logs",
|
||||
"deleteLogsHint": "Delete collected manager logs",
|
||||
"deletedLogs": "Logs deleted"
|
||||
"deletedLogs": "Logs deleted",
|
||||
|
||||
"regenerateKeystoreLabel": "Regenerate keystore",
|
||||
"regenerateKeystoreHint": "Regenerate the keystore used to sign the app",
|
||||
|
||||
"regenerateKeystoreDialogTitle": "Regenerate keystore?",
|
||||
"regenerateKeystoreDialogText": "Patched apps signed with the old keystore will no longer be able to update.",
|
||||
"regeneratedKeystore": "Keystore regenerated",
|
||||
|
||||
"exportKeystoreLabel": "Export keystore",
|
||||
"exportKeystoreHint": "Export keystore used to sign apps",
|
||||
"exportedKeystore": "Keystore exported",
|
||||
"noKeystoreExportFileFound": "No keystore to export",
|
||||
|
||||
"importKeystoreLabel": "Import keystore",
|
||||
"importKeystoreHint": "Import keystore used to sign apps",
|
||||
"importedKeystore": "Keystore imported",
|
||||
|
||||
"selectKeystorePassword": "Keystore Password",
|
||||
"selectKeystorePasswordHint": "Select keystore password used to sign the apk",
|
||||
|
||||
"jsonSelectorErrorMessage": "Unable to use selected JSON file",
|
||||
"keystoreSelectorErrorMessage": "Unable to use selected KEYSTORE file"
|
||||
},
|
||||
"appInfoView": {
|
||||
"widgetTitle": "App info",
|
||||
@ -175,18 +248,22 @@
|
||||
"uninstallButton": "Uninstall",
|
||||
"patchButton": "Patch",
|
||||
"unpatchButton": "Unpatch",
|
||||
"unpatchDialogText": "Are you sure you want to unpatch this app?",
|
||||
"rootDialogTitle": "Error",
|
||||
|
||||
"unpatchDialogText": "Are you sure you want to unpatch this app?",
|
||||
"rootDialogText": "App was installed with superuser permissions, but currently ReVanced Manager has no permissions.\nPlease grant superuser permissions first.",
|
||||
|
||||
"packageNameLabel": "Package name",
|
||||
"originalPackageNameLabel": "Original package name",
|
||||
"installTypeLabel": "Installation type",
|
||||
"rootTypeLabel": "Root",
|
||||
"nonRootTypeLabel": "Non-root",
|
||||
"patchedDateLabel": "Patched date",
|
||||
"patchedDateHint": "{date} at {time}",
|
||||
"appliedPatchesLabel": "Applied patches",
|
||||
|
||||
"patchedDateHint": "{date} at {time}",
|
||||
"appliedPatchesHint": "{quantity} applied patches",
|
||||
|
||||
"updateNotImplemented": "This feature has not been implemented yet"
|
||||
},
|
||||
"contributorsView": {
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Ninguna aplicación seleccionada",
|
||||
"noAppsLabel": "No se encontraron aplicaciones",
|
||||
"currentVersion": "Versión actual",
|
||||
"recommendedVersion": "Versión recomendada",
|
||||
"anyVersion": "cualquiera"
|
||||
"recommendedVersion": "Versión recomendada"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Seleccionar parches",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Registro Sentry",
|
||||
"sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager",
|
||||
"restartAppForChanges": "Reinicie la app para aplicar los cambios",
|
||||
"deleteKeystoreLabel": "Eliminar keystore",
|
||||
"deleteKeystoreHint": "Eliminar el keystore usado para firmar la app",
|
||||
"deletedKeystore": "Keystore eliminado",
|
||||
"regenerateKeystoreLabel": "Eliminar keystore",
|
||||
"regenerateKeystoreHint": "Eliminar el keystore usado para firmar la app",
|
||||
"regeneratedKeystore": "Keystore eliminado",
|
||||
"deleteTempDirLabel": "Borrar archivos temporales",
|
||||
"deleteTempDirHint": "Eliminar archivos temporales no utilizados",
|
||||
"deletedTempDir": "Archivos temporales eliminados",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "Ninguna aplicación seleccionada",
|
||||
"noAppsLabel": "No se encontraron aplicaciones",
|
||||
"currentVersion": "Versión actual",
|
||||
"recommendedVersion": "Versión recomendada",
|
||||
"anyVersion": "Cualquier versión"
|
||||
"recommendedVersion": "Versión recomendada"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Seleccionar parches",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Registro centinela",
|
||||
"sentryHint": "Enviar registros anónimos para ayudarnos a mejorar ReVanced Manager",
|
||||
"restartAppForChanges": "Reinicie la aplicación para aplicar los cambios",
|
||||
"deleteKeystoreLabel": "Eliminar keystore",
|
||||
"deleteKeystoreHint": "Eliminar el keystore usado para firmar la app",
|
||||
"deletedKeystore": "Keystore eliminado",
|
||||
"regenerateKeystoreLabel": "Eliminar keystore",
|
||||
"regenerateKeystoreHint": "Eliminar el keystore usado para firmar la app",
|
||||
"regeneratedKeystore": "Keystore eliminado",
|
||||
"deleteTempDirLabel": "Borrar archivos temporales",
|
||||
"deleteTempDirHint": "Eliminar archivos temporales sin utilizar",
|
||||
"deletedTempDir": "Archivos temporales eliminados",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "Sovellusta ei ole valittu",
|
||||
"noAppsLabel": "Sovelluksia ei löytynyt",
|
||||
"currentVersion": "Nykyinen",
|
||||
"recommendedVersion": "Suositeltu",
|
||||
"anyVersion": "mikä tahansa"
|
||||
"recommendedVersion": "Suositeltu"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Valitse paikkaukset",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Sentry-lokikirjaus",
|
||||
"sentryHint": "Lähetä nimettömiä tietoja auttaaksesi ReVanced Managerin kehityksessä",
|
||||
"restartAppForChanges": "Käynnistä sovellus uudestaan muutosten käyttöönottamiseksi",
|
||||
"deleteKeystoreLabel": "Poista avainsäilö",
|
||||
"deleteKeystoreHint": "Poista sovelluksen allekirjoitukseen käytetty avainsäilö",
|
||||
"deletedKeystore": "Avainsäilö poistettiin",
|
||||
"regenerateKeystoreLabel": "Poista avainsäilö",
|
||||
"regenerateKeystoreHint": "Poista sovelluksen allekirjoitukseen käytetty avainsäilö",
|
||||
"regeneratedKeystore": "Avainsäilö poistettiin",
|
||||
"deleteTempDirLabel": "Poista väliaikaistiedostot",
|
||||
"deleteTempDirHint": "Poista käyttämättömät väliaikaistiedostot",
|
||||
"deletedTempDir": "Väliaikaistiedostot poistettiin",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Aucune application sélectionnée",
|
||||
"noAppsLabel": "Aucune application trouvée",
|
||||
"currentVersion": "Version actuelle",
|
||||
"recommendedVersion": "Version recommandée",
|
||||
"anyVersion": "n'importe laquelle"
|
||||
"recommendedVersion": "Version recommandée"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Sélectionner les patchs",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Journal sentinel",
|
||||
"sentryHint": "Envoyer des journaux anonymes pour nous aider à améliorer ReVanced Manager",
|
||||
"restartAppForChanges": "Redémarrez l'application pour appliquer les changements",
|
||||
"deleteKeystoreLabel": "Supprimer le magasin de clés",
|
||||
"deleteKeystoreHint": "Supprimer le magasin de clés utilisé pour signer l'application",
|
||||
"deletedKeystore": "Magasin de clés supprimé",
|
||||
"regenerateKeystoreLabel": "Supprimer le magasin de clés",
|
||||
"regenerateKeystoreHint": "Supprimer le magasin de clés utilisé pour signer l'application",
|
||||
"regeneratedKeystore": "Magasin de clés supprimé",
|
||||
"deleteTempDirLabel": "Supprimer les fichiers temporaires",
|
||||
"deleteTempDirHint": "Supprimer les fichiers temporaires inutilisés",
|
||||
"deletedTempDir": "Fichiers temporaires supprimés",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "कोई ऐप्लकैशन चुना हुआ नहीं",
|
||||
"noAppsLabel": "कोई एप्लिकेशन नहीं मिला।",
|
||||
"currentVersion": "वर्तमान",
|
||||
"recommendedVersion": "अनुशंसित",
|
||||
"anyVersion": "कोई"
|
||||
"recommendedVersion": "अनुशंसित"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "पैच चुने",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "संतरी लॉगिंग",
|
||||
"sentryHint": "उन्नत प्रबंधक को बेहतर बनाने में हमारी सहायता करने के लिए अनाम लॉग भेजें",
|
||||
"restartAppForChanges": "Restart the app to apply changes",
|
||||
"deleteKeystoreLabel": "कीस्टोर मिटाएं",
|
||||
"deleteKeystoreHint": "ऐप पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कीस्टोर हटाएं",
|
||||
"deletedKeystore": "कीस्टोर हटा दिया गया",
|
||||
"regenerateKeystoreLabel": "कीस्टोर मिटाएं",
|
||||
"regenerateKeystoreHint": "ऐप पर हस्ताक्षर करने के लिए उपयोग की जाने वाली कीस्टोर हटाएं",
|
||||
"regeneratedKeystore": "कीस्टोर हटा दिया गया",
|
||||
"deleteTempDirLabel": "अस्थाई फ़ाइलें मिटायें",
|
||||
"deleteTempDirHint": "अप्रयुक्त अस्थाई फ़ाइलें मिटायें",
|
||||
"deletedTempDir": "क्षणिक फ़ाईल मिटाए गए।",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "Nincs kiválasztott alkalmazás",
|
||||
"noAppsLabel": "Nem találhatóak alkalmazások",
|
||||
"currentVersion": "Jelenlegi",
|
||||
"recommendedVersion": "Ajánlott",
|
||||
"anyVersion": "bármely"
|
||||
"recommendedVersion": "Ajánlott"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Patchek kiválasztása",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Sentry naplózás",
|
||||
"sentryHint": "Névtelen használati adatok küldésével hozzájárulhatsz, hogy a ReVanced Manager még jobb legyen",
|
||||
"restartAppForChanges": "Indítsd újra az alkalmazást a változások alkalmazásához",
|
||||
"deleteKeystoreLabel": "Kulcstartó törlése",
|
||||
"deleteKeystoreHint": "Törli az alkalmazás aláírásához használt kulcstartót",
|
||||
"deletedKeystore": "Kulcstartó törölve",
|
||||
"regenerateKeystoreLabel": "Kulcstartó törlése",
|
||||
"regenerateKeystoreHint": "Törli az alkalmazás aláírásához használt kulcstartót",
|
||||
"regeneratedKeystore": "Kulcstartó törölve",
|
||||
"deleteTempDirLabel": "Ideiglenes fájlok törlése",
|
||||
"deleteTempDirHint": "Felesleges átmeneti fájlok törlése",
|
||||
"deletedTempDir": "Ideiglenes fájlok törölve",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Tidak ada aplikasi yang dipilih",
|
||||
"noAppsLabel": "Aplikasi tidak ditemukan",
|
||||
"currentVersion": "Saat ini",
|
||||
"recommendedVersion": "Rekomendasi",
|
||||
"anyVersion": "semua"
|
||||
"recommendedVersion": "Rekomendasi"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Pilih Modifikasi",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Log sentry",
|
||||
"sentryHint": "Kirim log anonim untuk membantu kami meningkatkan ReVanced Manager",
|
||||
"restartAppForChanges": "Mulai ulang aplikasi untuk menerapkan perubahan",
|
||||
"deleteKeystoreLabel": "Hapus penyimpanan kunci",
|
||||
"deleteKeystoreHint": "Hapus penyimpanan kunci yang digunakan untuk menandatangani aplikasi",
|
||||
"deletedKeystore": "Penyimpanan kunci dihapus",
|
||||
"regenerateKeystoreLabel": "Hapus penyimpanan kunci",
|
||||
"regenerateKeystoreHint": "Hapus penyimpanan kunci yang digunakan untuk menandatangani aplikasi",
|
||||
"regeneratedKeystore": "Penyimpanan kunci dihapus",
|
||||
"deleteTempDirLabel": "Hapus berkas sementara",
|
||||
"deleteTempDirHint": "Hapus berkas sementara yang tidak dipakai",
|
||||
"deletedTempDir": "Berkas sementara dihapus",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Nessuna applicazione selezionata",
|
||||
"noAppsLabel": "Nessuna applicazione trovata",
|
||||
"currentVersion": "Attuale",
|
||||
"recommendedVersion": "Consigliata",
|
||||
"anyVersion": "qualsiasi"
|
||||
"recommendedVersion": "Consigliata"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Seleziona patch",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Log di Sentry",
|
||||
"sentryHint": "Invia log anonimi per aiutarci a migliorare ReVanced Manager",
|
||||
"restartAppForChanges": "Riavvia l'app per applicare le modifiche",
|
||||
"deleteKeystoreLabel": "Elimina keystore",
|
||||
"deleteKeystoreHint": "Elimina il keystore usato per firmare l'applicazione",
|
||||
"deletedKeystore": "Keystore eliminato",
|
||||
"regenerateKeystoreLabel": "Elimina keystore",
|
||||
"regenerateKeystoreHint": "Elimina il keystore usato per firmare l'applicazione",
|
||||
"regeneratedKeystore": "Keystore eliminato",
|
||||
"deleteTempDirLabel": "Elimina file temporanei",
|
||||
"deleteTempDirHint": "Elimina i file temporanei non utilizzati",
|
||||
"deletedTempDir": "File temporanei eliminati",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "선택된 앱 없음",
|
||||
"noAppsLabel": "앱이 발견되지 않음",
|
||||
"currentVersion": "현재 버전",
|
||||
"recommendedVersion": "권장 버전",
|
||||
"anyVersion": "모든 버전"
|
||||
"recommendedVersion": "권장 버전"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "패치를 선택하세요",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Sentry 로깅",
|
||||
"sentryHint": "익명의 로그를 보내 ReVanced Manager를 개선할 수 있도록 도와주세요",
|
||||
"restartAppForChanges": "변경 사항을 적용하려면 앱을 다시 시작하세요",
|
||||
"deleteKeystoreLabel": "키스토어 제거",
|
||||
"deleteKeystoreHint": "앱을 서명하기 위해 사용되는 키스토어를 제거합니다.",
|
||||
"deletedKeystore": "키스토어 제거됨",
|
||||
"regenerateKeystoreLabel": "키스토어 제거",
|
||||
"regenerateKeystoreHint": "앱을 서명하기 위해 사용되는 키스토어를 제거합니다.",
|
||||
"regeneratedKeystore": "키스토어 제거됨",
|
||||
"deleteTempDirLabel": "임시 파일 삭제",
|
||||
"deleteTempDirHint": "사용되지 않은 임시 파일 삭제",
|
||||
"deletedTempDir": "임시 파일 삭제됨",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Nepasirinkta programa",
|
||||
"noAppsLabel": "Nerastos jokios programos",
|
||||
"currentVersion": "Dabartinė",
|
||||
"recommendedVersion": "Rekomenduojama",
|
||||
"anyVersion": "bet kokia"
|
||||
"recommendedVersion": "Rekomenduojama"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Pasirinkite modifikacijas",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Klaidų rinkimo įrankio įrašai",
|
||||
"sentryHint": "Siųsti anoniminius įrašus, kad padėtumėte mums tobulinti ReVanced Manager",
|
||||
"restartAppForChanges": "Iš naujo paleiskite programą, kad modifikacijos įsigaliotų",
|
||||
"deleteKeystoreLabel": "Ištrinti keystore",
|
||||
"deleteKeystoreHint": "Ištrinti keystore kuris naudojamas pasirašyti programą",
|
||||
"deletedKeystore": "Keystore ištrintas",
|
||||
"regenerateKeystoreLabel": "Ištrinti keystore",
|
||||
"regenerateKeystoreHint": "Ištrinti keystore kuris naudojamas pasirašyti programą",
|
||||
"regeneratedKeystore": "Keystore ištrintas",
|
||||
"deleteTempDirLabel": "Ištrinti laikinus failus",
|
||||
"deleteTempDirHint": "Ištrinti nenaudojamus laikinus failus",
|
||||
"deletedTempDir": "Laikini failai ištrinti",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "Tiada aplikasi dipilih",
|
||||
"noAppsLabel": "Tiada aplikasi ditemui",
|
||||
"currentVersion": "Semasa",
|
||||
"recommendedVersion": "Disyorkan",
|
||||
"anyVersion": "mana-mana"
|
||||
"recommendedVersion": "Disyorkan"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Pilih modifikasi",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Rekod Sentry",
|
||||
"sentryHint": "Hantarkan log anonymous untuk bantu kami menambah baik Revanced Manager",
|
||||
"restartAppForChanges": "Mulakan semula apl untuk menggunakan tetapan",
|
||||
"deleteKeystoreLabel": "Buang keystore",
|
||||
"deleteKeystoreHint": "Buang keystore yang digunakan untuk mengesahkan apl",
|
||||
"deletedKeystore": "Keystore dibuang",
|
||||
"regenerateKeystoreLabel": "Buang keystore",
|
||||
"regenerateKeystoreHint": "Buang keystore yang digunakan untuk mengesahkan apl",
|
||||
"regeneratedKeystore": "Keystore dibuang",
|
||||
"deleteTempDirLabel": "Buang fail sementara",
|
||||
"deleteTempDirHint": "Buang fail sementara yang tidak digunakan",
|
||||
"deletedTempDir": "Fail sementara dibuang",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Nie wybrano aplikacji",
|
||||
"noAppsLabel": "Nie znaleziono aplikacji",
|
||||
"currentVersion": "Aktualna",
|
||||
"recommendedVersion": "Zalecana",
|
||||
"anyVersion": "dowolna"
|
||||
"recommendedVersion": "Zalecana"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Wybierz łatki",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Zapisywanie logów",
|
||||
"sentryHint": "Wysyłaj anonimowe logi, aby pomóc nam ulepszyć ReVanced Manager",
|
||||
"restartAppForChanges": "Zrestartuj aplikację, aby zastosować zmiany",
|
||||
"deleteKeystoreLabel": "Usuń klucz",
|
||||
"deleteKeystoreHint": "Usuń klucz używany do podpisywania aplikacji",
|
||||
"deletedKeystore": "Klucz usunięty",
|
||||
"regenerateKeystoreLabel": "Usuń klucz",
|
||||
"regenerateKeystoreHint": "Usuń klucz używany do podpisywania aplikacji",
|
||||
"regeneratedKeystore": "Klucz usunięty",
|
||||
"deleteTempDirLabel": "Usuń pliki tymczasowe",
|
||||
"deleteTempDirHint": "Usuń nieużywane pliki tymczasowe",
|
||||
"deletedTempDir": "Pliki tymczasowe zostały usunięte",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "Nenhum aplicativo selecionado",
|
||||
"noAppsLabel": "Nenhum app foi encontrado",
|
||||
"currentVersion": "Atual",
|
||||
"recommendedVersion": "Recomendado",
|
||||
"anyVersion": "todos"
|
||||
"recommendedVersion": "Recomendado"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Selecionar patches",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Registro do sentinela de erros",
|
||||
"sentryHint": "Envie registros anônimos para nos ajudar a melhorar o ReVanced Manager",
|
||||
"restartAppForChanges": "Reinicie o app para aplicar as mudanças",
|
||||
"deleteKeystoreLabel": "Apagar registro de chaves",
|
||||
"deleteKeystoreHint": "Apagar o registro de chaves usado para assinar o app",
|
||||
"deletedKeystore": "Registro de chaves apagado",
|
||||
"regenerateKeystoreLabel": "Apagar registro de chaves",
|
||||
"regenerateKeystoreHint": "Apagar o registro de chaves usado para assinar o app",
|
||||
"regeneratedKeystore": "Registro de chaves apagado",
|
||||
"deleteTempDirLabel": "Apagar arquivos temporários",
|
||||
"deleteTempDirHint": "Apagar os arquivos temporários inutilizados",
|
||||
"deletedTempDir": "Arquivos temporários apagados",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Nenhuma aplicação selecionada",
|
||||
"noAppsLabel": "Não foram encontradas aplicações",
|
||||
"currentVersion": "Atual",
|
||||
"recommendedVersion": "Recomendada",
|
||||
"anyVersion": "qualquer"
|
||||
"recommendedVersion": "Recomendada"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Selecionar modificações",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Registo do coletor de erros",
|
||||
"sentryHint": "Enviar registos anónimos para nos ajudar a melhorar o ReVanced Manager",
|
||||
"restartAppForChanges": "Reinicia a aplicação para aplicar as alterações",
|
||||
"deleteKeystoreLabel": "Excluir keystore",
|
||||
"deleteKeystoreHint": "Excluir a keystore usada para assinar a aplicação",
|
||||
"deletedKeystore": "Keystore excluída",
|
||||
"regenerateKeystoreLabel": "Excluir keystore",
|
||||
"regenerateKeystoreHint": "Excluir a keystore usada para assinar a aplicação",
|
||||
"regeneratedKeystore": "Keystore excluída",
|
||||
"deleteTempDirLabel": "Apagar arquivos temporários",
|
||||
"deleteTempDirHint": "Apagar arquivos temporários não utilizados",
|
||||
"deletedTempDir": "Arquivos temporários apagados",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Nicio aplicație selectată",
|
||||
"noAppsLabel": "Nu s-au găsit aplicații",
|
||||
"currentVersion": "Actual",
|
||||
"recommendedVersion": "Recomandat",
|
||||
"anyVersion": "oricare"
|
||||
"recommendedVersion": "Recomandat"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Selectați patch-urile",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Logging de Santinelă",
|
||||
"sentryHint": "Trimite log-uri anonime pentru a ne ajuta să îmbunătățim ReVanced Manager",
|
||||
"restartAppForChanges": "Reporniți aplicația pentru a aplica modificările",
|
||||
"deleteKeystoreLabel": "Ștergeți keystore-ul",
|
||||
"deleteKeystoreHint": "Ștergeți keystore-ul utilizat pentru a însemna aplicația",
|
||||
"deletedKeystore": "Keystore șters",
|
||||
"regenerateKeystoreLabel": "Ștergeți keystore-ul",
|
||||
"regenerateKeystoreHint": "Ștergeți keystore-ul utilizat pentru a însemna aplicația",
|
||||
"regeneratedKeystore": "Keystore șters",
|
||||
"deleteTempDirLabel": "Ștergeți fișierele temporare",
|
||||
"deleteTempDirHint": "Șterge fișierele temporare neutilizate",
|
||||
"deletedTempDir": "Fișierele temporare au fost șterse",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Не выбрано приложение",
|
||||
"noAppsLabel": "Приложения не найдены",
|
||||
"currentVersion": "Текущая",
|
||||
"recommendedVersion": "Рекомендуемая",
|
||||
"anyVersion": "любая"
|
||||
"recommendedVersion": "Рекомендуемая"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Выберите патчи",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Логирование Sentry",
|
||||
"sentryHint": "Отправлять анонимные логи для улучшения ReVanced Manager-а",
|
||||
"restartAppForChanges": "Перезапустите приложение для применения изменений",
|
||||
"deleteKeystoreLabel": "Удалить хранилище ключей",
|
||||
"deleteKeystoreHint": "Удалить хранилище ключей, использованных для подписи приложения",
|
||||
"deletedKeystore": "Хранилище ключей удалено",
|
||||
"regenerateKeystoreLabel": "Удалить хранилище ключей",
|
||||
"regenerateKeystoreHint": "Удалить хранилище ключей, использованных для подписи приложения",
|
||||
"regeneratedKeystore": "Хранилище ключей удалено",
|
||||
"deleteTempDirLabel": "Удалить временные файлы",
|
||||
"deleteTempDirHint": "Удалить неиспользуемые временные файлы",
|
||||
"deletedTempDir": "Временные файлы удалены",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Nie je vybraná žiadna aplikácia",
|
||||
"noAppsLabel": "Nebola nájdená žiadna aplikácia",
|
||||
"currentVersion": "Aktuálne",
|
||||
"recommendedVersion": "Odporúčané",
|
||||
"anyVersion": "akákoľvek"
|
||||
"recommendedVersion": "Odporúčané"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Vyberte záplaty",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Log Sentry",
|
||||
"sentryHint": "Odoslať anonymné protokoly, ktoré nám pomôžu zlepšiť ReVanced Manager",
|
||||
"restartAppForChanges": "Ak chcete použiť zmeny, reštartujte aplikáciu",
|
||||
"deleteKeystoreLabel": "Odstrániť úložisko kľúčov",
|
||||
"deleteKeystoreHint": "Odstrániť úložisko kľúčov použité na podpísanie aplikácie",
|
||||
"deletedKeystore": "Úložisko kľúčov odstránené",
|
||||
"regenerateKeystoreLabel": "Odstrániť úložisko kľúčov",
|
||||
"regenerateKeystoreHint": "Odstrániť úložisko kľúčov použité na podpísanie aplikácie",
|
||||
"regeneratedKeystore": "Úložisko kľúčov odstránené",
|
||||
"deleteTempDirLabel": "Odstrániť dočasné súbory",
|
||||
"deleteTempDirHint": "Odstrániť nepoužívané dočasné súbory",
|
||||
"deletedTempDir": "Dočasné súbory odstránené",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "Nijedna aplikacija nije izabrana",
|
||||
"noAppsLabel": "Nijedna aplikacija nije pronađena",
|
||||
"currentVersion": "Trenutna",
|
||||
"recommendedVersion": "Preporučena",
|
||||
"anyVersion": "bilo koja"
|
||||
"recommendedVersion": "Preporučena"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Izaberite pečeve",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Sentry prikupljanje grešaka",
|
||||
"sentryHint": "Pošaljite anonimnu evidenciju da biste nam pomogli da poboljšamo ReVanced Manager",
|
||||
"restartAppForChanges": "Ponovo pokrenite aplikaciju da biste primenili promene",
|
||||
"deleteKeystoreLabel": "Izbrišite skladište ključeva",
|
||||
"deleteKeystoreHint": "Izbrišite skladište ključeva korišćeno za potpisivanje aplikacije",
|
||||
"deletedKeystore": "Skladište ključeva je izbrisano",
|
||||
"regenerateKeystoreLabel": "Izbrišite skladište ključeva",
|
||||
"regenerateKeystoreHint": "Izbrišite skladište ključeva korišćeno za potpisivanje aplikacije",
|
||||
"regeneratedKeystore": "Skladište ključeva je izbrisano",
|
||||
"deleteTempDirLabel": "Izbrišite privremene datoteke",
|
||||
"deleteTempDirHint": "Izbrišite nekorišćene privremene datoteke",
|
||||
"deletedTempDir": "Privremene datoteke su izbrisane",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "Ниједна апликација није изабрана",
|
||||
"noAppsLabel": "Ниједна апликација није пронађена",
|
||||
"currentVersion": "Тренутна",
|
||||
"recommendedVersion": "Препоручена",
|
||||
"anyVersion": "било која"
|
||||
"recommendedVersion": "Препоручена"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Изаберите печеве",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Sentry прикупљање грешака",
|
||||
"sentryHint": "Пошаљите анонимну евиденцију да бисте нам помогли да побољшамо ReVanced Manager",
|
||||
"restartAppForChanges": "Поново покрените апликацију да бисте применили промене",
|
||||
"deleteKeystoreLabel": "Избришите складиште кључева",
|
||||
"deleteKeystoreHint": "Избришите складиште кључева коришћено за потписивање апликације",
|
||||
"deletedKeystore": "Складиште кључева је избрисано",
|
||||
"regenerateKeystoreLabel": "Избришите складиште кључева",
|
||||
"regenerateKeystoreHint": "Избришите складиште кључева коришћено за потписивање апликације",
|
||||
"regeneratedKeystore": "Складиште кључева је избрисано",
|
||||
"deleteTempDirLabel": "Избришите привремене датотеке",
|
||||
"deleteTempDirHint": "Избришите некоришћене привремене датотеке",
|
||||
"deletedTempDir": "Привремене датотеке су избрисане",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "Ingen app vald",
|
||||
"noAppsLabel": "Inga applikationer hittades",
|
||||
"currentVersion": "Nuvarande",
|
||||
"recommendedVersion": "Rekommenderad",
|
||||
"anyVersion": "alla"
|
||||
"recommendedVersion": "Rekommenderad"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Välj patchar",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Sentry loggning",
|
||||
"sentryHint": "Hjälp oss förbättra ReVanced Manager genom att skicka anonyma loggar",
|
||||
"restartAppForChanges": "Starta om appen för att tillämpa ändringar",
|
||||
"deleteKeystoreLabel": "Radera keystore",
|
||||
"deleteKeystoreHint": "Radera keystore filen som används för att signera appen",
|
||||
"deletedKeystore": "Raderade keystore",
|
||||
"regenerateKeystoreLabel": "Radera keystore",
|
||||
"regenerateKeystoreHint": "Radera keystore filen som används för att signera appen",
|
||||
"regeneratedKeystore": "Raderade keystore",
|
||||
"deleteTempDirLabel": "Ta bort temporära filer",
|
||||
"deleteTempDirHint": "Radera oanvända temporära filer",
|
||||
"deletedTempDir": "Raderade temporära filer",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Hakuna programu iliyochaguliwa",
|
||||
"noAppsLabel": "Hakuna programu zilizopatikana",
|
||||
"currentVersion": "Sasa",
|
||||
"recommendedVersion": "Imependekezwa",
|
||||
"anyVersion": "yoyote"
|
||||
"recommendedVersion": "Imependekezwa"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Chagua viraka",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Sentry logging",
|
||||
"sentryHint": "Tuma kumbukumbu bila majina ili utusaidie kuboresha Revanced Manager",
|
||||
"restartAppForChanges": "Anzisha tena programu ili kutekeleza mabadiliko",
|
||||
"deleteKeystoreLabel": "Futa Duka la Ufunguo",
|
||||
"deleteKeystoreHint": "Futa Duka la Ufunguo iliyotumika kusaini programu",
|
||||
"deletedKeystore": "Duka la ufunguo imefutwa",
|
||||
"regenerateKeystoreLabel": "Futa Duka la Ufunguo",
|
||||
"regenerateKeystoreHint": "Futa Duka la Ufunguo iliyotumika kusaini programu",
|
||||
"regeneratedKeystore": "Duka la ufunguo imefutwa",
|
||||
"deleteTempDirLabel": "Futa faili za muda",
|
||||
"deleteTempDirHint": "Futa faili za muda ambazo hazijatumiwa",
|
||||
"deletedTempDir": "Faili za muda zimefutwa",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Hiçbir uygulama seçilmedi",
|
||||
"noAppsLabel": "Hiçbir uygulama bulunamadı",
|
||||
"currentVersion": "Şu anki",
|
||||
"recommendedVersion": "Önerilen",
|
||||
"anyVersion": "herhangi"
|
||||
"recommendedVersion": "Önerilen"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Yamaları Seçin",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Sentry günlükleri",
|
||||
"sentryHint": "ReVanced Manager'ı geliştirmemize yardımcı olmak için anonim günlükler gönderin",
|
||||
"restartAppForChanges": "Değişiklikleri uygulamak için uygulamayı yeniden başlatın",
|
||||
"deleteKeystoreLabel": "Keystore'u sil",
|
||||
"deleteKeystoreHint": "Uygulamayı imzalamak için kullanılan keystore'u silin",
|
||||
"deletedKeystore": "Keystore silindi",
|
||||
"regenerateKeystoreLabel": "Keystore'u sil",
|
||||
"regenerateKeystoreHint": "Uygulamayı imzalamak için kullanılan keystore'u silin",
|
||||
"regeneratedKeystore": "Keystore silindi",
|
||||
"deleteTempDirLabel": "Geçici dosyaları sil",
|
||||
"deleteTempDirHint": "Kullanılmayan geçici dosyaları sil",
|
||||
"deletedTempDir": "Geçici dosyalar silindi",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "کوئی ایپلیکیشن منتخب نہیں",
|
||||
"noAppsLabel": "کوئی ایپلیکیشن نہیں ملی",
|
||||
"currentVersion": "موجودہ",
|
||||
"recommendedVersion": "تجویز کردہ",
|
||||
"anyVersion": "کوئی بھی"
|
||||
"recommendedVersion": "تجویز کردہ"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "پیچز منتخب کریں",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "سنتری لاگنگ",
|
||||
"sentryHint": "ریوینسڈ مینیجر کی بہتری میں مدد کے لیے گمنام لاگ بھیجیں",
|
||||
"restartAppForChanges": "تبدیلیاں دیکھنے کیلیئے اپلی کیشن کو دوبارہ چلائیں",
|
||||
"deleteKeystoreLabel": "ڈیلیٹ کی سٹور",
|
||||
"deleteKeystoreHint": "ایپ پر دستخط کرنے کے لیے استعمال ہونے والے کی اسٹور کو ڈیلیٹ کریں",
|
||||
"deletedKeystore": "کی اسٹور حذف ہو گیا ہے",
|
||||
"regenerateKeystoreLabel": "ڈیلیٹ کی سٹور",
|
||||
"regenerateKeystoreHint": "ایپ پر دستخط کرنے کے لیے استعمال ہونے والے کی اسٹور کو ڈیلیٹ کریں",
|
||||
"regeneratedKeystore": "کی اسٹور حذف ہو گیا ہے",
|
||||
"deleteTempDirLabel": "عارضی فائلوں کو حذف کریں",
|
||||
"deleteTempDirHint": "غیر استعمال شدہ عارضی فائلوں کو حذف کریں",
|
||||
"deletedTempDir": "عارضی فائلیں حذف کردی گئی",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "Chưa chọn ứng dụng nào",
|
||||
"noAppsLabel": "Không tìm thấy ứng dụng nào",
|
||||
"currentVersion": "Hiện tại",
|
||||
"recommendedVersion": "Đề xuất",
|
||||
"anyVersion": "bất kỳ"
|
||||
"recommendedVersion": "Đề xuất"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "Chọn bản vá",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "Nhật ký theo dõi",
|
||||
"sentryHint": "Gửi nhật ký ẩn danh để giúp chúng tôi cải thiện ReVanced Manager",
|
||||
"restartAppForChanges": "Khởi động lại ứng dụng để áp dụng thay đổi",
|
||||
"deleteKeystoreLabel": "Xóa kho khóa",
|
||||
"deleteKeystoreHint": "Xóa kho khóa dùng để ký ứng dụng",
|
||||
"deletedKeystore": "Kho khóa đã xóa",
|
||||
"regenerateKeystoreLabel": "Xóa kho khóa",
|
||||
"regenerateKeystoreHint": "Xóa kho khóa dùng để ký ứng dụng",
|
||||
"regeneratedKeystore": "Kho khóa đã xóa",
|
||||
"deleteTempDirLabel": "Xóa tệp tạm thời",
|
||||
"deleteTempDirHint": "Xóa các tệp tạm thời không sử dụng",
|
||||
"deletedTempDir": "Đã xóa các tệp tạm thời",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "未选择应用程序",
|
||||
"noAppsLabel": "未发现应用程序。",
|
||||
"currentVersion": "当前",
|
||||
"recommendedVersion": "推荐",
|
||||
"anyVersion": "任意"
|
||||
"recommendedVersion": "推荐"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "选择补丁",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "哨兵日志",
|
||||
"sentryHint": "发送匿名日志以帮助我们改进ReVanced Manager",
|
||||
"restartAppForChanges": "重启应用以生效",
|
||||
"deleteKeystoreLabel": "删除密钥存储",
|
||||
"deleteKeystoreHint": "删除用于签名应用的密钥存储",
|
||||
"deletedKeystore": "密钥存储已删除",
|
||||
"regenerateKeystoreLabel": "删除密钥存储",
|
||||
"regenerateKeystoreHint": "删除用于签名应用的密钥存储",
|
||||
"regeneratedKeystore": "密钥存储已删除",
|
||||
"deleteTempDirLabel": "删除临时文件",
|
||||
"deleteTempDirHint": "删除未使用的临时文件",
|
||||
"deletedTempDir": "临时文件已删除",
|
||||
|
@ -54,8 +54,7 @@
|
||||
"widgetSubtitle": "沒有選擇應用程式",
|
||||
"noAppsLabel": "找不到應用程式",
|
||||
"currentVersion": "目前版本",
|
||||
"recommendedVersion": "推薦版本",
|
||||
"anyVersion": "任何版本"
|
||||
"recommendedVersion": "推薦版本"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "選擇補丁",
|
||||
@ -144,9 +143,9 @@
|
||||
"sentryLabel": "Sentry 日志記錄",
|
||||
"sentryHint": "發送匿名的日志記錄以幫助我們改善 ReVanced Manager",
|
||||
"restartAppForChanges": "重啓應用以套用變更",
|
||||
"deleteKeystoreLabel": "刪除 keystore",
|
||||
"deleteKeystoreHint": "刪除登入程序已用的 keystore",
|
||||
"deletedKeystore": "已刪除 keystore",
|
||||
"regenerateKeystoreLabel": "刪除 keystore",
|
||||
"regenerateKeystoreHint": "刪除登入程序已用的 keystore",
|
||||
"regeneratedKeystore": "已刪除 keystore",
|
||||
"deleteTempDirLabel": "刪除暫時文件",
|
||||
"deleteTempDirHint": "刪除無用暫時文件",
|
||||
"deletedTempDir": "暫時文件已刪除",
|
||||
|
@ -55,8 +55,7 @@
|
||||
"widgetSubtitle": "未選取應用程式",
|
||||
"noAppsLabel": "找不到應用程式",
|
||||
"currentVersion": "目前",
|
||||
"recommendedVersion": "建議",
|
||||
"anyVersion": "任何"
|
||||
"recommendedVersion": "建議"
|
||||
},
|
||||
"patchSelectorCard": {
|
||||
"widgetTitle": "選取修補檔",
|
||||
@ -148,9 +147,9 @@
|
||||
"sentryLabel": "輸入記錄",
|
||||
"sentryHint": "傳送匿名記錄以協助我們改進 ReVanced Manager",
|
||||
"restartAppForChanges": "重新啟動應用程式以套用變更",
|
||||
"deleteKeystoreLabel": "刪除金鑰儲存區",
|
||||
"deleteKeystoreHint": "刪除用於登入應用程式的金鑰儲存區",
|
||||
"deletedKeystore": "已刪除金鑰儲存區",
|
||||
"regenerateKeystoreLabel": "刪除金鑰儲存區",
|
||||
"regenerateKeystoreHint": "刪除用於登入應用程式的金鑰儲存區",
|
||||
"regeneratedKeystore": "已刪除金鑰儲存區",
|
||||
"deleteTempDirLabel": "刪除暫存檔案",
|
||||
"deleteTempDirHint": "刪除未使用的暫存檔案",
|
||||
"deletedTempDir": "暫存檔案目錄",
|
||||
|
16
docs/0_prerequisites.md
Normal file
@ -0,0 +1,16 @@
|
||||
# 💼 Prerequisites
|
||||
|
||||
In order to use ReVanced Manager, certain requirements must be met.
|
||||
|
||||
## 🤝 Requirements
|
||||
|
||||
- An Android device running Android 8 or higher
|
||||
- Any device architecture except ARMv7[^1]
|
||||
|
||||
[^1]: This constraint only applies to patches, that require patching APK resources which is why some patches may or may not work on ARMv7 architecture. You can find out, which architectures your device supports here: [⚙️ Configuring ReVanced Manager](2_4_settings.md#%E2%84%B9%EF%B8%8F-about).
|
||||
|
||||
## ⏭️ What's next
|
||||
|
||||
The next page will guide you through patching an app.
|
||||
|
||||
Continue: [⬇️ Installation](1_installation.md)
|
14
docs/1_installation.md
Normal file
@ -0,0 +1,14 @@
|
||||
# ⬇️ Installation
|
||||
|
||||
In order to use ReVanced on your Android device, ReVanced Manager must be installed.
|
||||
|
||||
## 🪜 Installation steps
|
||||
|
||||
1. Download the latest version of ReVanced Manager from [here](https://github.com/revanced/revanced-manager/releases/latest)
|
||||
2. Install ReVanced Manager
|
||||
|
||||
## ⏭️ What's next
|
||||
|
||||
The next page will guide you through using ReVanced Manager.
|
||||
|
||||
Continue: [🪛 Usage](2_usage.md)
|
27
docs/2_1_patching.md
Normal file
@ -0,0 +1,27 @@
|
||||
# 🧩 Patching apps
|
||||
|
||||
The following pages will guide you through using ReVanced Manager to patch apps.
|
||||
|
||||
## 🪜 Steps to patch apps
|
||||
|
||||
1. Navigate to the **Patcher** tab from the bottom navigation bar
|
||||
2. Tap on the **Select an app** card
|
||||
3. Choose an app to patch[^1]
|
||||
> **Note**: The suggested version is visible in each app's card.
|
||||
4. Tap on the **Select patches** card and select the patches you want to apply[^2]
|
||||
> **Warning**: If you see a warning you can click on it for more information.
|
||||
5. Tap on the **Done** then **Patch** button
|
||||
> **Warning**: The patching process may take ~5 minutes. Exiting the app may increase the time it takes to patch.
|
||||
6. Tap on the **Install** button
|
||||
> **Note**: If you are rooted, you can mount the patched app on top of the original app.[^3]
|
||||
> Optionally, you may export the patched app to storage using the options in the top right corner.
|
||||
|
||||
[^1]: Non-root users may be prompted to select an APK from storage, in which case you have to source the APK file yourself. ReVanced does not provide any APK files.
|
||||
[^2]: It is suggested to use the default set of patches by tapping on the **Default** button above the list of patches.
|
||||
[^3]: Mounting the patched app on top of the original app will only work if the installed app version matches the version of the app selected in step 3. above.
|
||||
|
||||
## ⏭️ What's next
|
||||
|
||||
The next page will bring you back to the usage page.
|
||||
|
||||
Continue: [🛠️ Usage](2_usage.md)
|
16
docs/2_2_managing.md
Normal file
@ -0,0 +1,16 @@
|
||||
# 🧰 Managing patched apps
|
||||
|
||||
After patching an app, you may want to manage it. This page will guide you through managing patched apps.
|
||||
|
||||
## 🪜 Steps to manage patched apps
|
||||
|
||||
1. Tap on the **Dashboard** tab in the bottom navigation bar
|
||||
2. Select the **Installed** chip
|
||||
3. Tap on the **Info** button for the app you want to manage
|
||||
4. Choose one of the options from the menu
|
||||
|
||||
## ⏭️ What's next
|
||||
|
||||
The next page will bring you back to the usage page.
|
||||
|
||||
Continue: [🛠️ Usage](2_usage.md)
|
14
docs/2_3_updating.md
Normal file
@ -0,0 +1,14 @@
|
||||
# 🔄 Updating ReVanced Manager
|
||||
|
||||
In order to keep up with the latest features and bug fixes, it is recommended to keep ReVanced Manager up to date.
|
||||
|
||||
## 🪜 Updating steps
|
||||
|
||||
1. Navigate to the **Dashboard** tab from the bottom navigation bar
|
||||
2. Tap on the **Update** button in the **Updates** section
|
||||
|
||||
## ⏭️ What's next
|
||||
|
||||
The next page will bring you back to the usage page.
|
||||
|
||||
Continue: [🛠️ Usage](2_usage.md)
|
39
docs/2_4_settings.md
Normal file
@ -0,0 +1,39 @@
|
||||
# ⚙️ Configuring ReVanced Manager
|
||||
|
||||
ReVanced Manager has settings that can be configured to your liking.
|
||||
|
||||
## 🪛 Essential settings
|
||||
|
||||
- ### 🔗 API URL
|
||||
|
||||
Specify the URL of the API to use. This is used to fetch ReVanced Patches and update ReVanced Manager.
|
||||
|
||||
- ### 🧬 Sources
|
||||
|
||||
Override the API and change the source of ReVanced Patches.
|
||||
|
||||
- ### 🧪 Experimental ReVanced Patches support
|
||||
|
||||
Lift app version constraints from ReVanced Patches. This allows you to patch any version of an app, even if the patch is not explicitly compatible with it.
|
||||
|
||||
- ### 🧑🔬 Experimental universal support
|
||||
|
||||
This will show or hide ReVanced Patches, which are not meant for any app in particular but rather for all apps but may not work on all apps.
|
||||
|
||||
- ### 🔑 Export, import or delete keystore
|
||||
|
||||
Manage the keystore used to sign patched apps.
|
||||
|
||||
- ### 📄 Export, import or reset ReVanced Patches selection
|
||||
|
||||
Manage the ReVanced Patches selection. This is useful if you want to share your ReVanced Patches selection with others or reset it to the default selection.
|
||||
|
||||
- ### ℹ️ About
|
||||
|
||||
View information about your device and ReVanced Manager. This includes the version of ReVanced Manager and supported architectures of your device.
|
||||
|
||||
## ⏭️ What's next
|
||||
|
||||
The next page will bring you back to the usage page.
|
||||
|
||||
Continue: [🛠️ Usage](2_usage.md)
|
16
docs/2_usage.md
Normal file
@ -0,0 +1,16 @@
|
||||
# 🛠️ Usage
|
||||
|
||||
The following pages will guide you through using ReVanced Manager to patch apps, manage patched apps, and update ReVanced Manager.
|
||||
|
||||
## 📖 Table of contents
|
||||
|
||||
1. [🧩 Patching apps](2_1_patching.md)
|
||||
2. [🧰 Managing patched apps](2_2_managing.md)
|
||||
3. [🔄 Updating ReVanced Manager](2_3_updating.md)
|
||||
4. [⚙️ Configuring ReVanced Manager](2_4_settings.md)
|
||||
|
||||
## ⏭️ What's next
|
||||
|
||||
The next page will guide you through troubleshooting ReVanced Manager.
|
||||
|
||||
Continue: [🛟 Troubleshooting](3_troubleshooting.md)
|
31
docs/3_troubleshooting.md
Normal file
@ -0,0 +1,31 @@
|
||||
# 🛟 Troubleshooting
|
||||
|
||||
In case you encounter any issues while using ReVanced Manager, please refer to this page for possible solutions.
|
||||
|
||||
- 💉 Patching fails with an error
|
||||
|
||||
Make sure ReVanced Manager is up to date by following [🔄 Updating ReVanced Manager](2_3_updating.md) and select the **Default** button when choosing patches.
|
||||
|
||||
- 💥 App not installed as package conflicts with an existing package
|
||||
|
||||
An existing installation of the app you're trying to patch is conflicting with the patched app. Uninstall the existing app before installing the patched app.
|
||||
|
||||
- ❗️ Error code `135`, `139` or `1` when patching the app
|
||||
|
||||
Your device is not supported. Refer to the [Prerequisites](0_prerequisites.md) page for supported devices.
|
||||
|
||||
Alternatively, you can use [ReVanced CLI](https://github.com/revanced/revanced-cli) to patch the app.
|
||||
|
||||
- 🚫 Non-root install is not possible with the current patches selection
|
||||
|
||||
Select the **Default** button when choosing patches.
|
||||
|
||||
- 🚨 Patched app crashes on launch
|
||||
|
||||
Select the **Default** button when choosing patches.
|
||||
|
||||
## ⏭️ What's next
|
||||
|
||||
The next page will teach you how to build ReVanced Manager from source.
|
||||
|
||||
Continue: [🛠️ Building from source](4_building.md)
|
40
docs/4_building.md
Normal file
@ -0,0 +1,40 @@
|
||||
# 🛠️ Building from source
|
||||
|
||||
This page will guide you through building ReVanced Manager from source.
|
||||
|
||||
1. Setup the Flutter environment for your [platform](https://docs.flutter.dev/get-started/install)
|
||||
|
||||
2. Clone the repository
|
||||
|
||||
```sh
|
||||
git clone https://github.com/revanced/revanced-manager.git && cd revanced-manager
|
||||
```
|
||||
|
||||
3. Create a GitHub personal access token with the `read:packages` scope [here](https://github.com/settings/tokens/new?scopes=read:packages&description=ReVanced)
|
||||
|
||||
4. Add your GitHub username and the token to `~/.gradle/gradle.properties`
|
||||
|
||||
```properties
|
||||
gpr.user = YourUsername
|
||||
gpr.key = ghp_longrandomkey
|
||||
```
|
||||
|
||||
5. Get dependencies
|
||||
|
||||
```sh
|
||||
flutter pub get
|
||||
```
|
||||
|
||||
6. Delete conflicting outputs
|
||||
|
||||
```sh
|
||||
flutter packages pub run build_runner build --delete-conflicting-outputs
|
||||
```
|
||||
|
||||
> **Note**: Must be run every time you sync your local repository with the remote repository.
|
||||
|
||||
7. Build the APK
|
||||
|
||||
```sh
|
||||
flutter build apk
|
||||
```
|
21
docs/README.md
Normal file
@ -0,0 +1,21 @@
|
||||
# 💊 ReVanced Manager
|
||||
|
||||
This documentation explains how to use [ReVanced Manager](https://github.com/revanced/revanced-manager).
|
||||
|
||||
## 📖 Table of contents
|
||||
|
||||
0. [💼 Prerequisites](0_prerequisites.md)
|
||||
1. [⬇️ Installation](1_installation.md)
|
||||
2. [🛠️ Usage](2_usage.md)
|
||||
1. [🧩 Patching apps](2_1_patching.md)
|
||||
2. [🧰 Managing patched apps](2_2_managing.md)
|
||||
3. [🔄 Updating ReVanced Manager](2_3_updating.md)
|
||||
4. [⚙️ Configuring ReVanced Manager](2_4_settings.md)
|
||||
3. [🛟 Troubleshooting](3_troubleshooting.md)
|
||||
4. [🛠 Building from source](4_building.md)
|
||||
|
||||
## ⏭️ Start here
|
||||
|
||||
The next page will tell you about the prerequisites for using ReVanced Manager.
|
||||
|
||||
Continue: [💼 Prerequisites](0_prerequisites.md)
|
2
fastlane/Appfile
Normal file
@ -0,0 +1,2 @@
|
||||
json_key_file("") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
|
||||
package_name("app.revanced.manager.flutter") # e.g. com.krausefx.app
|
38
fastlane/Fastfile
Normal file
@ -0,0 +1,38 @@
|
||||
# This file contains the fastlane.tools configuration
|
||||
# You can find the documentation at https://docs.fastlane.tools
|
||||
#
|
||||
# For a list of all available actions, check out
|
||||
#
|
||||
# https://docs.fastlane.tools/actions
|
||||
#
|
||||
# For a list of all available plugins, check out
|
||||
#
|
||||
# https://docs.fastlane.tools/plugins/available-plugins
|
||||
#
|
||||
|
||||
# Uncomment the line if you want fastlane to automatically update itself
|
||||
# update_fastlane
|
||||
|
||||
default_platform(:android)
|
||||
|
||||
platform :android do
|
||||
desc "Runs all the tests"
|
||||
lane :test do
|
||||
gradle(task: "test")
|
||||
end
|
||||
|
||||
desc "Submit a new Beta Build to Crashlytics Beta"
|
||||
lane :beta do
|
||||
gradle(task: "clean assembleRelease")
|
||||
crashlytics
|
||||
|
||||
# sh "your_script.sh"
|
||||
# You can also use other beta testing services here
|
||||
end
|
||||
|
||||
desc "Deploy a new version to the Google Play"
|
||||
lane :deploy do
|
||||
gradle(task: "clean assembleRelease")
|
||||
upload_to_play_store
|
||||
end
|
||||
end
|
48
fastlane/README.md
Normal file
@ -0,0 +1,48 @@
|
||||
fastlane documentation
|
||||
----
|
||||
|
||||
# Installation
|
||||
|
||||
Make sure you have the latest version of the Xcode command line tools installed:
|
||||
|
||||
```sh
|
||||
xcode-select --install
|
||||
```
|
||||
|
||||
For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
|
||||
|
||||
# Available Actions
|
||||
|
||||
## Android
|
||||
|
||||
### android test
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android test
|
||||
```
|
||||
|
||||
Runs all the tests
|
||||
|
||||
### android beta
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android beta
|
||||
```
|
||||
|
||||
Submit a new Beta Build to Crashlytics Beta
|
||||
|
||||
### android deploy
|
||||
|
||||
```sh
|
||||
[bundle exec] fastlane android deploy
|
||||
```
|
||||
|
||||
Deploy a new version to the Google Play
|
||||
|
||||
----
|
||||
|
||||
This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
|
||||
|
||||
More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
|
||||
|
||||
The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
|
1
fastlane/metadata/android/en-US/full_description.txt
Normal file
@ -0,0 +1 @@
|
||||
ReVanced Manager is an Android application that uses ReVanced Patcher to add, remove, and modify existing functionalities in Android applications
|
BIN
fastlane/metadata/android/en-US/images/featureGraphic.png
Normal file
After Width: | Height: | Size: 110 KiB |
BIN
fastlane/metadata/android/en-US/images/icon.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg
Normal file
After Width: | Height: | Size: 374 KiB |
BIN
fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg
Normal file
After Width: | Height: | Size: 694 KiB |
1
fastlane/metadata/android/en-US/short_description.txt
Normal file
@ -0,0 +1 @@
|
||||
Patch your favorite apps, right on your device.
|
1
fastlane/metadata/android/en-US/title.txt
Normal file
@ -0,0 +1 @@
|
||||
ReVanced Manager
|
20
fastlane/report.xml
Normal file
@ -1,4 +1,3 @@
|
||||
import 'package:revanced_manager/services/crowdin_api.dart';
|
||||
import 'package:revanced_manager/services/github_api.dart';
|
||||
import 'package:revanced_manager/services/manager_api.dart';
|
||||
import 'package:revanced_manager/services/patcher_api.dart';
|
||||
@ -38,7 +37,6 @@ import 'package:stacked_services/stacked_services.dart';
|
||||
LazySingleton(classType: PatcherAPI),
|
||||
LazySingleton(classType: RevancedAPI),
|
||||
LazySingleton(classType: GithubAPI),
|
||||
LazySingleton(classType: CrowdinAPI),
|
||||
LazySingleton(classType: Toast),
|
||||
],
|
||||
)
|
||||
|
@ -1,18 +1,17 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_i18n/flutter_i18n.dart';
|
||||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||||
import 'package:revanced_manager/app/app.locator.dart';
|
||||
import 'package:revanced_manager/services/crowdin_api.dart';
|
||||
import 'package:revanced_manager/services/github_api.dart';
|
||||
import 'package:revanced_manager/services/manager_api.dart';
|
||||
import 'package:revanced_manager/services/patcher_api.dart';
|
||||
import 'package:revanced_manager/services/revanced_api.dart';
|
||||
import 'package:revanced_manager/ui/theme/dynamic_theme_builder.dart';
|
||||
import 'package:revanced_manager/ui/views/navigation/navigation_view.dart';
|
||||
import 'package:revanced_manager/utils/environment.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:stacked_themes/stacked_themes.dart';
|
||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||
import 'package:timezone/data/latest.dart' as tz;
|
||||
|
||||
late SharedPreferences prefs;
|
||||
@ -21,38 +20,14 @@ Future main() async {
|
||||
await setupLocator();
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await locator<ManagerAPI>().initialize();
|
||||
String apiUrl = locator<ManagerAPI>().getApiUrl();
|
||||
final String apiUrl = locator<ManagerAPI>().getApiUrl();
|
||||
await locator<RevancedAPI>().initialize(apiUrl);
|
||||
await locator<CrowdinAPI>().initialize();
|
||||
bool isSentryEnabled = locator<ManagerAPI>().isSentryEnabled();
|
||||
String repoUrl = locator<ManagerAPI>().getRepoUrl();
|
||||
final String repoUrl = locator<ManagerAPI>().getRepoUrl();
|
||||
locator<GithubAPI>().initialize(repoUrl);
|
||||
await locator<PatcherAPI>().initialize();
|
||||
tz.initializeTimeZones();
|
||||
prefs = await SharedPreferences.getInstance();
|
||||
|
||||
await SentryFlutter.init(
|
||||
(options) {
|
||||
options
|
||||
..dsn = isSentryEnabled ? Environment.sentryDSN : ''
|
||||
..environment = 'alpha'
|
||||
..release = '0.1'
|
||||
..tracesSampleRate = 1.0
|
||||
..anrEnabled = true
|
||||
..enableOutOfMemoryTracking = true
|
||||
..sampleRate = isSentryEnabled ? 1.0 : 0.0
|
||||
..beforeSend = (event, hint) {
|
||||
if (isSentryEnabled) {
|
||||
return event;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
} as BeforeSendCallback?;
|
||||
},
|
||||
appRunner: () {
|
||||
runApp(const MyApp());
|
||||
},
|
||||
);
|
||||
runApp(const MyApp());
|
||||
}
|
||||
|
||||
@ -65,7 +40,7 @@ class MyApp extends StatelessWidget {
|
||||
// String replaceLocale = rawLocale.replaceAll('_', '-');
|
||||
// List<String> localeList = replaceLocale.split('-');
|
||||
// Locale locale = Locale(localeList[0], localeList[1]);
|
||||
Locale locale = const Locale('en', 'US');
|
||||
const Locale locale = Locale('en', 'US');
|
||||
|
||||
return DynamicThemeBuilder(
|
||||
title: 'ReVanced Manager',
|
||||
@ -79,8 +54,9 @@ class MyApp extends StatelessWidget {
|
||||
useCountryCode: true,
|
||||
),
|
||||
missingTranslationHandler: (key, locale) {
|
||||
print(
|
||||
'--> Missing translation: key: $key, languageCode: ${locale?.languageCode}');
|
||||
log(
|
||||
'--> Missing translation: key: $key, languageCode: ${locale?.languageCode}',
|
||||
);
|
||||
},
|
||||
),
|
||||
GlobalMaterialLocalizations.delegate,
|
||||
|
@ -5,23 +5,20 @@ part 'patch.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class Patch {
|
||||
final String name;
|
||||
final String description;
|
||||
final String version;
|
||||
final bool excluded;
|
||||
final List<String> dependencies;
|
||||
final List<Package> compatiblePackages;
|
||||
|
||||
Patch({
|
||||
required this.name,
|
||||
required this.description,
|
||||
required this.version,
|
||||
required this.excluded,
|
||||
required this.dependencies,
|
||||
required this.compatiblePackages,
|
||||
});
|
||||
|
||||
factory Patch.fromJson(Map<String, dynamic> json) => _$PatchFromJson(json);
|
||||
final String name;
|
||||
final String description;
|
||||
final bool excluded;
|
||||
final List<String> dependencies;
|
||||
final List<Package> compatiblePackages;
|
||||
|
||||
Map<String, dynamic> toJson() => _$PatchToJson(this);
|
||||
|
||||
@ -37,9 +34,6 @@ class Patch {
|
||||
|
||||
@JsonSerializable()
|
||||
class Package {
|
||||
final String name;
|
||||
final List<String> versions;
|
||||
|
||||
Package({
|
||||
required this.name,
|
||||
required this.versions,
|
||||
@ -47,6 +41,8 @@ class Package {
|
||||
|
||||
factory Package.fromJson(Map<String, dynamic> json) =>
|
||||
_$PackageFromJson(json);
|
||||
final String name;
|
||||
final List<String> versions;
|
||||
|
||||
Map toJson() => _$PackageToJson(this);
|
||||
}
|
||||
|
@ -6,23 +6,6 @@ part 'patched_application.g.dart';
|
||||
|
||||
@JsonSerializable()
|
||||
class PatchedApplication {
|
||||
String name;
|
||||
String packageName;
|
||||
String originalPackageName;
|
||||
String version;
|
||||
final String apkFilePath;
|
||||
@JsonKey(
|
||||
fromJson: decodeBase64,
|
||||
toJson: encodeBase64,
|
||||
)
|
||||
Uint8List icon;
|
||||
DateTime patchDate;
|
||||
bool isRooted;
|
||||
bool isFromStorage;
|
||||
bool hasUpdates;
|
||||
List<String> appliedPatches;
|
||||
List<String> changelog;
|
||||
|
||||
PatchedApplication({
|
||||
required this.name,
|
||||
required this.packageName,
|
||||
@ -40,6 +23,22 @@ class PatchedApplication {
|
||||
|
||||
factory PatchedApplication.fromJson(Map<String, dynamic> json) =>
|
||||
_$PatchedApplicationFromJson(json);
|
||||
String name;
|
||||
String packageName;
|
||||
String originalPackageName;
|
||||
String version;
|
||||
final String apkFilePath;
|
||||
@JsonKey(
|
||||
fromJson: decodeBase64,
|
||||
toJson: encodeBase64,
|
||||
)
|
||||
Uint8List icon;
|
||||
DateTime patchDate;
|
||||
bool isRooted;
|
||||
bool isFromStorage;
|
||||
bool hasUpdates;
|
||||
List<String> appliedPatches;
|
||||
List<String> changelog;
|
||||
|
||||
Map<String, dynamic> toJson() => _$PatchedApplicationToJson(this);
|
||||
|
||||
|
@ -1,61 +0,0 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:dio_http_cache_lts/dio_http_cache_lts.dart';
|
||||
import 'package:injectable/injectable.dart' hide Environment;
|
||||
import 'package:revanced_manager/utils/environment.dart';
|
||||
import 'package:sentry_dio/sentry_dio.dart';
|
||||
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||
|
||||
@lazySingleton
|
||||
class CrowdinAPI {
|
||||
late Dio _dio = Dio();
|
||||
final DioCacheManager _dioCacheManager = DioCacheManager(CacheConfig());
|
||||
final apiKey = Environment.crowdinKEY;
|
||||
|
||||
Future<void> initialize() async {
|
||||
try {
|
||||
_dio = Dio(BaseOptions(
|
||||
baseUrl: 'https://api.crowdin.com/api/v2',
|
||||
));
|
||||
|
||||
_dio.interceptors.add(_dioCacheManager.interceptor);
|
||||
_dio.addSentry(
|
||||
captureFailedRequests: true,
|
||||
);
|
||||
} on Exception catch (e, s) {
|
||||
await Sentry.captureException(e, stackTrace: s);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> clearAllCache() async {
|
||||
try {
|
||||
await _dioCacheManager.clearAll();
|
||||
} on Exception catch (e, s) {
|
||||
await Sentry.captureException(e, stackTrace: s);
|
||||
}
|
||||
}
|
||||
|
||||
Future<List> getLanguages() async {
|
||||
try {
|
||||
var response = await _dio.get(
|
||||
'/projects',
|
||||
options: buildCacheOptions(
|
||||
const Duration(hours: 6),
|
||||
maxStale: const Duration(days: 1),
|
||||
options: Options(
|
||||
headers: {
|
||||
'Authorization': 'Bearer $apiKey',
|
||||
},
|
||||
contentType: 'application/json',
|
||||
),
|
||||
),
|
||||
);
|
||||
List targetLanguages =
|
||||
await response.data['data'][0]['data']['targetLanguages'];
|
||||
|
||||
return targetLanguages;
|
||||
} on Exception catch (e, s) {
|
||||
await Sentry.captureException(e, stackTrace: s);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
}
|