revert(GmsCore support): Remove chimera reference (Close https://github.com/inotia00/ReVanced_Extended/issues/2519)

This commit is contained in:
inotia00 2024-12-09 01:35:37 +09:00
parent 041bb1c26e
commit 90ccd023aa
4 changed files with 46 additions and 62 deletions

View File

@ -32,20 +32,16 @@ fun baseAdsPatch(
description = "baseAdsPatch" description = "baseAdsPatch"
) { ) {
execute { execute {
setOf(
sslGuardFingerprint, videoAdsFingerprint.methodOrThrow().apply {
videoAdsFingerprint, addInstructionsWithLabels(
).forEach { fingerprint -> 0, """
fingerprint.methodOrThrow().apply { invoke-static {}, $classDescriptor->$methodDescriptor()Z
addInstructionsWithLabels( move-result v0
0, """ if-nez v0, :show_ads
invoke-static {}, $classDescriptor->$methodDescriptor()Z return-void
move-result v0 """, ExternalLabel("show_ads", getInstruction(0))
if-nez v0, :show_ads )
return-void
""", ExternalLabel("show_ads", getInstruction(0))
)
}
} }
musicAdsFingerprint.methodOrThrow().apply { musicAdsFingerprint.methodOrThrow().apply {
@ -66,22 +62,6 @@ fun baseAdsPatch(
) )
} }
advertisingIdFingerprint.matchOrThrow().let {
it.method.apply {
val insertIndex = it.stringMatches!!.first().index
val insertRegister = getInstruction<OneRegisterInstruction>(insertIndex).registerA
addInstructionsWithLabels(
insertIndex, """
invoke-static {}, $classDescriptor->$methodDescriptor()Z
move-result v$insertRegister
if-nez v$insertRegister, :enable_id
return-void
""", ExternalLabel("enable_id", getInstruction(insertIndex))
)
}
}
} }
} }

View File

