Code Monkey home page Code Monkey logo

revanced-integrations's Introduction

๐Ÿ”ฉ ReVanced Integrations

The official ReVanced Integrations containing classes to be merged by ReVanced Patcher.

โ“ How to use debugging:

  • Usage on Windows: adb logcat | findstr "revanced" > log.txt
  • Usage on Linux: adb logcat | grep --line-buffered "revanced" > log.txt

This will write the log to a file called log.txt which you can view then.

revanced-integrations's People

Contributors

aliernfrog avatar bogadana avatar canny1913 avatar cnc-robert avatar d4rkk3y avatar exam454 avatar hyunsu15 avatar inotia00 avatar j4k0xb avatar jakweg avatar johnconner122 avatar kazimmt avatar kevinx8 avatar linus789 avatar lisouseinaikyrios avatar mlnrdev avatar osumatrix avatar palmdevs avatar patrykmis avatar redphx avatar reisxd avatar semantic-release-bot avatar shadow578 avatar she11sh0cked avatar thebestnom avatar thejeterlp avatar tillnelown avatar timschneeb avatar ushie avatar vancedofficial avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

revanced-integrations's Issues

Custom settings needs a context

As the title already suggests: latest version of Vanced use a patch to acquire a necessary context, to make the app working with custom settings page (app will crash otherwise).

Same patch could be found on YouTube Music too.

back button not working please fix it

Type

Cosmetic

Bug description

back button not working please fix it

Steps to reproduce

Please fix this difficult error.

Relevant log output

Let's fix it

Screenshots or videos

Uploading screen-20220926-215842.mp4โ€ฆ

Solution

No description available

Additional context

No description availablehttps://user-images.githubusercontent.com/71612380/192312374-131e7010-df15-4fff-a403-955fb108d05b.mp4

feat: missing SponsorBlock video highlight segment

Type

Functionality

Issue

The highlight segment for SponsorBlock is missing.

Feature

The highlight segment should be added.

Motivation

This type of segment is missing and should be added for completeness.

Additional context

No response

Show patches/integrations versions in settings

As Vanced was showing its build number in settings, it would be useful to do so for ReVanced as well. So everyone can decide whether or not to keep a package based on the included patches/integrations.

Experimental tag

It should be good to remove "Experimental" suffix from litho method names and bool key names.

It's useless for a stable implementation.

feat: Design of the Settings Export/Import Patch

Type

Functionality

Issue

It is currently not possible to export or import revanced settings. This is a pain point in using the app, since users often have highly customized setups, due to the many available revanced settings.

Feature

I would like to propose a design, where the settings are simply exported using the ObjectOutputStream and written to a file. This file could easily shared and imported using ObjectInputStream.

var settings = SharedPrefHelper.getPreferences(context, SharedPrefHelper.SharedPrefNames.REVANCED_PREFS.name()).getAll();

FileOutputStream fileOutputStream = new FileOutputStream("settings");
ObjectOutputStream outputStream = new ObjectOutputStream(fileOutputStream);
outputStream.writeObject(settings);

Motivation

This design is currently not achievable, since most revanced settings are stored as YOUTUBE instead of REVANCED_PREFS preferences.

Additional context

No response

Further cleanup

As a result of @TheJeterLP work, I found some things that can be improved.

  • XSwipe class could be renamed in ReVancedSwipe.
  • XSettingsActivity class could be renamed to ReVancedSettingsActivity.

I preferred not to make any changes, to be able to discuss them first (in case of any problems).

Latest integrations update freezes the play/pause button

I tried patching it with the latest integrations (v0.17.0) and latest patches (2.0.2). This resulted in the pause button being frozen and me not being able to tap out of it. Impossible to watch videos on fullscreen. Reverting back to 2.0.1 patches and 0.15.0 integrations seemed to fix the issue. I'm not sure whether the issue is in integrations or if it's in the patches, but I would assume it has to do with the refactoring made to some parts of the code. Bugs, amirite?

feat: Contributing guidelines

๐Ÿž Issue

Add a contributing.md in the repo so it's easier for new developers to know contributing guidelines.

โ— Solution

Add a contributing.md.

โ“ Motivation

Sets guidelines for new contributors on what to do and what not to.

Set minimum value for ReBuffer

ReBuffer feature need of an input value greater than 0 to work properly, otherwise it generate infinite app crashes.

This already been fixed on last Vanced 17.03.38.

feat: remove usage of SharedPref on patches

๐Ÿž Issue

Because SettingsPatch doesnt exist yet, some patches like default-quality-patch rely on SharedPrefs to function properly.

โ— Solution

Switch to using SettingsPatch once it's functional.

bug: `List.stream()` does not exist in older SDKs

Type

Error at runtime

Bug description

Versions:

Android 6.0.1 custom rom on Samsung J200g (2015)

YT: 17.33.42
revanced-patches-2.50.4.jar
revanced-cli-2.9.5-all.jar
app-release-unsigned.apk - v0.36.5
Vanced MicroG v0.2.24.220220

JDK:

openjdk 18.0.2 2022-07-19
OpenJDK Runtime Environment (build 18.0.2+0)
OpenJDK 64-Bit Server VM (build 18.0.2+0, mixed mode)

Used Command to patch the app

java -jar revanced-cli-2.9.5-all.jar -a YouTube_v17.33.42_apkpure.com.apk -c -o revanced_17.33.42.apk -b revanced-patches-2.50.4.jar -m app-release-unsigned.apk -e swipe-controls -e downloads -e seekbar-tapping -e amoled -e disable-create-button -e hide-cast-button -e hide-autoplay-button -e premium-heading -e custom-branding -e disable-fullscreen-panels -e sponsorblock -e custom-video-buffer -e always-autorepeat -e custom-playback-speed -e hdr-auto-brightness -e return-youtube-dislike 

Problem Description :

Revanced keep crashing on every launch. Also observed (from hint) App is not crashing when there is no internet on the device. Means I can launch the app without internet connection and can do everything staying offline. on relavant section putting an log for that.

Steps to reproduce

Step 1: On android 6.0.1 samsung J200G build the app and install
Step 2: Try to launch the app
Step 3: you can reproduce now, the app is crashed.

Step 1: Now turn off Cellular data and wifi
Step 2: Launch the app
Step 3: you can see the app is not crashing anymore

Relevant log output

Steps followed for taking logs:

Step 1 : adb logcat -b all -c for flushing all buffers which are irrelevant
Step 2 : adb logcat -b all | tee <output_file> taking out all logs from all buffers
Step 3 : Letting the problem be reproduced, send SIGTERM to stop

