chore: merge dev to main (#1177)

This commit is contained in:
Ushie 2023-09-04 04:15:12 +03:00 committed by GitHub
commit 3af2f5b032
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 83 additions and 119 deletions

View file

@ -1,5 +1,5 @@
name: 🐞 Bug report name: 🐞 Bug report
description: Report a very clearly broken issue. description: Create a new bug report.
title: 'bug: <title>' title: 'bug: <title>'
labels: [bug] labels: [bug]
body: body:
@ -8,53 +8,20 @@ body:
value: | value: |
# ReVanced Manager bug report # ReVanced Manager bug report
Important to note that your issue may have already been reported before. Please check for existing issues [here](https://github.com/revanced/revanced-manager/labels/bug). Please check for existing issues [here](https://github.com/revanced/revanced-manager/labels/bug) before creating a new one.
- type: dropdown
attributes:
label: Type
options:
- Error while running the manager
- Error at runtime
- Cosmetic
- Other
validations:
required: true
- type: textarea - type: textarea
attributes: attributes:
label: Bug description label: Bug description
description: How did you find the bug? Any additional details that might help? description:
- Describe your bug in detail
- Add steps to reproduce the bug if possible (Step 1. Download some files. Step 2. ...)
- Add images and videos if possible
- List selected patches if applicable
validations: validations:
required: true required: true
- type: textarea - type: textarea
attributes: attributes:
label: Steps to reproduce label: Version of ReVanced Manager and version & name of application you tried to patch
description: Add the steps to reproduce this bug, including your environment.
placeholder: Step 1. Download some files. Step 2. ...
validations:
required: true
- type: textarea
attributes:
label: Android version
description: Android version used.
validations:
required: true
- type: textarea
attributes:
label: Manager version
description: Manager version used.
validations:
required: true
- type: textarea
attributes:
label: Target package name
description: App you tried to patch.
validations:
required: true
- type: textarea
attributes:
label: Target package version.
description: Version of the app you tried to patch.
validations: validations:
required: true required: true
- type: dropdown - type: dropdown
@ -64,57 +31,31 @@ body:
- Non-root - Non-root
- Root - Root
validations: validations:
required: true required: false
- type: textarea - type: textarea
attributes: attributes:
label: Patches selected. label: Device logs
description: Patches you selected for the app. description: Export logs in ReVanced Manager settings.
validations:
required: true
- 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 there is no need for backticks.
render: shell render: shell
validations: validations:
required: true required: true
- type: textarea - type: textarea
attributes: attributes:
label: Installer logs (exported using Installer menu option) [unneeded if the issue is not during patching]. label: Patcher logs
description: Please copy and paste any relevant log output. This will be automatically formatted into code, so there is no need for backticks. description: Export logs in "Patcher" screen.
render: shell render: shell
validations: validations:
required: false required: false
- type: textarea
attributes:
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:
required: false
- type: textarea
attributes:
label: Solution
description: If applicable, add a possible solution.
validations:
required: false
- type: textarea
attributes:
label: Additional context
description: Add additional context here.
validations:
required: false
- type: checkboxes - type: checkboxes
id: acknowledgments
attributes: attributes:
label: Acknowledgments label: Acknowledgements
description: Your issue will be closed if you haven't done these steps. description: Your issue will be closed if you don't follow the checklist below!
options: options:
- label: I have searched the existing issues; this is new and no duplicate or related to another open issue. - label: This request is not a duplicate of an existing issue.
required: true required: true
- label: I have written a short but informative title. - label: I have chosen an appropriate title.
required: true required: true
- label: I properly filled out all of the requested information in this issue. - label: All requested information has been provided properly.
required: true required: true
- label: The issue is solely related to ReVanced Manager and not caused by patches. - label: The issue is solely related to the ReVanced Manager
required: true required: true

View file

@ -1,52 +1,42 @@
name: ⭐ Feature request name: ⭐ Feature request
description: Create a detailed feature request. description: Create a new feature request.
title: 'feat: <title>' title: 'feat: <title>'
labels: [feature-request] labels: [feature-request]
body: body:
- type: dropdown - type: markdown
attributes: attributes:
label: Type value: |
options: # ReVanced Manager feature request
- Functionality
- Cosmetic Please check for existing feature requests [here](https://github.com/revanced/revanced-manager/labels/bug) before creating a new one.
- Other
validations:
required: true
- type: textarea - type: textarea
attributes: attributes:
label: Issue label: Feature description
description: What is the current problem. Why does it require a feature request? description: Describe your feature in detail.
validations:
required: true
- type: textarea
attributes:
label: Feature
description: Describe your feature in detail. How does it solve the issue?
validations: validations:
required: true required: true
- type: textarea - type: textarea
attributes: attributes:
label: Motivation label: Motivation
description: Why should your feature should be considered? description: Explain why the lack of it is a problem.
validations: validations:
required: true required: true
- type: textarea - type: textarea
attributes: attributes:
label: Additional context label: Additional context
description: Add additional context here. description: In case there is something else you want to add.
validations: validations:
required: false required: false
- type: checkboxes - type: checkboxes
id: acknowledgements
attributes: attributes:
label: Acknowledgements label: Acknowledgements
description: Your issue will be closed if you haven't done these steps. description: Your issue will be closed if you don't follow the checklist below!
options: options:
- label: I have searched the existing issues and this is a new and no duplicate or related to another open issue. - label: This request is not a duplicate of an existing issue.
required: true required: true
- label: I have written a short but informative title. - label: I have chosen an appropriate title.
required: true required: true
- label: I filled out all of the requested information in this issue properly. - label: All requested information has been provided properly.
required: true required: true
- label: The issue is related solely to the ReVanced Manager - label: The issue is solely related to the ReVanced Manager
required: true required: true

1
.gitignore vendored
View file

@ -58,6 +58,7 @@ unlinked.ds
unlinked_spec.ds unlinked_spec.ds
# Android related # Android related
.gradle/
**/android/**/gradle-wrapper.jar **/android/**/gradle-wrapper.jar
**/android/.gradle **/android/.gradle
**/android/captures/ **/android/captures/

View file

@ -85,7 +85,7 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
// ReVanced // ReVanced
implementation "app.revanced:revanced-patcher:14.2.1" implementation "app.revanced:revanced-patcher:14.2.2"
// Signing & aligning // Signing & aligning
implementation("org.bouncycastle:bcpkix-jdk15on:1.70") implementation("org.bouncycastle:bcpkix-jdk15on:1.70")

View file

@ -24,7 +24,6 @@ import java.io.StringWriter
import java.util.logging.LogRecord import java.util.logging.LogRecord
import java.util.logging.Logger import java.util.logging.Logger
class MainActivity : FlutterActivity() { class MainActivity : FlutterActivity() {
private val handler = Handler(Looper.getMainLooper()) private val handler = Handler(Looper.getMainLooper())
private lateinit var installerChannel: MethodChannel private lateinit var installerChannel: MethodChannel
@ -182,7 +181,8 @@ class MainActivity : FlutterActivity() {
updateProgress(0.1, "Loading patches...", "Loading patches") updateProgress(0.1, "Loading patches...", "Loading patches")
val patches = PatchBundleLoader.Dex( val patches = PatchBundleLoader.Dex(
File(patchBundleFilePath) File(patchBundleFilePath),
optimizedDexDirectory = cacheDir
).filter { patch -> ).filter { patch ->
val isCompatible = patch.compatiblePackages?.any { val isCompatible = patch.compatiblePackages?.any {
it.name == patcher.context.packageMetadata.packageName it.name == patcher.context.packageMetadata.packageName

View file

@ -90,10 +90,14 @@ class AppSelectorViewModel extends BaseViewModel {
await DeviceApps.getApp(packageName, true) as ApplicationWithIcon?; await DeviceApps.getApp(packageName, true) as ApplicationWithIcon?;
if (app != null) { if (app != null) {
if (await checkSplitApk(packageName) && !isRooted) { if (await checkSplitApk(packageName) && !isRooted) {
return showSelectFromStorageDialog(context); if (context.mounted) {
return showSelectFromStorageDialog(context);
}
} else if (!await checkSplitApk(packageName) || isRooted) { } else if (!await checkSplitApk(packageName) || isRooted) {
selectApp(app); selectApp(app);
Navigator.pop(context); if (context.mounted) {
Navigator.pop(context);
}
} }
} }
} }

View file

@ -21,11 +21,23 @@ class InstallerView extends StatelessWidget {
bottom: false, bottom: false,
child: Scaffold( child: Scaffold(
floatingActionButton: Visibility( floatingActionButton: Visibility(
visible: !model.isPatching, visible: !model.isPatching && !model.hasErrors,
child: FloatingActionButton.extended( child: FloatingActionButton.extended(
label: I18nText('installerView.installButton'), label: I18nText(
icon: const Icon(Icons.file_download_outlined), model.isInstalled
onPressed: () => model.installTypeDialog(context), ? 'installerView.openButton'
: 'installerView.installButton',
),
icon: model.isInstalled
? const Icon(Icons.open_in_new)
: const Icon(Icons.file_download_outlined),
onPressed: model.isInstalled
? () => {
model.openApp(),
model.cleanPatcher(),
Navigator.of(context).pop(),
}
: () => model.installTypeDialog(context),
elevation: 0, elevation: 0,
), ),
), ),

View file

@ -18,13 +18,12 @@ class NavigationViewModel extends IndexTrackingViewModel {
Future<void> initialize(BuildContext context) async { Future<void> initialize(BuildContext context) async {
locator<Toast>().initialize(context); locator<Toast>().initialize(context);
final SharedPreferences prefs = await SharedPreferences.getInstance(); final SharedPreferences prefs = await SharedPreferences.getInstance();
requestManageExternalStorage(); await requestManageExternalStorage();
if (prefs.getBool('permissionsRequested') == null) { if (prefs.getBool('permissionsRequested') == null) {
await Permission.storage.request(); await Permission.storage.request();
await Permission.manageExternalStorage.request();
await prefs.setBool('permissionsRequested', true); await prefs.setBool('permissionsRequested', true);
RootAPI().hasRootPermissions().then( await RootAPI().hasRootPermissions().then(
(value) => Permission.requestInstallPackages.request().then( (value) => Permission.requestInstallPackages.request().then(
(value) => Permission.ignoreBatteryOptimizations.request(), (value) => Permission.ignoreBatteryOptimizations.request(),
), ),

View file

@ -199,7 +199,8 @@ class _PatchesSelectorViewState extends State<PatchesSelectorView> {
supportedPackageVersions: supportedPackageVersions:
model.getSupportedVersions(patch), model.getSupportedVersions(patch),
isUnsupported: !isPatchSupported(patch), isUnsupported: !isPatchSupported(patch),
isChangeEnabled: _managerAPI.isPatchesChangeEnabled(), isChangeEnabled:
_managerAPI.isPatchesChangeEnabled(),
isNew: model.isPatchNew( isNew: model.isPatchNew(
patch, patch,
model.getAppInfo().packageName, model.getAppInfo().packageName,
@ -221,8 +222,23 @@ class _PatchesSelectorViewState extends State<PatchesSelectorView> {
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
vertical: 10.0, vertical: 10.0,
), ),
child: I18nText( child: Container(
'patchesSelectorView.universalPatches', padding: const EdgeInsets.only(
top: 10.0,
bottom: 10.0,
left: 5.0,
),
child: I18nText(
'patchesSelectorView.universalPatches',
child: Text(
'',
style: TextStyle(
color: Theme.of(context)
.colorScheme
.primary,
),
),
),
), ),
), ),
...model.getQueriedPatches(_query).map((patch) { ...model.getQueriedPatches(_query).map((patch) {
@ -236,7 +252,8 @@ class _PatchesSelectorViewState extends State<PatchesSelectorView> {
supportedPackageVersions: supportedPackageVersions:
model.getSupportedVersions(patch), model.getSupportedVersions(patch),
isUnsupported: !isPatchSupported(patch), isUnsupported: !isPatchSupported(patch),
isChangeEnabled: _managerAPI.isPatchesChangeEnabled(), isChangeEnabled:
_managerAPI.isPatchesChangeEnabled(),
isNew: false, isNew: false,
isSelected: model.isSelected(patch), isSelected: model.isSelected(patch),
onChanged: (value) => model.selectPatch( onChanged: (value) => model.selectPatch(