@ -4,24 +4,6 @@ import app.revanced.util.fingerprint.legacyFingerprint
import app.revanced.util.or import app.revanced.util.or
import com.android.tools.smali.dexlib2.AccessFlags import com.android.tools.smali.dexlib2.AccessFlags
import com.android.tools.smali.dexlib2.Opcode import com.android.tools.smali.dexlib2.Opcode
import com.android.tools.smali.dexlib2.util.MethodUtil
internal val advertisingIdFingerprint = legacyFingerprint(
name = "advertisingIdFingerprint",
returnType = "V",
strings = listOf("a."),
customFingerprint = { method, classDef ->
MethodUtil.isConstructor(method) &&
classDef.fields.find { it.type == "Ljava/util/Random;" } != null
}
)
internal val sslGuardFingerprint = legacyFingerprint(
name = "sslGuardFingerprint",
returnType = "V",
accessFlags = AccessFlags.PUBLIC or AccessFlags.FINAL,
strings = listOf("Cannot initialize SslGuardSocketFactory will null"),
)
internal val musicAdsFingerprint = legacyFingerprint( internal val musicAdsFingerprint = legacyFingerprint(
name = "musicAdsFingerprint", name = "musicAdsFingerprint",

View File

@ -25,16 +25,6 @@ internal val castContextFetchFingerprint = legacyFingerprint(
strings = listOf("Error fetching CastContext.") strings = listOf("Error fetching CastContext.")
) )
internal val castDynamiteModuleFingerprint = legacyFingerprint(
name = "castDynamiteModuleFingerprint",
strings = listOf("com.google.android.gms.cast.framework.internal.CastDynamiteModuleImpl")
)
internal val castDynamiteModuleV2Fingerprint = legacyFingerprint(
name = "castDynamiteModuleV2Fingerprint",
strings = listOf("Failed to load module via V2: ")
)
internal val googlePlayUtilityFingerprint = legacyFingerprint( internal val googlePlayUtilityFingerprint = legacyFingerprint(
name = "castContextFetchFingerprint", name = "castContextFetchFingerprint",
returnType = "I", returnType = "I",
@ -54,6 +44,12 @@ internal val serviceCheckFingerprint = legacyFingerprint(
strings = listOf("Google Play Services not available") strings = listOf("Google Play Services not available")
) )
internal val gmsServiceBrokerFingerprint = legacyFingerprint(
name = "gmsServiceBrokerFingerprint",
returnType = "V",
strings = listOf("mServiceBroker is null, client disconnected")
)
internal val primesApiFingerprint = legacyFingerprint( internal val primesApiFingerprint = legacyFingerprint(
name = "primesApiFingerprint", name = "primesApiFingerprint",
returnType = "V", returnType = "V",

View File

@ -104,6 +104,18 @@ fun gmsCoreSupportPatch(
required = true, required = true,
) )
val disableGmsServiceBroker by booleanOption(
key = "disableGmsServiceBroker",
default = false,
title = "Disable GmsService Broker",
description = """
Disabling GmsServiceBroker will somewhat improve crashes caused by unimplemented GmsCore services.
For YouTube, the 'Spoof streaming data' setting is required.
""".trimIndentMultiline(),
required = true,
)
val packageNameYouTubeOption = stringOption( val packageNameYouTubeOption = stringOption(
key = "packageNameYouTube", key = "packageNameYouTube",
default = DEFAULT_PACKAGE_NAME_YOUTUBE, default = DEFAULT_PACKAGE_NAME_YOUTUBE,
@ -293,11 +305,12 @@ fun gmsCoreSupportPatch(
// Return these methods early to prevent the app from crashing. // Return these methods early to prevent the app from crashing.
setOf( setOf(
castContextFetchFingerprint, castContextFetchFingerprint,
castDynamiteModuleFingerprint,
castDynamiteModuleV2Fingerprint,
googlePlayUtilityFingerprint, googlePlayUtilityFingerprint,
serviceCheckFingerprint, serviceCheckFingerprint,
).forEach { it.methodOrThrow().returnEarly() } ).forEach { it.methodOrThrow().returnEarly() }
if (disableGmsServiceBroker == true) {
gmsServiceBrokerFingerprint.methodOrThrow().returnEarly()
}
// Specific method that needs to be patched. // Specific method that needs to be patched.
transformPrimeMethod() transformPrimeMethod()
@ -352,10 +365,18 @@ fun gmsCoreSupportPatch(
/** /**
* A collection of permissions, intents and content provider authorities * A collection of permissions, intents and content provider authorities
* that are present in GmsCore which need to be transformed. * that are present in GmsCore which need to be transformed.
*
* NOTE: The following were present, but it seems like they are not needed to be transformed:
* - com.google.android.gms.chimera.GmsIntentOperationService
* - com.google.android.gms.phenotype.internal.IPhenotypeCallbacks
* - com.google.android.gms.phenotype.internal.IPhenotypeService
* - com.google.android.gms.phenotype.PACKAGE_NAME
* - com.google.android.gms.phenotype.UPDATE
* - com.google.android.gms.phenotype
*/ */
private object Constants { private object Constants {
/** /**
* All permissions. * A list of all permissions.
*/ */
val PERMISSIONS = setOf( val PERMISSIONS = setOf(
// C2DM / GCM // C2DM / GCM
@ -439,9 +460,11 @@ private object Constants {
"com.google.android.gms.feedback.internal.IFeedbackService", "com.google.android.gms.feedback.internal.IFeedbackService",
// cast // cast
"com.google.android.gms.cast.firstparty.START",
"com.google.android.gms.cast.service.BIND_CAST_DEVICE_CONTROLLER_SERVICE", "com.google.android.gms.cast.service.BIND_CAST_DEVICE_CONTROLLER_SERVICE",
// chimera
"com.google.android.gms.chimera",
// fonts // fonts
"com.google.android.gms.fonts", "com.google.android.gms.fonts",
@ -481,6 +504,9 @@ private object Constants {
// auth // auth
"com.google.android.gms.auth.accounts", "com.google.android.gms.auth.accounts",
// chimera
"com.google.android.gms.chimera",
// fonts // fonts
"com.google.android.gms.fonts", "com.google.android.gms.fonts",