mirror of
https://github.com/ReVanced/revanced-manager.git
synced 2025-05-18 23:16:50 +08:00
Compare commits
13 Commits
v1.19.0-de
...
v1.19.0-de
Author | SHA1 | Date | |
---|---|---|---|
f2e7071f6d | |||
25d53ce9a8 | |||
3b58d229da | |||
f5ba84d81e | |||
933c71923e | |||
bfe59ea57a | |||
953209ca13 | |||
b2119ce60e | |||
e0c750d27e | |||
b754a045eb | |||
5a24911fad | |||
0ec6897fda | |||
f57898a471 |
29
.github/dependabot.yml
vendored
Normal file
29
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,29 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: github-actions
|
||||
labels: []
|
||||
directory: /
|
||||
target-branch: dev
|
||||
schedule:
|
||||
interval: monthly
|
||||
|
||||
- package-ecosystem: npm
|
||||
labels: []
|
||||
directory: /
|
||||
target-branch: dev
|
||||
schedule:
|
||||
interval: monthly
|
||||
|
||||
- package-ecosystem: pub
|
||||
labels: []
|
||||
directory: /
|
||||
target-branch: dev
|
||||
schedule:
|
||||
interval: monthly
|
||||
|
||||
- package-ecosystem: gradle
|
||||
labels: [ "ReVanced Manager Compose" ]
|
||||
directory: /
|
||||
target-branch: compose-dev
|
||||
schedule:
|
||||
interval: monthly
|
10
.github/workflows/release-build.yml
vendored
10
.github/workflows/release-build.yml
vendored
@ -26,6 +26,11 @@ jobs:
|
||||
java-version: "17"
|
||||
distribution: "zulu"
|
||||
|
||||
- name: Set up Node.js 20
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
channel: "stable"
|
||||
@ -57,3 +62,8 @@ jobs:
|
||||
run: |
|
||||
echo "${{ secrets.SIGNING_KEYSTORE }}" | base64 --decode > android/app/keystore.jks
|
||||
npx semantic-release
|
||||
- name: Upload a Build Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: Artifact
|
||||
path: build/app/outputs/apk/release/revanced-manager*.apk
|
||||
|
172
.gitignore
vendored
172
.gitignore
vendored
@ -1,14 +1,40 @@
|
||||
# Miscellaneous
|
||||
*.class
|
||||
*.lock
|
||||
*.log
|
||||
*.pyc
|
||||
*.swp
|
||||
.DS_Store
|
||||
.atom/
|
||||
.buildlog/
|
||||
.history
|
||||
.svn/
|
||||
# See https://www.dartlang.org/guides/libraries/private-files
|
||||
|
||||
# Files and directories created by pub
|
||||
.dart_tool/
|
||||
.packages
|
||||
build/
|
||||
# If you're building an application, you may want to check-in your pubspec.lock
|
||||
# pubspec.lock
|
||||
|
||||
# Directory created by dartdoc
|
||||
# If you don't generate documentation locally you can remove this line.
|
||||
doc/api/
|
||||
|
||||
# dotenv environment variables file
|
||||
.env*
|
||||
|
||||
# Avoid committing generated Javascript files:
|
||||
*.dart.js
|
||||
*.info.json # Produced by the --dump-info flag.
|
||||
*.js # When generated by dart2js. Don't specify *.js if your
|
||||
# project includes source files written in JavaScript.
|
||||
*.js_
|
||||
*.js.deps
|
||||
*.js.map
|
||||
|
||||
.flutter-plugins
|
||||
.flutter-plugins-dependencies
|
||||
|
||||
# Generated Builder file
|
||||
**/*.g.dart
|
||||
**/*.locator.dart
|
||||
**/*.router.dart
|
||||
|
||||
flutter_*.png
|
||||
|
||||
#### Custom
|
||||
|
||||
local.properties
|
||||
|
||||
# IntelliJ related
|
||||
@ -17,129 +43,7 @@ local.properties
|
||||
*.iws
|
||||
.idea/
|
||||
|
||||
# Visual Studio Code related
|
||||
.classpath
|
||||
.project
|
||||
.settings/
|
||||
|
||||
# Flutter repo-specific
|
||||
/bin/cache/
|
||||
/bin/mingit/
|
||||
/dev/benchmarks/mega_gallery/
|
||||
/dev/bots/.recipe_deps
|
||||
/dev/bots/android_tools/
|
||||
/dev/docs/doc/
|
||||
/dev/docs/flutter.docs.zip
|
||||
/dev/docs/lib/
|
||||
/dev/docs/pubspec.yaml
|
||||
/dev/integration_tests/**/xcuserdata
|
||||
/dev/integration_tests/**/Pods
|
||||
/packages/flutter/coverage/
|
||||
version
|
||||
|
||||
# packages file containing multi-root paths
|
||||
.packages.generated
|
||||
|
||||
# Flutter/Dart/Pub related
|
||||
**/doc/api/
|
||||
**/*.g.dart
|
||||
**/*.locator.dart
|
||||
**/*.router.dart
|
||||
.dart_tool/
|
||||
.flutter-plugins
|
||||
.flutter-plugins-dependencies
|
||||
**/generated_plugin_registrant.dart
|
||||
.packages
|
||||
.pub-cache/
|
||||
.pub/
|
||||
build/
|
||||
flutter_*.png
|
||||
linked_*.ds
|
||||
unlinked.ds
|
||||
unlinked_spec.ds
|
||||
|
||||
# Android related
|
||||
.gradle/
|
||||
**/android/**/gradle-wrapper.jar
|
||||
**/android/.gradle
|
||||
**/android/captures/
|
||||
**/android/gradlew
|
||||
**/android/gradlew.bat
|
||||
**/android/local.properties
|
||||
**/android/**/GeneratedPluginRegistrant.java
|
||||
**/android/key.properties
|
||||
*.jks
|
||||
|
||||
# iOS/XCode related
|
||||
**/ios/**/*.mode1v3
|
||||
**/ios/**/*.mode2v3
|
||||
**/ios/**/*.moved-aside
|
||||
**/ios/**/*.pbxuser
|
||||
**/ios/**/*.perspectivev3
|
||||
**/ios/**/*sync/
|
||||
**/ios/**/.sconsign.dblite
|
||||
**/ios/**/.tags*
|
||||
**/ios/**/.vagrant/
|
||||
**/ios/**/DerivedData/
|
||||
**/ios/**/Icon?
|
||||
**/ios/**/Pods/
|
||||
**/ios/**/.symlinks/
|
||||
**/ios/**/profile
|
||||
**/ios/**/xcuserdata
|
||||
**/ios/.generated/
|
||||
**/ios/Flutter/.last_build_id
|
||||
**/ios/Flutter/App.framework
|
||||
**/ios/Flutter/Flutter.framework
|
||||
**/ios/Flutter/Flutter.podspec
|
||||
**/ios/Flutter/Generated.xcconfig
|
||||
**/ios/Flutter/app.flx
|
||||
**/ios/Flutter/app.zip
|
||||
**/ios/Flutter/flutter_assets/
|
||||
**/ios/Flutter/flutter_export_environment.sh
|
||||
**/ios/ServiceDefinitions.json
|
||||
**/ios/Runner/GeneratedPluginRegistrant.*
|
||||
|
||||
# macOS related
|
||||
**/macos/Flutter/GeneratedPluginRegistrant.swift
|
||||
**/macos/Flutter/Flutter-Debug.xcconfig
|
||||
**/macos/Flutter/Flutter-Release.xcconfig
|
||||
**/macos/Flutter/Flutter-Profile.xcconfig
|
||||
|
||||
# Windows related
|
||||
**/windows/flutter/ephemeral/
|
||||
**/windows/**/*.suo
|
||||
**/windows/**/*.user
|
||||
**/windows/**/*.userosscache
|
||||
**/windows/**/*.sln.docstates
|
||||
**/windows/x64/
|
||||
**/windows/x86/
|
||||
**/windows/**/*.[Cc]ache
|
||||
**/windows/**/!*.[Cc]ache/
|
||||
|
||||
# Web related
|
||||
lib/generated_plugin_registrant.dart
|
||||
|
||||
# Coverage
|
||||
coverage/
|
||||
|
||||
# Symbolication related
|
||||
app.*.symbols
|
||||
|
||||
# Obfuscation related
|
||||
app.*.map.json
|
||||
|
||||
# Exceptions to above rules.
|
||||
!**/ios/**/default.mode1v3
|
||||
!**/ios/**/default.mode2v3
|
||||
!**/ios/**/default.pbxuser
|
||||
!**/ios/**/default.perspectivev3
|
||||
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||||
!/dev/ci/**/Gemfile.lock
|
||||
|
||||
# Firebase related
|
||||
.firebase
|
||||
|
||||
# Dependency directories
|
||||
# Node Dependency directories
|
||||
node_modules/
|
||||
|
||||
# FVM
|
||||
|
@ -9,8 +9,14 @@ module.exports = {
|
||||
"plugins": [
|
||||
[
|
||||
"@semantic-release/commit-analyzer", {
|
||||
"preset": "conventionalcommits",
|
||||
"releaseRules": [
|
||||
{ "type": "build", "scope": "Needs bump", "release": "patch" }
|
||||
{ type: "style", release: "patch" },
|
||||
{ type: "refactor", release: "patch" },
|
||||
{ type: "perf", release: "patch" },
|
||||
{ type: "build", release: "patch" },
|
||||
{ type: "chore", release: "patch" },
|
||||
{ type: "revert", release: "patch" }
|
||||
]
|
||||
}
|
||||
],
|
||||
|
@ -45,8 +45,6 @@ android {
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
shrinkResources false
|
||||
minifyEnabled false
|
||||
ndk {
|
||||
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86_64'
|
||||
}
|
||||
|
23
android/app/proguard-rules.pro
vendored
Normal file
23
android/app/proguard-rules.pro
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.kts.kts.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# These packages are referenced by ReVanced Patches
|
||||
-keep class app.revanced.patcher.** { *; }
|
||||
-keep class com.android.tools.smali.** { *; }
|
||||
-keep class kotlin.** { *; }
|
||||
-keepnames class com.google.common.collect.**
|
||||
|
||||
# This package uses reflection internally, so do not remove and rename
|
||||
-keep class com.android.apksig.internal.** { *; }
|
||||
|
||||
# Fix crash
|
||||
-keepnames class org.xmlpull.** { *; }
|
||||
|
||||
# Fix build errors
|
||||
-dontwarn java.awt.**
|
||||
-dontwarn javax.**
|
||||
-dontwarn com.google.j2objc.annotations.*
|
@ -3,7 +3,6 @@ org.gradle.parallel=true
|
||||
org.gradle.daemon=true
|
||||
org.gradle.caching=true
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
android.defaults.buildfeatures.buildconfig=true
|
||||
android.nonTransitiveRClass=false
|
||||
android.nonFinalResIds=false
|
||||
|
@ -1,7 +1,7 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionSha256Sum=9d926787066a081739e8200858338b4a69e837c3a821a33aca9db09dd4a41026
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
|
||||
distributionSha256Sum=9631d53cf3e74bfa726893aee1f8994fee4e060c401335946dba2156f440f24c
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
|
@ -8,26 +8,33 @@ The following pages will guide you through using ReVanced Manager to patch apps.
|
||||
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.
|
||||
> ℹ️ Note
|
||||
> The suggested version is visible on each app's card.
|
||||
> You can tap on it to open a search query to obtain an APK file for the selected app with the suggested version
|
||||
|
||||
> 💡 Tip
|
||||
> If you are prompted to select an APK file from storage because the selected app is a split APK, tap on the "Suggested version" label to open a search query to obtain said APK file
|
||||
|
||||
4. Tap on the **Select patches** card and select the patches you want to apply[^2].
|
||||
|
||||
> [!NOTE]
|
||||
> ℹ️ Note
|
||||
> Some patches have options that can or must be configured by tapping on ⚙️ icon next to the patch name.
|
||||
|
||||
>[!WARNING]
|
||||
> If you see a warning you can click on it for more information.
|
||||
> ⚠️ 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 cancel patching or increase the time it takes to patch.
|
||||
> ⚠️ Warning
|
||||
> The patching process may take ~5 minutes. Exiting the app may cancel patching or increase the time it takes to patch significantly.
|
||||
|
||||
6. Tap on the **Install** button
|
||||
|
||||
> [!NOTE]
|
||||
> ℹ️ 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 option in the bottom left corner.
|
||||
|
||||
[^1]: Non-root users may be prompted to select an APK from storage, in which case you must source the APK file yourself. ReVanced does not provide any APK files.
|
||||
[^1]: You can select installed apps or select APK files from storage. ReVanced does not provide any APK files, which is why you have to source them yourself.
|
||||
[^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.
|
||||
|
||||
|
@ -619,8 +619,8 @@ class ManagerAPI {
|
||||
return showDialog(
|
||||
barrierDismissible: false,
|
||||
context: context,
|
||||
builder: (context) => WillPopScope(
|
||||
onWillPop: () async => false,
|
||||
builder: (context) => PopScope(
|
||||
canPop: false,
|
||||
child: AlertDialog(
|
||||
title: Text(t.warning),
|
||||
content: ValueListenableBuilder(
|
||||
|
@ -16,12 +16,15 @@ class InstallerView extends StatelessWidget {
|
||||
return ViewModelBuilder<InstallerViewModel>.reactive(
|
||||
onViewModelReady: (model) => model.initialize(context),
|
||||
viewModelBuilder: () => InstallerViewModel(),
|
||||
builder: (context, model, child) => WillPopScope(
|
||||
/*
|
||||
TODO(any): migrate to [PopScope],
|
||||
we've tried to migrate it two times but
|
||||
reverted it because we couldn't exit out of the screen.
|
||||
*/
|
||||
builder: (context, model, child) => PopScope(
|
||||
canPop: !model.isPatching,
|
||||
onPopInvoked: (bool didPop) {
|
||||
if (didPop) {
|
||||
model.onPop();
|
||||
} else {
|
||||
model.onPopAttempt(context);
|
||||
}
|
||||
},
|
||||
child: SafeArea(
|
||||
top: false,
|
||||
bottom: model.isPatching,
|
||||
@ -83,7 +86,7 @@ class InstallerView extends StatelessWidget {
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
onBackButtonPressed: () => model.onWillPop(context),
|
||||
onBackButtonPressed: () => Navigator.maybePop(context),
|
||||
bottom: PreferredSize(
|
||||
preferredSize: const Size(double.infinity, 1.0),
|
||||
child: GradientProgressIndicator(progress: model.progress),
|
||||
@ -111,7 +114,6 @@ class InstallerView extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
onWillPop: () => model.onWillPop(context),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
@ -526,25 +526,23 @@ class InstallerViewModel extends BaseViewModel {
|
||||
}
|
||||
}
|
||||
|
||||
Future<bool> onWillPop(BuildContext context) async {
|
||||
if (isPatching) {
|
||||
if (!cancel) {
|
||||
cancel = true;
|
||||
_toast.showBottom(t.installerView.pressBackAgain);
|
||||
} else if (!isCanceled) {
|
||||
await stopPatcher();
|
||||
} else {
|
||||
_toast.showBottom(t.installerView.noExit);
|
||||
}
|
||||
return false;
|
||||
Future<void> onPopAttempt(BuildContext context) async {
|
||||
if (!cancel) {
|
||||
cancel = true;
|
||||
_toast.showBottom(t.installerView.pressBackAgain);
|
||||
} else if (!isCanceled) {
|
||||
await stopPatcher();
|
||||
} else {
|
||||
_toast.showBottom(t.installerView.noExit);
|
||||
}
|
||||
}
|
||||
|
||||
void onPop() {
|
||||
if (!cancel) {
|
||||
cleanPatcher();
|
||||
} else {
|
||||
_patcherAPI.cleanPatcher();
|
||||
}
|
||||
screenshotCallback.dispose();
|
||||
Navigator.of(context).pop();
|
||||
return true;
|
||||
ScreenshotCallback().dispose();
|
||||
}
|
||||
}
|
||||
|
@ -13,13 +13,11 @@ class NavigationView extends StatelessWidget {
|
||||
return ViewModelBuilder<NavigationViewModel>.reactive(
|
||||
onViewModelReady: (model) => model.initialize(context),
|
||||
viewModelBuilder: () => locator<NavigationViewModel>(),
|
||||
builder: (context, model, child) => WillPopScope(
|
||||
onWillPop: () async {
|
||||
if (model.currentIndex == 0) {
|
||||
return true;
|
||||
} else {
|
||||
builder: (context, model, child) => PopScope(
|
||||
canPop: model.currentIndex == 0,
|
||||
onPopInvoked: (bool didPop) {
|
||||
if (!didPop) {
|
||||
model.setIndex(0);
|
||||
return false;
|
||||
}
|
||||
},
|
||||
child: Scaffold(
|
||||
|
@ -46,7 +46,6 @@ class SUpdateLanguage extends BaseViewModel {
|
||||
builder: (context) => AlertDialog(
|
||||
title: Text(t.settingsView.languageLabel),
|
||||
icon: const Icon(Icons.language),
|
||||
backgroundColor: Theme.of(context).colorScheme.secondaryContainer,
|
||||
contentPadding: EdgeInsets.zero,
|
||||
content: ValueListenableBuilder(
|
||||
valueListenable: selectedLanguageCode,
|
||||
|
2000
package-lock.json
generated
2000
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -6,6 +6,6 @@
|
||||
"@semantic-release/exec": "^6.0.3",
|
||||
"@semantic-release/git": "^10.0.1",
|
||||
"conventional-changelog-conventionalcommits": "^7.0.2",
|
||||
"semantic-release": "^22.0.12"
|
||||
"semantic-release": "^23.0.2"
|
||||
}
|
||||
}
|
||||
|
1332
pubspec.lock
Normal file
1332
pubspec.lock
Normal file
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@ homepage: https://github.com/ReVanced/revanced-manager
|
||||
|
||||
publish_to: 'none'
|
||||
|
||||
version: 1.19.0-dev.10+101900010
|
||||
version: 1.19.0-dev.12+101900012
|
||||
|
||||
environment:
|
||||
sdk: '>=3.0.0 <4.0.0'
|
||||
|
Reference in New Issue
Block a user