From dab8900e22498a86c7a1c2fd8f1bcc29dec1272c Mon Sep 17 00:00:00 2001 From: oSumAtrIX Date: Mon, 11 Dec 2023 23:04:37 +0100 Subject: [PATCH] fix(YouTube - GmsCore support): Check for availability earlier to prevent crashing without any notice --- api/revanced-patches.api | 4 ++++ .../patches/youtube/misc/gms/GmsCoreSupportPatch.kt | 7 +++---- .../misc/gms/fingerprints/HomeActivityFingerprint.kt | 9 +++++++++ .../youtube/misc/integrations/IntegrationsPatch.kt | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/HomeActivityFingerprint.kt diff --git a/api/revanced-patches.api b/api/revanced-patches.api index f34e5c55b..54ae49970 100644 --- a/api/revanced-patches.api +++ b/api/revanced-patches.api @@ -1423,6 +1423,10 @@ public final class app/revanced/patches/youtube/misc/gms/GmsCoreSupportResourceP public fun execute (Lapp/revanced/patcher/data/ResourceContext;)V } +public final class app/revanced/patches/youtube/misc/gms/fingerprints/HomeActivityFingerprint : app/revanced/patches/shared/integrations/AbstractIntegrationsPatch$IntegrationsFingerprint { + public static final field INSTANCE Lapp/revanced/patches/youtube/misc/gms/fingerprints/HomeActivityFingerprint; +} + public final class app/revanced/patches/youtube/misc/integrations/IntegrationsPatch : app/revanced/patches/shared/integrations/AbstractIntegrationsPatch { public static final field INSTANCE Lapp/revanced/patches/youtube/misc/integrations/IntegrationsPatch; } diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt index 26f668efb..aeaa4a049 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/GmsCoreSupportPatch.kt @@ -9,7 +9,6 @@ import app.revanced.patches.youtube.misc.gms.Constants.REVANCED_YOUTUBE_PACKAGE_ import app.revanced.patches.youtube.misc.gms.Constants.YOUTUBE_PACKAGE_NAME import app.revanced.patches.youtube.misc.gms.GmsCoreSupportResourcePatch.gmsCoreVendorOption import app.revanced.patches.youtube.misc.gms.fingerprints.* -import app.revanced.patches.youtube.shared.fingerprints.WatchWhileActivityFingerprint import app.revanced.util.exception @@ -50,17 +49,17 @@ object GmsCoreSupportPatch : AbstractGmsCoreSupportPatch( CastDynamiteModuleV2Fingerprint, CastContextFetchFingerprint, PrimeMethodFingerprint, - WatchWhileActivityFingerprint + HomeActivityFingerprint, ) ) { override val gmsCoreVendor by gmsCoreVendorOption override fun execute(context: BytecodeContext) { // Check the availability of GmsCore. - WatchWhileActivityFingerprint.result?.mutableMethod?.addInstruction( + HomeActivityFingerprint.result?.mutableMethod?.addInstruction( 0, "invoke-static {}, Lapp/revanced/integrations/patches/GmsCoreSupport;->checkAvailability()V" - ) ?: throw WatchWhileActivityFingerprint.exception + ) ?: throw HomeActivityFingerprint.exception super.execute(context) } diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/HomeActivityFingerprint.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/HomeActivityFingerprint.kt new file mode 100644 index 000000000..f818c59a5 --- /dev/null +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/gms/fingerprints/HomeActivityFingerprint.kt @@ -0,0 +1,9 @@ +package app.revanced.patches.youtube.misc.gms.fingerprints + +import app.revanced.patches.shared.integrations.AbstractIntegrationsPatch.IntegrationsFingerprint + +object HomeActivityFingerprint : IntegrationsFingerprint( + customFingerprint = { methodDef, classDef -> + methodDef.name == "onCreate" && classDef.type.endsWith("Shell_HomeActivity;") + }, +) diff --git a/src/main/kotlin/app/revanced/patches/youtube/misc/integrations/IntegrationsPatch.kt b/src/main/kotlin/app/revanced/patches/youtube/misc/integrations/IntegrationsPatch.kt index cdabc4d5d..aa21e1101 100644 --- a/src/main/kotlin/app/revanced/patches/youtube/misc/integrations/IntegrationsPatch.kt +++ b/src/main/kotlin/app/revanced/patches/youtube/misc/integrations/IntegrationsPatch.kt @@ -16,4 +16,4 @@ object IntegrationsPatch : AbstractIntegrationsPatch( EmbeddedPlayerFingerprint, APIPlayerServiceFingerprint, ), -) \ No newline at end of file +)