feat(YouTube Music/Hide general ads): now patch hides new type of interstitial banner

This commit is contained in:
inotia00 2023-12-09 16:08:55 +09:00
parent ab23a84179
commit 9a815e98ab
3 changed files with 33 additions and 1 deletions

View File

@ -7,6 +7,7 @@ import app.revanced.patcher.patch.BytecodePatch
import app.revanced.patcher.patch.annotation.CompatiblePackage import app.revanced.patcher.patch.annotation.CompatiblePackage
import app.revanced.patcher.patch.annotation.Patch import app.revanced.patcher.patch.annotation.Patch
import app.revanced.patches.music.ads.general.fingerprints.FloatingLayoutFingerprint import app.revanced.patches.music.ads.general.fingerprints.FloatingLayoutFingerprint
import app.revanced.patches.music.ads.general.fingerprints.InterstitialsContainerFingerprint
import app.revanced.patches.music.ads.general.fingerprints.NotifierShelfFingerprint import app.revanced.patches.music.ads.general.fingerprints.NotifierShelfFingerprint
import app.revanced.patches.music.ads.music.MusicAdsPatch import app.revanced.patches.music.ads.music.MusicAdsPatch
import app.revanced.patches.music.utils.integrations.Constants.ADS_PATH import app.revanced.patches.music.utils.integrations.Constants.ADS_PATH
@ -15,11 +16,11 @@ import app.revanced.patches.music.utils.litho.LithoFilterPatch
import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch
import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.ButtonContainer import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.ButtonContainer
import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.FloatingLayout import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.FloatingLayout
import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.InterstitialsContainer
import app.revanced.patches.music.utils.settings.CategoryType import app.revanced.patches.music.utils.settings.CategoryType
import app.revanced.patches.music.utils.settings.SettingsPatch import app.revanced.patches.music.utils.settings.SettingsPatch
import app.revanced.util.exception import app.revanced.util.exception
import app.revanced.util.getWideLiteralInstructionIndex import app.revanced.util.getWideLiteralInstructionIndex
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
@Patch( @Patch(
@ -37,12 +38,28 @@ import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
object GeneralAdsPatch : BytecodePatch( object GeneralAdsPatch : BytecodePatch(
setOf( setOf(
FloatingLayoutFingerprint, FloatingLayoutFingerprint,
InterstitialsContainerFingerprint,
NotifierShelfFingerprint NotifierShelfFingerprint
) )
) { ) {
override fun execute(context: BytecodeContext) { override fun execute(context: BytecodeContext) {
LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR) LithoFilterPatch.addFilter(FILTER_CLASS_DESCRIPTOR)
/**
* Hides interstitials banner (non-litho)
*/
InterstitialsContainerFingerprint.result?.let {
it.mutableMethod.apply {
val targetIndex = getWideLiteralInstructionIndex(InterstitialsContainer) + 2
val targetRegister = getInstruction<OneRegisterInstruction>(targetIndex).registerA
addInstruction(
targetIndex + 1,
"invoke-static {v$targetRegister}, $ADS_PATH/InterstitialsBannerPatch;->hideInterstitialsBanner(Landroid/view/View;)V"
)
}
} ?: throw InterstitialsContainerFingerprint.exception
/** /**
* Hides premium promotion popup * Hides premium promotion popup
*/ */

View File

@ -0,0 +1,13 @@
package app.revanced.patches.music.ads.general.fingerprints
import app.revanced.patcher.extensions.or
import app.revanced.patches.music.utils.resourceid.SharedResourceIdPatch.InterstitialsContainer
import app.revanced.util.fingerprint.LiteralValueFingerprint
import com.android.tools.smali.dexlib2.AccessFlags
object InterstitialsContainerFingerprint : LiteralValueFingerprint(
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
parameters = listOf("Ljava/lang/Object;"),
literalSupplier = { InterstitialsContainer }
)

View File

@ -25,6 +25,7 @@ object SharedResourceIdPatch : ResourcePatch() {
var FloatingLayout: Long = -1 var FloatingLayout: Long = -1
var HistoryMenuItem: Long = -1 var HistoryMenuItem: Long = -1
var InlineTimeBarAdBreakMarkerColor: Long = -1 var InlineTimeBarAdBreakMarkerColor: Long = -1
var InterstitialsContainer: Long = -1
var IsTablet: Long = -1 var IsTablet: Long = -1
var MenuEntry: Long = -1 var MenuEntry: Long = -1
var MusicMenuLikeButtons: Long = -1 var MusicMenuLikeButtons: Long = -1
@ -55,6 +56,7 @@ object SharedResourceIdPatch : ResourcePatch() {
FloatingLayout = find(ID, "floating_layout") FloatingLayout = find(ID, "floating_layout")
HistoryMenuItem = find(ID, "history_menu_item") HistoryMenuItem = find(ID, "history_menu_item")
InlineTimeBarAdBreakMarkerColor = find(COLOR, "inline_time_bar_ad_break_marker_color") InlineTimeBarAdBreakMarkerColor = find(COLOR, "inline_time_bar_ad_break_marker_color")
InterstitialsContainer = find(ID, "interstitials_container")
IsTablet = find(BOOL, "is_tablet") IsTablet = find(BOOL, "is_tablet")
MenuEntry = find(LAYOUT, "menu_entry") MenuEntry = find(LAYOUT, "menu_entry")
MusicMenuLikeButtons = find(LAYOUT, "music_menu_like_buttons") MusicMenuLikeButtons = find(LAYOUT, "music_menu_like_buttons")