the log is : youtube_revanced_17.33.42_with_microg.log

Screenshots or videos

No response

Solution

No response

Additional context

To Devs,

If anything is missing please let me know, I will try my best to give you, But please fix this.

Regards,
Sourav

problem: ReturnYouTubeDislike & Sponsorblock are entangled

๐Ÿž Issue

The integrations features code for both ReturnYouTubeDislike and Sponsorblock. Their code is entangled, this means using the integrations for Sponsorblock, will trigger code for ReturnYouTubeDislike and the other way around.

โš™ Reproduce

Calling VideoInformation.setCurrentVideoId(string) will log this:
image

Related line:

https://github.com/revanced/revanced-integrations/blob/ea581d48e29b3f40d12e82448788a1151d4892d1/app/src/main/java/app/revanced/integrations/sponsorblock/player/VideoInformation.java#L39

๐Ÿ›  Solution

Refactor the Sponsorblock and ReturnYouTubeDislikeintegrations. This means separating the code.

โš  Additional context

The mentioned integrations code will have to be split. This methods should then be injected by a dependency patch, which will be used in the Sponsorblock and ReturnYouTubeDislike patch. The dependency will be able to inject either one or both methods. Effectively they do the same, so the integrations can look like this:

/* integrations */

class ReturnYouTubeDislikePatch {
    public static void Player_currentVideoIdHookEX(final String id) {
        VideoInformation.setCurrentVideoId(id)
    }
}

class SponsorblockPatch {
    public static void Player_currentVideoIdHookEX(final String id) {
        VideoInformation.setCurrentVideoId(id)
    }
}

๐Ÿ’Š Affected patches

fix: migrate `swipe-controls` Patch to java

๐Ÿž Issue

swipe-controls patch was written in kotlin and needs to be migrated to java.
Merging kotlin to the final apk takes too much time

๐Ÿ›  Solution

Rewrite patch in java

NewVideoStarted refactor

Make sure both VideoQuality and VideoSpeed (or any patch that might get added in the future) can use NewVideoStarted()

bug: RYD doesnt work on new layout

Type

Cosmetic

Bug description

YouTube does A/B testing of a new layout/UI which causes RYD to break for some users.

  • The like button displays the dislike count instead. (fixed)
  • The dislike button shows neither the initial text nor the dislike count.

Steps to reproduce

Cant, still shows the old layout for me

Relevant log output

Debug logs provided by Bleuzen

old layout:

08-08 17:39:05.493 31098 31250 D revanced: ReturnYouTubeDislike: onComponentCreated: ConversionContext{container=null, widthConstraint=1080, heightConstraint=0, templateLoggerFactory=ofv@3de3d2f, rootDisposableContainer=aqqu@9db5117, imagePrefetchRangeRatio=0.0, horizontalCollectionTouchInterceptor=null, horizontalCollectionSwipeProtector=null, useIncrementalMountOnChildrenInternal=true, useLegacyVisibleInternal=false, recyclerBinderConfiguration=null, pathBuilder=video_action_bar.eml|27b56b54d5dcba20|video_action_bar_unwrapper.eml|c5a1d399b660e52e|CellType|ScrollableContainerType|ContainerType|ContainerType|dislike_button.eml|966ee2cd7db5e29f|video_action_toggle_button.eml|8fd9d44a8e3c9162|video_action_button.eml|9dd3b4b44979c3af|ContainerType|TextType|, elementId=0,0,0,0,1,0,0,0,0,0,1, identifierProperty=video_action_bar.eml|27b56b54d5dcba20, loggingNodeInternal=null, parentLoggingNodeInternal=null, elementsInteractionLoggerInternal=null, globalCommandDataDecoratorsInternal=null, decoratingElementBuilder=abdd@4c4170a, debugId=null, treeDebugId=null, shouldAddDebuggerViewTags=false, elementsConfig=ElementsConfig{converterProvider=imh@ab91b26, layoutExecutor=null, logTag=Elements, perfLoggerFactory=oem@99b7d4b, elementsInteractionLogger=abfi@c7a5367, useIncrementalMount=false, userData=MainAppElementsUserData{activeStateScrollSelectionController=com.google.android.apps.youtube.app.common.ui.elements.activestate.ActiveStateScrollSelectionController@17b5324}, recyclerConfig=RecyclerConfig{initRangeSize=4, collectionRangeRatio=0.45, binderRangeRatio=0.5, recyclerViewItemPrefetch=false, layoutHandlerFactory=null, changeSetExecutor=null, layoutInfo=null, useLegacyVisible=false}, nestedScrollingEnabled=true, globalCommandDataDecorators=[abda@e291514]}, couldOverlapWithElementsConfig=false, elementDepthInTree=11, scrollStrategyListenerHolder=nzr@b0c4ac3}

new layout:

08-08 17:40:45.806 31098 31098 D revanced: ReturnYouTubeDislike: onComponentCreated: ConversionContext{container=null, widthConstraint=1080, heightConstraint=0, templateLoggerFactory=ofv@3de3d2f, rootDisposableContainer=aqqu@87715d, imagePrefetchRangeRatio=0.0, horizontalCollectionTouchInterceptor=null, horizontalCollectionSwipeProtector=null, useIncrementalMountOnChildrenInternal=true, useLegacyVisibleInternal=false, recyclerBinderConfiguration=null, pathBuilder=video_action_bar.eml|27b56b54d5dcba20|video_action_bar_unwrapper.eml|c5a1d399b660e52e|CellType|ScrollableContainerType|ContainerType|ContainerType|segmented_like_dislike_button.eml|661608c4db76804f|video_action_button_pill.eml|c01df18db7aa5d7f|ContainerType|ContainerType|ContainerType|TextType|, elementId=0,0,0,0,0,0,0,0,0,0,0,1, identifierProperty=video_action_bar.eml|27b56b54d5dcba20, loggingNodeInternal=null, parentLoggingNodeInternal=null, elementsInteractionLoggerInternal=null, globalCommandDataDecoratorsInternal=null, decoratingElementBuilder=abdd@469427f, debugId=null, treeDebugId=null, shouldAddDebuggerViewTags=false, elementsConfig=ElementsConfig{converterProvider=imh@4e324c, layoutExecutor=null, logTag=Elements, perfLoggerFactory=oem@99b7d4b, elementsInteractionLogger=abfi@766c295, useIncrementalMount=false, userData=MainAppElementsUserData{activeStateScrollSelectionController=com.google.android.apps.youtube.app.common.ui.elements.activestate.ActiveStateScrollSelectionController@17b5324}, recyclerConfig=RecyclerConfig{initRangeSize=4, collectionRangeRatio=0.45, binderRangeRatio=0.5, recyclerViewItemPrefetch=false, layoutHandlerFactory=null, changeSetExecutor=null, layoutInfo=null, useLegacyVisible=false}, nestedScrollingEnabled=true, globalCommandDataDecorators=[abda@c522738]}, couldOverlapWithElementsConfig=false, elementDepthInTree=12, scrollStrategyListenerHolder=nzr@b0c4ac3}

