diff --git a/src/main/kotlin/app/revanced/patches/shared/integrations/BaseIntegrationsPatch.kt b/src/main/kotlin/app/revanced/patches/shared/integrations/BaseIntegrationsPatch.kt index 3a33da4e9..674b7ed36 100644 --- a/src/main/kotlin/app/revanced/patches/shared/integrations/BaseIntegrationsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/shared/integrations/BaseIntegrationsPatch.kt @@ -7,7 +7,7 @@ import app.revanced.patcher.patch.BytecodePatch import app.revanced.patcher.patch.PatchException import app.revanced.patches.shared.integrations.BaseIntegrationsPatch.IntegrationsFingerprint.IRegisterResolver import app.revanced.patches.shared.integrations.Constants.INTEGRATIONS_UTILS_CLASS_DESCRIPTOR -import app.revanced.util.resultOrThrow +import app.revanced.util.deprecatedOrResultOrThrow import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.iface.ClassDef import com.android.tools.smali.dexlib2.iface.Method @@ -53,7 +53,7 @@ abstract class BaseIntegrationsPatch( ) { fun invoke(integrationsDescriptor: String) { - resultOrThrow().mutableMethod.let { method -> + deprecatedOrResultOrThrow()?.mutableMethod?.let { method -> val insertIndex = insertIndexResolver(method) val contextRegister = contextRegisterResolver(method) diff --git a/src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/ShortsToolBarFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/ShortsToolBarFingerprint.kt index f0de713d8..2cae4bf8d 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/ShortsToolBarFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/shorts/components/fingerprints/ShortsToolBarFingerprint.kt @@ -8,7 +8,9 @@ import com.android.tools.smali.dexlib2.Opcode internal object ShortsToolBarFingerprint : MethodFingerprint( returnType = "V", accessFlags = AccessFlags.PUBLIC or AccessFlags.CONSTRUCTOR, - parameters = listOf("Z", "L", "L"), opcodes = listOf(Opcode.IPUT_BOOLEAN), - strings = listOf("Null topBarButtons") + strings = listOf("Null topBarButtons"), + customFingerprint = { methodDef, _ -> + methodDef.parameterTypes.firstOrNull() == "Z" + } ) \ No newline at end of file diff --git a/src/main/kotlin/app/revanced/patches/youtube/utils/integrations/fingerprints/StandalonePlayerActivityFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/utils/integrations/fingerprints/StandalonePlayerActivityFingerprint.kt index 2b643e64f..d42bea6d9 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/utils/integrations/fingerprints/StandalonePlayerActivityFingerprint.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/utils/integrations/fingerprints/StandalonePlayerActivityFingerprint.kt @@ -8,7 +8,10 @@ import app.revanced.patches.shared.integrations.BaseIntegrationsPatch.Integratio * In 2023 supported was ended and is no longer available, * but this may still be used by older apps: * https://developers.google.com/youtube/android/player + * + * Deprecated in YouTube v19.38.xx+. */ +@Deprecated("Fingerprint is obsolete and will be deleted soon") internal object StandalonePlayerActivityFingerprint : IntegrationsFingerprint( customFingerprint = { methodDef, _ -> methodDef.definingClass == "Lcom/google/android/youtube/api/StandalonePlayerActivity;" diff --git a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt index 1065d8ec6..e512a9236 100644 --- a/src/main/kotlin/app/revanced/util/BytecodeUtils.kt +++ b/src/main/kotlin/app/revanced/util/BytecodeUtils.kt @@ -33,6 +33,9 @@ import com.android.tools.smali.dexlib2.util.MethodUtil const val REGISTER_TEMPLATE_REPLACEMENT: String = "REGISTER_INDEX" +fun MethodFingerprint.deprecatedOrResultOrThrow() = + if (javaClass.annotations[0].toString().contains("Deprecated")) result else resultOrThrow() + fun MethodFingerprint.resultOrThrow() = result ?: throw exception /**