mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-23 18:51:03 +00:00
feat(YouTube Music): Add Unlock Android Auto Media Browser patch (#6477)
Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de> (cherry picked from commit 89645dcc2e13603b8f2fedb5e16231cb396e5965)
This commit is contained in:
committed by
oSumAtrIX
parent
9c18e1e649
commit
5edd9dccae
@@ -501,6 +501,10 @@ public final class app/revanced/patches/music/misc/androidauto/BypassCertificate
|
|||||||
public static final fun getBypassCertificateChecksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getBypassCertificateChecksPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final class app/revanced/patches/music/misc/androidauto/UnlockAndroidAutoMediaBrowserPatchKt {
|
||||||
|
public static final fun getUnlockAndroidAutoMediaBrowserPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
|
}
|
||||||
|
|
||||||
public final class app/revanced/patches/music/misc/backgroundplayback/BackgroundPlaybackPatchKt {
|
public final class app/revanced/patches/music/misc/backgroundplayback/BackgroundPlaybackPatchKt {
|
||||||
public static final fun getBackgroundPlaybackPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
public static final fun getBackgroundPlaybackPatch ()Lapp/revanced/patcher/patch/BytecodePatch;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,24 +5,11 @@ import app.revanced.patches.music.misc.extension.sharedExtensionPatch
|
|||||||
import app.revanced.patches.music.misc.settings.settingsPatch
|
import app.revanced.patches.music.misc.settings.settingsPatch
|
||||||
import app.revanced.util.returnEarly
|
import app.revanced.util.returnEarly
|
||||||
|
|
||||||
|
@Deprecated("This patch is useless by itself and has been merged into another patch.", ReplaceWith("unlockAndroidAutoMediaBrowserPatch"))
|
||||||
|
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
val bypassCertificateChecksPatch = bytecodePatch(
|
val bypassCertificateChecksPatch = bytecodePatch(
|
||||||
name = "Bypass certificate checks",
|
|
||||||
description = "Bypasses certificate checks which prevent YouTube Music from working on Android Auto.",
|
description = "Bypasses certificate checks which prevent YouTube Music from working on Android Auto.",
|
||||||
) {
|
) {
|
||||||
dependsOn(
|
dependsOn(unlockAndroidAutoMediaBrowserPatch)
|
||||||
sharedExtensionPatch,
|
|
||||||
settingsPatch
|
|
||||||
)
|
|
||||||
|
|
||||||
compatibleWith(
|
|
||||||
"com.google.android.apps.youtube.music"(
|
|
||||||
"7.29.52",
|
|
||||||
"8.10.52"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
execute {
|
|
||||||
checkCertificateFingerprint.method.returnEarly(true)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package app.revanced.patches.music.misc.androidauto
|
package app.revanced.patches.music.misc.androidauto
|
||||||
|
|
||||||
import com.android.tools.smali.dexlib2.AccessFlags
|
|
||||||
import app.revanced.patcher.fingerprint
|
import app.revanced.patcher.fingerprint
|
||||||
|
|
||||||
internal val checkCertificateFingerprint = fingerprint {
|
internal val checkCertificateFingerprint = fingerprint {
|
||||||
@@ -10,4 +9,13 @@ internal val checkCertificateFingerprint = fingerprint {
|
|||||||
"X509",
|
"X509",
|
||||||
"Failed to get certificate" // Partial String match.
|
"Failed to get certificate" // Partial String match.
|
||||||
)
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val searchMediaItemsConstructorFingerprint = fingerprint {
|
||||||
|
returns("V")
|
||||||
|
strings("ytm_media_browser/search_media_items")
|
||||||
|
}
|
||||||
|
|
||||||
|
internal val searchMediaItemsExecuteFingerprint = fingerprint {
|
||||||
|
parameters()
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package app.revanced.patches.music.misc.androidauto
|
||||||
|
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.instructions
|
||||||
|
import app.revanced.patcher.extensions.InstructionExtensions.replaceInstruction
|
||||||
|
import app.revanced.patcher.patch.bytecodePatch
|
||||||
|
import app.revanced.util.getReference
|
||||||
|
import app.revanced.util.registersUsed
|
||||||
|
import app.revanced.util.returnEarly
|
||||||
|
import com.android.tools.smali.dexlib2.Opcode
|
||||||
|
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
||||||
|
|
||||||
|
@Suppress("unused")
|
||||||
|
val unlockAndroidAutoMediaBrowserPatch = bytecodePatch(
|
||||||
|
name = "Unlock Android Auto Media Browser",
|
||||||
|
description = "Unlocks Android Auto Media Browser which enables the search function including speech to text.",
|
||||||
|
) {
|
||||||
|
compatibleWith(
|
||||||
|
"com.google.android.apps.youtube.music"(
|
||||||
|
"7.29.52",
|
||||||
|
"8.10.52"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
execute {
|
||||||
|
checkCertificateFingerprint.method.returnEarly(true)
|
||||||
|
|
||||||
|
searchMediaItemsExecuteFingerprint
|
||||||
|
.match(searchMediaItemsConstructorFingerprint.classDef)
|
||||||
|
.method.apply {
|
||||||
|
val targetIndex = instructions.indexOfFirst {
|
||||||
|
it.opcode == Opcode.IGET_OBJECT && it.getReference<FieldReference>()?.type == "Ljava/lang/String;"
|
||||||
|
}
|
||||||
|
|
||||||
|
val register = instructions[targetIndex].registersUsed.first()
|
||||||
|
replaceInstruction(targetIndex, "const-string v$register, \"com.google.android.apps.youtube.music\"")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user