Screenshots or videos

image

(actually has 27k likes and 96 dislikes)

Solution

possibly:

  • replace the litho component with a custom view that has the same icon and text
  • force old layout
  • add text component to litho button

Additional context

No response

[Suggestion] Rename Releases

First of all congratulations on the Release of version 0.5.0! can't wait for the full version of 1.0.0

Although here's a suggestion:

Rename app-release-unsigned.apk to revanced-integrations-v05.apk or something alike to not cause confusion among files and release versions

PS plz unban I did nothing wrong in my PR and yet got banned off discord #9

Premium heading patch fails with FileNotFound exception

I think it looks for an image that's supposed to be at: https://github.com/revanced/revanced-integrations/tree/main/app/src/main/res/drawable-xxxhdpi

D:\Downloads\revanced>java -jar revanced-cli-1.7.0-all.jar -a YouTube_base.apk -c -d E977XB2ZM08213714 -o revanced.apk -m revanced-patches-1.9.1.dex -b revanced-patches-1.9.1.jar
[...]
app.revanced.patcher.patch.implementation.misc.PatchResultError: revanced-cache\res\drawable-xxxhdpi\yt_premium_wordmark_header_light.png
        at app.revanced.patcher.Patcher.applyPatch(Patcher.kt:264)
        at app.revanced.patcher.Patcher.applyPatches(Patcher.kt:282)
        at app.revanced.patcher.Patcher.applyPatches$default(Patcher.kt:275)
        at app.revanced.utils.patcher.PatcherKt.applyPatchesVerbose(Patcher.kt:58)
        at app.revanced.cli.patcher.Patcher.start$revanced_cli(Patcher.kt:20)
        at app.revanced.cli.command.MainCommand.run(MainCommand.kt:106)
        at picocli.CommandLine.executeUserObject(CommandLine.java:1939)
        at picocli.CommandLine.access$1300(CommandLine.java:145)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2358)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2179)
        at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
        at picocli.CommandLine.execute(CommandLine.java:2078)
        at app.revanced.cli.main.MainKt.main(Main.kt:7)
Caused by: java.nio.file.NoSuchFileException: revanced-cache\res\drawable-xxxhdpi\yt_premium_wordmark_header_light.png
[...]

bug: Twitch crashes after patching

Type

Other

Bug description

I just patched two stable versions of the Twitch and it won't open.

Steps to reproduce

  1. Patch the latest stable version of Twitch (14.2.0) or 14.1.04

Relevant log output

java.lang.NoSuchMethodError: No static method contains$default(Ljava/lang/String;)Z in class Lkotlin/text/StringsKt_StringsKt; or its super classes (declaration of 'kotlin.text.StringsKt_StringsKt' appears in /data/app/~~JH4bdE4JTrBdViZMCXNO_A==/ tv.twitch.android.app-SKWIHgNW3kjlDxHoCRnsJw==/base.apk! classes5.dex)
at
app.revanced.twitch.api.RequestInterceptor.intercept(RequestInterceptor.kt:37)
at
okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
at
okhttp3.internal.connection.RealCall.getResponseWithInterceptorC hain$okhttp(RealCall.kt:201)
at
okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:517)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolE xecutor.java:641)
at java.lang.Thread.run(Thread.java:923)

Screenshots or videos

LOG

Solution

No response

Additional context

No response

Error in Error template

Type

Other

Bug description

The "Solution" field in the Error template says it's optional but it isn't.

Steps to reproduce

Create a bug and try to leave the "Solution" field empty.

Relevant log output

None

Screenshots or videos

grafik

Solution

abcde

Additional context

No response

feat: `channel-guidelines` block

๐Ÿž Issue

At the current state, LithoAdRemoval doesn't block channel-guidelines.
Immagine 2022-07-17 154109

โ— Solution

Add tag channel_guidelines_entry_banner inside LithoAdRemoval integration.

feat: <Punch To Zoom>

Type

Other

Issue

If pinch to zoom is enabled manually then it will also work with the picture in picture feature in case if revanced users are multitasking that's keep them preoccupied.

Feature

It'll allow revanced users to pinch the video to manually zoom in and out.

Motivation

Whenever revanced users use the picture in picture feature they'll also have access to another feature such as "pinch to zoom" in order to zoom in and out of their own video player on YouTube.

Additional context

It is an interesting feature that I had never tried before as a test so I was hoping revanced users might give it a try someday in the future.

feat: Wider padding on 1% brightness for Swipe controls

Type

Functionality

Issue

Currently to set the phone on minimum brightness required an incredibly steady hand to not swing down to automatic or up to 5-6%.

Feature

There should be a larger 'notch' at which minimum brightness can be selected or the 'Auto' setting should be at the top. It should be a trivial experience to set your device to minimum brightness. 1% brightness should also be relabeled as 'minimum' or a similar alternative for ease of user experience and understanding. I often find myself trying to adjust the brightness with the built in slider so I can just leave it on minimum brightness, but I am unable to use the android brightness slider while the app is open.

Motivation

I, like many others, often watch YouTube in bed at night and would like the absolute minimum brightness I can possibly have to not strain my eyes in the dark. Currently it is incredibly tedious to try and adjust the brightness to minimum and it would be a great benefit to me and I'm sure to many others to make this an easier solution. A great quality of life change.

Additional context

No response

Add Swipe left/right to scrub and double tap to pause/play

๐Ÿž Issue

It's a feature request, usually to scrub we've to long press first and then swipe and to pause we've to press on the button

โ— Solution

If possible add this in swipe controls patch: >> swipe left and right to scrub through the video (like vlc/mx player) default action is to long press and scrub left and right which is not that intuitive and also add double tap in the middle area to pause and play too

โ“ Motivation

The usual/default scrub is not that fast like to jump quickly 1s or 1min ahead into the video also double tap to pause would be quite handy especially if there's text on screen and it question away quickly like subtitles etc double tap would be much quicker to pause and read!

โš  Additional context

You can check VLC for android it has all the features!

feat: remove usage of reflection in integrations

๐Ÿž Issue

Some patches (for example custom-playback-speed and default-video-quality use reflection inside the integrations. That should be changed as this decreases the user experience because reflection makes the youtube app slower.

โ— Solution

Remove the usage of reflection and move that logic to the actual Patch.

โ“ Motivation

Follow the general unspoken rule of java development to not use reflection at all.
Moving logic that currently uses reflection will move the time consuming logic from runtime to compile time which will increase the user experience.

feat: Swipe Controls + Auto HDR

Type

Functionality

Issue

The aforementioned features have been removed permanently.

Feature

The were previously available features that made the app better.

Motivation

Easier to brighten screen without dragging the notification bar or increasing the volume via the physical buttons.

Additional context

NA

'Open Links Directly' not working

Type

Cosmetic

Bug description

Open Links Directly not working, but 'Open Links Directly' toggle switch are turned on in YouTube ReVanced_17.43.36(2.109.0).
Screenshot_2022-11-14-16-24-28-816_app revanced android youtube
Screenshot_2022-11-14-16-24-52-436_com android chrome

Steps to reproduce

Fix bug 'Open Links Directly 'extension

Relevant log output

--------- beginning of system
11-14 12:01:27.016 24480 24480 I ForceDarkHelperStubImpl: initialize for app.revanced.manager.flutter , ForceDarkOrigin
11-14 12:01:27.109 24480 24480 D ViewScrollStubImpl: the value of mScrollFrictionRes is: 0.015
11-14 12:01:38.424 25163 25163 I ForceDarkHelperStubImpl: initialize for app.revanced.manager.flutter , ForceDarkOrigin
11-14 12:01:38.502 25163 25163 D ViewScrollStubImpl: the value of mScrollFrictionRes is: 0.015
11-14 12:01:39.607 25163 25163 W Looper  : PerfMonitor doFrame : time=23ms vsyncFrame=0 latency=412ms procState=-1 historyMsgCount=7
11-14 12:02:28.485 25163 25163 W Looper  : PerfMonitor longMsg : seq=498 plan=12:02:27.120 late=1ms wall=1363ms running=0ms h=android.os.Handler c=io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0 procState=-1
11-14 12:02:34.691 25163 25163 W Looper  : PerfMonitor longMsg : seq=507 plan=12:02:33.242 late=1ms wall=1447ms running=0ms h=android.os.Handler c=io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0 procState=-1
11-14 12:27:45.852 10543 10543 I ForceDarkHelperStubImpl: initialize for app.revanced.manager.flutter , ForceDarkOrigin
11-14 12:27:45.964 10543 10543 D ViewScrollStubImpl: the value of mScrollFrictionRes is: 0.015
11-14 12:50:09.131 16596 16596 I ForceDarkHelperStubImpl: initialize for app.revanced.manager.flutter , ForceDarkOrigin
11-14 12:50:09.239 16596 16596 D ViewScrollStubImpl: the value of mScrollFrictionRes is: 0.015
11-14 12:55:50.357 28744 28744 I ForceDarkHelperStubImpl: initialize for app.revanced.manager.flutter , ForceDarkOrigin
11-14 12:55:50.459 28744 28744 D ViewScrollStubImpl: the value of mScrollFrictionRes is: 0.015
11-14 12:59:51.907   422   422 I ForceDarkHelperStubImpl: initialize for app.revanced.manager.flutter , ForceDarkOrigin
11-14 12:59:51.999   422   422 D ViewScrollStubImpl: the value of mScrollFrictionRes is: 0.015
11-14 16:25:36.264 21227 21227 I ForceDarkHelperStubImpl: initialize for app.revanced.manager.flutter , ForceDarkOrigin
11-14 16:25:36.373 21227 21227 D ViewScrollStubImpl: the value of mScrollFrictionRes is: 0.015
--------- beginning of main
11-14 16:33:34.136 24692 24692 W getprop : type=1400 audit(0.0:712062): avc: denied { search } for name="mm" dev="sysfs" ino=7033 scontext=u:r:system_app:s0 tcontext=u:object_r:sysfs_mm:s0 tclass=dir permissive=0 app=app.revanced.manager.flutter
11-14 16:33:39.813 25087 25087 E manager.flutte: Not starting debugger since process cannot load the jdwp agent.
11-14 16:33:39.815 25087 25087 D ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
11-14 16:33:39.827 25087 25087 D CompatibilityChangeReporter: Compat change id reported: 171979766; UID 10245; state: ENABLED
11-14 16:33:39.828 25087 25103 D AppScoutStateMachine: 25087-ScoutStateMachinecreated
11-14 16:33:39.879 25087 25087 D nativeloader: Configuring classloader-namespace for other apk /data/app/~~00HzDGd40qUdmD77Tn7bwA==/app.revanced.manager.flutter-vGwQ08Bf-ywuYRFfXu7bzA==/base.apk. target_sdk_version=33, uses_libraries=, library_path=/data/app/~~00HzDGd40qUdmD77Tn7bwA==/app.revanced.manager.flutter-vGwQ08Bf-ywuYRFfXu7bzA==/lib/arm64:/data/app/~~00HzDGd40qUdmD77Tn7bwA==/app.revanced.manager.flutter-vGwQ08Bf-ywuYRFfXu7bzA==/base.apk!/lib/arm64-v8a, permitted_path=/data:/mnt/expand:/data/user/0/app.revanced.manager.flutter
11-14 16:33:39.885 25087 25087 V GraphicsEnvironment: ANGLE Developer option for 'app.revanced.manager.flutter' set to: 'default'
11-14 16:33:39.885 25087 25087 V GraphicsEnvironment: App is not on the allowlist for updatable production driver.
11-14 16:33:39.886 25087 25087 I ForceDarkHelperStubImpl: initialize for app.revanced.manager.flutter , ForceDarkOrigin
11-14 16:33:39.887 25087 25087 D OpenGLRenderer: JNI_OnLoad success
11-14 16:33:39.888 25087 25087 I MiuiForceDarkConfig: setConfig density:2.750000, mainRule:0, secondaryRule:0, tertiaryRule:0
11-14 16:33:39.888 25087 25087 D NetworkSecurityConfig: No Network Security Config specified, using platform default
11-14 16:33:39.888 25087 25087 D NetworkSecurityConfig: No Network Security Config specified, using platform default
11-14 16:33:39.903 25087 25111 D libMEOW : meow new tls: 0xb400006ff80d49c0
11-14 16:33:39.904 25087 25111 D libMEOW : meow reload base cfg path: na
11-14 16:33:39.904 25087 25111 D libMEOW : meow reload overlay cfg path: na
11-14 16:33:39.905 25087 25111 W QT      : qt_process_init() called
11-14 16:33:39.905 25087 25111 E QT      : [QT]file does not exist
11-14 16:33:39.905 25087 25111 W QT      : Support!!
11-14 16:33:39.913 25087 25111 E QT      : [QT]file does not exist
11-14 16:33:39.913 25087 25111 D libMEOW : applied 1 plugins for [app.revanced.manager.flutter]:
11-14 16:33:39.913 25087 25111 D libMEOW :   plugin 1: [libMEOW_gift.so]:
11-14 16:33:39.915 25087 25111 D libMEOW : meow delete tls: 0xb400006ff80d49c0
11-14 16:33:39.936 25087 25087 W manager.flutter: type=1400 audit(0.0:712063): avc: denied { read } for name="max_map_count" dev="proc" ino=21825006 scontext=u:r:untrusted_app:s0:c245,c256,c512,c768 tcontext=u:object_r:proc_max_map_count:s0 tclass=file permissive=0 app=app.revanced.manager.flutter
11-14 16:33:39.947 25087 25087 D libMEOW : meow new tls: 0xb400006f8bb66700
11-14 16:33:39.947 25087 25087 D libMEOW : applied 1 plugins for [app.revanced.manager.flutter]:
11-14 16:33:39.947 25087 25087 D libMEOW :   plugin 1: [libMEOW_gift.so]:
11-14 16:33:39.958 25087 25087 D hw-ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
11-14 16:33:39.971 25087 25118 D libMEOW : meow new tls: 0xb400006f6ad4bb80
11-14 16:33:39.972 25087 25118 D libMEOW : applied 1 plugins for [app.revanced.manager.flutter]:
11-14 16:33:39.972 25087 25118 D libMEOW :   plugin 1: [libMEOW_gift.so]:
11-14 16:33:39.981 25087 25087 D ViewScrollStubImpl: the value of mScrollFrictionRes is: 0.015
11-14 16:33:39.986 25087 25087 I SurfaceFactory: [static] sSurfaceFactory = com.mediatek.view.impl.SurfaceFactoryImpl@a233745
11-14 16:33:39.998 25087 25087 D IS_CTS_MODE: false
11-14 16:33:39.998 25087 25087 D MULTI_WINDOW_SWITCH_ENABLED: false
11-14 16:33:39.998 25087 25087 D IS_CTS_MODE: false
11-14 16:33:39.998 25087 25087 D MULTI_WINDOW_SWITCH_ENABLED: false
11-14 16:33:39.998 25087 25087 D IS_CTS_MODE: false
11-14 16:33:39.998 25087 25087 D MULTI_WINDOW_SWITCH_ENABLED: false
11-14 16:33:39.999 25087 25087 D DecorView[]: getWindowModeFromSystem  windowmode is 1
11-14 16:33:40.017 25087 25087 D ViewRootImpl[MainActivity]: hardware acceleration = true, sRendererEnabled = true, forceHwAccelerated = false
11-14 16:33:40.018 25087 25087 D DecorView[]: getWindowModeFromSystem  windowmode is 1
11-14 16:33:40.018 25087 25087 D DecorView[]: updateDecorCaptionStatus displayWindowDecor is false
11-14 16:33:40.040 25087 25087 I BufferQueueConsumer: [](id:61ff00000000,api:0,p:-1,c:25087) connect: controlledByApp=false
11-14 16:33:40.041 25087 25087 I BLASTBufferQueue: [ViewRootImpl[MainActivity]#0] constructor()
11-14 16:33:40.042 25087 25108 D libMEOW : meow new tls: 0xb400006ff81ccec0
11-14 16:33:40.042 25087 25108 D libMEOW : applied 1 plugins for [app.revanced.manager.flutter]:
11-14 16:33:40.042 25087 25108 D libMEOW :   plugin 1: [libMEOW_gift.so]:
11-14 16:33:40.044 25087 25087 D SurfaceView: UPDATE null, mIsCastMode = false
11-14 16:33:40.047 25087 25087 I BufferQueueConsumer: [](id:61ff00000001,api:0,p:-1,c:25087) connect: controlledByApp=false
11-14 16:33:40.047 25087 25087 I BLASTBufferQueue: [SurfaceView[app.revanced.manager.flutter/app.revanced.manager.flutter.MainActivity]#1] constructor()
11-14 16:33:40.048 25087 25117 D libMEOW : meow new tls: 0xb400006f68550ec0
11-14 16:33:40.048 25087 25117 D libMEOW : applied 1 plugins for [app.revanced.manager.flutter]:
11-14 16:33:40.048 25087 25117 D libMEOW :   plugin 1: [libMEOW_gift.so]:
11-14 16:33:40.048 25087 25117 I BufferQueueProducer: [SurfaceView[app.revanced.manager.flutter/app.revanced.manager.flutter.MainActivity]#1(BLAST Consumer)1](id:61ff00000001,api:1,p:25087,c:25087) connect: api=1 producerControlledByApp=true
11-14 16:33:40.054 25087 25087 D SurfaceView: UPDATE Surface(name=SurfaceView[app.revanced.manager.flutter/app.revanced.manager.flutter.MainActivity])/@0x763959e, mIsProjectionMode = false
11-14 16:33:40.054 25087 25087 D SurfaceControl: nativeSetScreenProjection ===> setScreenProjection
11-14 16:33:40.054 25087 25087 D SurfaceControl: nativeSetScreenProjection ===> setScreenProjection
11-14 16:33:40.055 25087 25087 D SurfaceControl: nativeSetScreenProjection ===> setScreenProjection
11-14 16:33:40.055 25087 25108 I BufferQueueProducer: [ViewRootImpl[MainActivity]#0(BLAST Consumer)0](id:61ff00000000,api:1,p:25087,c:25087) connect: api=1 producerControlledByApp=true
11-14 16:33:40.119 25087 25116 I flutter : ReVanced API: Using CronetEngine + true
11-14 16:33:40.131 25087 25144 W SQLiteLog: (28) double-quoted string literal: "221F04DDCF86133E6D2E6344BA97034F"
11-14 16:33:40.131 25087 25144 W SQLiteLog: (28) double-quoted string literal: "22D1CC376C54BE531C0A569AA1492CA8"
11-14 16:33:40.153 25087 25116 I flutter : dynamic_color: Core palette detected.
11-14 16:33:40.189 25087 25117 E ion     : ioctl c0044901 failed with code -1: Invalid argument
11-14 16:33:40.190 25087 25087 D DecorView[]: getWindowModeFromSystem  windowmode is 1
11-14 16:33:40.190 25087 25087 D DecorView[]: updateDecorCaptionStatus displayWindowDecor is false
11-14 16:33:40.190 25087 25117 D hw-ProcessState: Binder ioctl to enable oneway spam detection failed: Invalid argument
11-14 16:33:40.191 25087 25144 W SQLiteLog: (28) double-quoted string literal: "129C81370C8C8A20B85E5575BDF12E85"
11-14 16:33:40.191 25087 25144 W SQLiteLog: (28) double-quoted string literal: "22D1CC376C54BE531C0A569AA1492CA8"
11-14 16:33:40.250 25087 25117 E BLASTBufferQueue: [SurfaceView[app.revanced.manager.flutter/app.revanced.manager.flutter.MainActivity]#1](f:0,a:0) rejecting buffer:active_size=1080x2400, requested_size=1080x2400 buffer{size=1080x2270 transform=0}
11-14 16:33:40.256 25156 25156 W sh      : type=1400 audit(0.0:712064): avc: denied { search } for name="mm" dev="sysfs" ino=7033 scontext=u:r:untrusted_app:s0:c245,c256,c512,c768 tcontext=u:object_r:sysfs_mm:s0 tclass=dir permissive=0 app=app.revanced.manager.flutter
11-14 16:33:40.272 25169 25169 W stat    : type=1400 audit(0.0:712065): avc: denied { search } for name="mm" dev="sysfs" ino=7033 scontext=u:r:untrusted_app:s0:c245,c256,c512,c768 tcontext=u:object_r:sysfs_mm:s0 tclass=dir permissive=0 app=app.revanced.manager.flutter
11-14 16:33:40.276 25156 25156 W sh      : type=1400 audit(0.0:712066): avc: denied { read } for name="/" dev="dm-10" ino=2 scontext=u:r:untrusted_app:s0:c245,c256,c512,c768 tcontext=u:object_r:rootfs:s0 tclass=dir permissive=0 app=app.revanced.manager.flutter
11-14 16:33:40.280 25172 25172 W stat    : type=1400 audit(0.0:712067): avc: denied { search } for name="mm" dev="sysfs" ino=7033 scontext=u:r:untrusted_app:s0:c245,c256,c512,c768 tcontext=u:object_r:sysfs_mm:s0 tclass=dir permissive=0 app=app.revanced.manager.flutter
11-14 16:33:40.615 25087 25087 I Choreographer: Skipped 37 frames!  The application may be doing too much work on its main thread.
11-14 16:33:40.623 25087 25108 E OpenGLRenderer: fbcNotifyFrameComplete error: undefined symbol: fbcNotifyFrameComplete
11-14 16:33:40.623 25087 25108 E OpenGLRenderer: fbcNotifyNoRender error: undefined symbol: fbcNotifyNoRender
11-14 16:33:40.623 25087 25108 I libPerfCtl: fbcNotifySwapBuffers ret=0
11-14 16:33:40.626 25087 25087 W Looper  : PerfMonitor doFrame : time=11ms vsyncFrame=0 latency=414ms procState=-1 historyMsgCount=16 (msgIndex=6 wall=359ms seq=39 h=android.os.Handler c=io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0) (msgIndex=7 wall=359ms seq=39 h=android.os.Handler c=io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0) (msgIndex=14 wall=359ms seq=39 h=android.os.Handler c=io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0)
11-14 16:33:40.636 25087 25087 D DecorView[]: onWindowFocusChanged hasWindowFocus true
11-14 16:33:41.318 25087 25144 W SQLiteLog: (28) double-quoted string literal: "484091CDFBF54C9C82180F6C7CC4C586"
11-14 16:33:41.318 25087 25144 W SQLiteLog: (28) double-quoted string literal: "EF0FA371F35CB5B82F68EAEDC459E13F"
11-14 16:33:41.321 25087 25144 W SQLiteLog: (28) double-quoted string literal: "484091CDFBF54C9C82180F6C7CC4C586"
11-14 16:33:41.321 25087 25144 W SQLiteLog: (28) double-quoted string literal: "159016B84404A546ECFE403E04324C59"
11-14 16:33:49.748 25582 25582 W logcat  : type=1400 audit(0.0:712131): avc: denied { search } for name="mm" dev="sysfs" ino=7033 scontext=u:r:untrusted_app:s0:c245,c256,c512,c768 tcontext=u:object_r:sysfs_mm:s0 tclass=dir permissive=0 app=app.revanced.manager.flutter

Screenshots or videos

Screenshot_2022-11-14-16-25-53-602_app revanced manager flutter
Screenshot_2022-11-14-16-25-56-204_app revanced manager flutter
Screenshot_2022-11-14-16-26-03-618_app revanced manager flutter
Screenshot_2022-11-14-16-35-55-249_app revanced manager flutter

Solution

Fix 'Open Links Directly' extension

Additional context

NA

bug: Missing Intent functionality?

Type

Other

Bug description

Using Reddit Sync and opening a post that links to Youtube causes Revanced Youtube to crash, Bogdan on Discord says this was cause of a missing Intent.

Steps to reproduce

  1. Download Reddit Sync (There's probably other apps that cause this too)
  2. Search for a post that links to Youtube
  3. click it and see the crash popup

Relevant log output

7-27 18:03:21.160  1392  1392 E revanced: ReVancedUtils: Context is null!
07-27 18:03:21.160  1392  1392 E revanced: ReVancedUtils: Context is null, returning null!
07-27 18:03:21.160  1392  1392 E revanced: SettingsEnum: Context returned null! Setings NOT initialized
07-27 18:03:21.175  1392  1392 E AndroidRuntime: FATAL EXCEPTION: main
07-27 18:03:21.175  1392  1392 E AndroidRuntime: Process: com.google.android.youtube.player, PID: 1392
07-27 18:03:21.175  1392  1392 E AndroidRuntime: java.lang.ExceptionInInitializerError
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at xlr.<init>(PG:7)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at wsh.c(PG:15)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at wsh.a(PG:1)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at apoe.a(PG:2)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at apod.a(PG:2)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at aamj.a(PG:1)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at apoe.a(PG:2)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at apod.a(PG:2)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at kyw.p(PG:2)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at zfy.d(PG:1)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at kyt.a(PG:1)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at kyj.<init>(PG:10)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at kyj.M(PG:1)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at com.google.android.apps.youtube.embeddedplayer.service.service.jar.ApiPlayerService.<init>(PG:35)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at com.google.android.apps.youtube.embeddedplayer.service.service.jar.ApiPlayerFactoryService$1.run(PG:1)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:938)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:247)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:8676)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
07-27 18:03:21.175  1392  1392 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at app.revanced.integrations.settings.SettingsEnum.getBoolean(SettingsEnum.java:227)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at app.revanced.integrations.utils.LogHelper.debug(LogHelper.java:12)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at app.revanced.integrations.sponsorblock.PlayerController.setCurrentVideoTime(PlayerController.java:135)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at app.revanced.integrations.sponsorblock.PlayerController.setCurrentVideoTimeHighPrecision(PlayerController.java:227)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at xfm.<init>(Unknown Source:0)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at xfm.a(PG:1)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        at xfm.<clinit>(PG:2)
07-27 18:03:21.175  1392  1392 E AndroidRuntime:        ... 22 more

Screenshots or videos

No response

Solution

Make it not crash?
The subtext of this field says "If applicable" but it's non optional therefore i have to write something here.

Additional context

It works fine if i uninstall ReVanced and use the normal Youtube app.

feat: <title> Playback speed

Type

Functionality

Issue

Need more playback options

Feature

Do you add more playback speed options like 2.5x 3x 4x etc

Motivation

most of the time I listen to podcasts on youtube. in chrome, I can easily change speed via an extension but in-app the speed locked max 2x. some videos are too slow that need to watch at 3x to save time. this feature will a very time-saving for us. thank you so much for your attention and participation.

Additional context

No response

bug(youtube): crash caused by memory leak

Type

Other

Bug description

After actively using the app for a while, it starts to slow down, videos hang randomly and eventually the app crashes.

Steps to reproduce

Repeatedly triggering litho patches (especially general-ads) seem to cause this problem.

Relevant log output

java.lang.OutOfMemoryError: Failed to allocate a 232 byte allocation with 3174312 free bytes and 3099KB until OOM, target footprint 536870912, growth limit 536870912; giving up on allocation because <1% of heap free after GC.
stacktrace: java.lang.RuntimeException: Exception while executing runnable dkq@3884ad6
	at adtr.run(PG:7)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at cfp.run(PG:16)
	at java.lang.Thread.run(Thread.java:1013)
Caused by: java.lang.RuntimeException: java.lang.OutOfMemoryError: Failed to allocate a 232 byte allocation with 3174312 free bytes and 3099KB until OOM, target footprint 536870912, growth limit 536870912; giving up on allocation because <1% of heap free after GC.
	at dkr.a(PG:25)
	at com.facebook.litho.ComponentTree.w(PG:16)
	at dkq.a(PG:1)
	at dof.run(PG:1)
	at afcj.run(PG:2)
	at adtr.run(PG:4)
	... 4 more
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Failed to allocate a 232 byte allocation with 3174312 free bytes and 3099KB until OOM, target footprint 536870912, growth limit 536870912; giving up on allocation because <1% of heap free after GC.
	at java.util.concurrent.FutureTask.report(FutureTask.java:123)
	at java.util.concurrent.FutureTask.get(FutureTask.java:193)
	at aorz.af(PG:1)
	at dkr.a(PG:13)
	... 9 more
Caused by: java.lang.OutOfMemoryError: Failed to allocate a 232 byte allocation with 3174312 free bytes and 3099KB until OOM, target footprint 536870912, growth limit 536870912; giving up on allocation because <1% of heap free after GC.
	at java.lang.StringFactory.newStringFromChars(StringFactory.java:112)
	at java.lang.StringBuilder.toString(StringBuilder.java:413)
	at app.revanced.integrations.patches.LithoFilterPatch.filter(LithoFilterPatch.java:1)
	at nvb.c(PG:16)
	at nvb.d(PG:13)
	at nvb.c(PG:83)
	at nvb.b(PG:3)
	at fsy.a(PG:4)
	at asep.tl(PG:2)
	at ascc.tl(PG:1)
	at arly.tl(PG:1)
	at oiu.tl(PG:4)
	at arly.tl(PG:1)
	at arzh.c(PG:3)
	at nxv.componentDidUpdate(PG:35)
	at nxp.a(PG:16)
	at arzj.f(PG:3)
	at arip.aI(PG:3)
	at arzy.f(PG:1)
	at arip.aI(PG:3)
	at asbu.f(PG:9)
	at arip.aI(PG:3)
	at arzy.f(PG:1)
	at arip.aI(PG:3)
	at arzn.f(PG:4)
	at arip.aI(PG:3)
	at ascd.f(PG:1)
	at arip.aI(PG:3)
	at aser.f(PG:5)
	at arip.aI(PG:3)
	at nzf.f(PG:7)
	at nxz.e(PG:2)
	at nxz.a(PG:8)
	at nxn.c(PG:3)
	at dmk.c(PG:8)
	at dmk.a(PG:1)
	at dlh.bp(PG:1)
	at djw.d(PG:11)
	at dmk.c(PG:5)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.a(PG:1)
	at dlh.bp(PG:1)
	at djw.d(PG:11)
	at dmk.c(PG:5)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.a(PG:1)
	at dlh.bp(PG:1)
	at dnx.d(PG:11)
	at dmk.c(PG:5)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.a(PG:1)
	at dlh.bp(PG:1)
	at djw.d(PG:11)
	at dmk.c(PG:5)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.a(PG:1)
	at dpe.d(PG:1)
	at dmk.c(PG:5)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.a(PG:1)
	at dlh.bp(PG:1)
	at djw.d(PG:11)
	at dmk.c(PG:5)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.a(PG:1)
	at dlh.bp(PG:1)
	at djw.d(PG:11)
	at dmk.c(PG:5)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.a(PG:1)
	at dpe.d(PG:1)
	at dmk.c(PG:5)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.a(PG:1)
	at dlh.bp(PG:1)
	at djw.d(PG:11)
	at dmk.c(PG:5)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.b(PG:1)
	at dmk.c(PG:10)
	at dmk.b(PG:1)
	at dmk.i(PG:2)
	at dmn.m(PG:19)
	at ctw.call(PG:13)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at dkr.a(PG:2)
	... 9 more

Screenshots or videos

No response

Solution

No response

Additional context

No response

Further litho blockages

New toggles to add on litho settings:

The shelf that contains videos from other channels, when you search for a specific channel:

templateBlockList.add("horizontal_video_shelf")

The shelf that contains last posts sent by a specific channel:

templateBlockList.add("post_shelf")

APK Android Studio

Is Android Studio required for compiling an APK to test ReVanced?
Are there particular instructions for what's required to export to an APK?

feat: option to wait for Sponsorblock segments before playing a video

Type

Functionality

Issue

Videos with segments at the beginning may start playing before the sponsorblock segments load, missing some or all of a segment that should've been skipped

Feature

Create a setting to wait a user-defined amount of time (default 300\500ms?) before playing the video.

Motivation

It is an annoyance that most users of the app will doubtless experience at some point, especially when connected to cellular data

Additional context

No response

down swipe bug

swipe down to change volume&brightness make exit full screen. make two fingure swipe down to exit full screen.

feat: add version number to released file

Type

Cosmetic

Issue

released file have generic name

Feature

add version number to the file name

Motivation

consistency with all other revanced releases

Additional context

No response

Exception in thread "main" java.lang.NoSuchMethodError: java.util.jar.JarEntry.g etRealName()Ljava/lang/String;

This is my full log:
C:\Users\admin\Downloads\Extract&Run>java -jar revanced-cli-all.jar -a yt.apk -c
-o revanced.apk -b revanced-patches.jar -m app-release-unsigned.apk --experime
ntal
INFO: Deleting existing resource cache directory
INFO: Decoding resources
INFO: Reading dex files
INFO: Merging app-release-unsigned.apk
Exception in thread "main" java.lang.NoSuchMethodError: java.util.jar.JarEntry.g
etRealName()Ljava/lang/String;
at app.revanced.patcher.util.patch.implementation.JarPatchBundle$loadPat
ches$2.invoke(JarPatchBundle.kt:27)
at app.revanced.patcher.util.patch.implementation.JarPatchBundle$loadPat
ches$2.invoke(JarPatchBundle.kt:13)
at app.revanced.patcher.util.patch.util.StringIterator.next(StringIterat
or.kt:9)
at app.revanced.patcher.util.patch.util.StringIterator.next(StringIterat
or.kt:3)
at app.revanced.patcher.util.patch.base.PatchBundle.loadPatches$revanced
_patcher(PatchBundle.kt:19)
at app.revanced.patcher.util.patch.implementation.JarPatchBundle.loadPat
ches(JarPatchBundle.kt:13)
at app.revanced.utils.patcher.PatcherKt.addPatchesFiltered(Patcher.kt:22
)
at app.revanced.cli.patcher.Patcher.start$revanced_cli(Patcher.kt:19)
at app.revanced.cli.command.MainCommand.run(MainCommand.kt:122)
at picocli.CommandLine.executeUserObject(CommandLine.java:1939)
at picocli.CommandLine.access$1300(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSame
Parent(CommandLine.java:2358)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.ja
va:2179)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
at picocli.CommandLine.execute(CommandLine.java:2078)
at app.revanced.cli.main.MainKt.main(Main.kt:7)

C:\Users\admin\Downloads\Extract&Run>java -jar revanced-cli-all.jar -a yt.apk -c
-o revanced.apk -b revanced-patches.jar -m app-release-unsigned.apk --experime
ntal
INFO: Decoding resources
INFO: Reading dex files
INFO: Merging app-release-unsigned.apk
Exception in thread "main" java.lang.NoSuchMethodError: java.util.jar.JarEntry.g
etRealName()Ljava/lang/String;
at app.revanced.patcher.util.patch.implementation.JarPatchBundle$loadPat
ches$2.invoke(JarPatchBundle.kt:27)
at app.revanced.patcher.util.patch.implementation.JarPatchBundle$loadPat
ches$2.invoke(JarPatchBundle.kt:13)
at app.revanced.patcher.util.patch.util.StringIterator.next(StringIterat
or.kt:9)
at app.revanced.patcher.util.patch.util.StringIterator.next(StringIterat
or.kt:3)
at app.revanced.patcher.util.patch.base.PatchBundle.loadPatches$revanced
_patcher(PatchBundle.kt:19)
at app.revanced.patcher.util.patch.implementation.JarPatchBundle.loadPat
ches(JarPatchBundle.kt:13)
at app.revanced.utils.patcher.PatcherKt.addPatchesFiltered(Patcher.kt:22
)
at app.revanced.cli.patcher.Patcher.start$revanced_cli(Patcher.kt:19)
at app.revanced.cli.command.MainCommand.run(MainCommand.kt:122)
at picocli.CommandLine.executeUserObject(CommandLine.java:1939)
at picocli.CommandLine.access$1300(CommandLine.java:145)
at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSame
Parent(CommandLine.java:2358)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2352)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2314)
at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.ja
va:2179)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2316)
at picocli.CommandLine.execute(CommandLine.java:2078)
at app.revanced.cli.main.MainKt.main(Main.kt:7)

Image: https://i.imgur.com/4ivDAvz.png

Another new result added

As per established tradition, a new element (in this case shelf) has been added to the app:

"browsy_bar"

It shown in the results list, after searching for a famous actor.

Immagine 2022-07-08 082545

bug: shorts shelf still visible

Type

Cosmetic

Bug description

Shorts shelf is still visible in YouTube after patching.

Steps to reproduce

Shorts might show up at home.

Relevant log output

-

Screenshots or videos

No response

Solution

Shorts are blocked by their identifier. Sometimes the components don't have an identifier though, checking against the path builder should fix the issue.

Additional context

No response

[Suggestion] Refactor Integrations

I would like to contribute to revanced by refactoring the integrations and cleaning up the codebase. Like creating a new package where all the classes from original vanced are being stored and just cleanup everything.
I saw that multiple Patches depend on the same classes in integrations. For a code cleanup this should be changed. I want to do that too.

Integration flag

Need a clear instructions about flagas thats supportted till now:
I only know some of them , like -i amoled, -i shorts-button -i minimized-playback -i old-quality-layout -i disable-create-button -i general-ads -i video-ads -i seekbar-tapping -i upgrade-button-remover -i tasteBuilder-remover -i background-play

bug: Swipe for brighness and volume doesn't work after double tap

Type

Cosmetic

Bug description

After double tap on the video, swipe gestures for brightness and volume don't work, instead it uses default animations to exit full screen (swipe down), open 'next' videos (swipe up). Player controls are not shown, so it should have worked but it's not working.

Steps to reproduce

Step 1. Disable press-to-swipe for volume and brightness gestures.
Step 2. Open any video.
Step 3. Double tap on the right or left of the screen to seek videos (default for 10 seconds).
Step 4. Try to swipe.

Relevant log output

No logs

Screenshots or videos

No response

Solution

No response

Additional context

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.