Skip to content

Commit f7f4a1b

Browse files
feat(YouTube): Support version 20.14.43 (#5940)
1 parent e89660d commit f7f4a1b

File tree

67 files changed

+121
-168
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+121
-168
lines changed

extensions/shared/library/src/main/java/app/revanced/extension/shared/Utils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ private static PackageInfo getPackageInfo() throws PackageManager.NameNotFoundEx
116116
}
117117

118118
/**
119-
* @return The version name of the app, such as 19.11.43
119+
* @return The version name of the app, such as 20.13.41
120120
*/
121121
public static String getAppVersionName() {
122122
if (versionName == null) {

extensions/youtube/src/main/java/app/revanced/extension/youtube/settings/Settings.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import android.graphics.Color;
3333

3434
import app.revanced.extension.shared.Logger;
35+
import app.revanced.extension.shared.Utils;
3536
import app.revanced.extension.shared.settings.BaseSettings;
3637
import app.revanced.extension.shared.settings.BooleanSetting;
3738
import app.revanced.extension.shared.settings.EnumSetting;
@@ -514,10 +515,14 @@ public class Settings extends BaseSettings {
514515
DEPRECATED_SWIPE_OVERLAY_BACKGROUND_ALPHA.resetToDefault();
515516
}
516517

517-
// Old spoof versions that no longer work.
518-
if (SPOOF_APP_VERSION_TARGET.get().compareTo(SPOOF_APP_VERSION_TARGET.defaultValue) < 0) {
519-
Logger.printInfo(() -> "Resetting spoof app version target");
518+
// Old spoof versions that no longer work,
519+
// or is spoofing to a version the same or newer than this app.
520+
if (!SPOOF_APP_VERSION_TARGET.isSetToDefault() &&
521+
(SPOOF_APP_VERSION_TARGET.get().compareTo(SPOOF_APP_VERSION_TARGET.defaultValue) < 0
522+
|| (Utils.getAppVersionName().compareTo(SPOOF_APP_VERSION_TARGET.get()) <= 0))) {
523+
Logger.printInfo(() -> "Resetting spoof app version");
520524
SPOOF_APP_VERSION_TARGET.resetToDefault();
525+
SPOOF_APP_VERSION.resetToDefault();
521526
}
522527

523528
// RYD requires manually migrating old settings since the lack of

patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/Fingerprints.kt

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
package app.revanced.patches.shared.misc.spoof
22

33
import app.revanced.patcher.fingerprint
4+
import app.revanced.util.getReference
5+
import app.revanced.util.indexOfFirstInstruction
46
import app.revanced.util.literal
57
import com.android.tools.smali.dexlib2.AccessFlags
68
import com.android.tools.smali.dexlib2.Opcode
9+
import com.android.tools.smali.dexlib2.iface.Method
10+
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
711

812
internal val buildInitPlaybackRequestFingerprint = fingerprint {
913
returns("Lorg/chromium/net/UrlRequest\$Builder;")
@@ -37,10 +41,6 @@ internal val buildRequestFingerprint = fingerprint {
3741
accessFlags(AccessFlags.PUBLIC, AccessFlags.STATIC)
3842
returns("Lorg/chromium/net/UrlRequest") // UrlRequest; or UrlRequest$Builder;
3943
custom { methodDef, _ ->
40-
if (indexOfNewUrlRequestBuilderInstruction(methodDef) < 0) {
41-
return@custom false
42-
}
43-
4444
// Different targets have slightly different parameters
4545

4646
// Earlier targets have parameters:
@@ -74,10 +74,10 @@ internal val buildRequestFingerprint = fingerprint {
7474
val parameterTypesSize = parameterTypes.size
7575
(parameterTypesSize == 6 || parameterTypesSize == 7 || parameterTypesSize == 8) &&
7676
parameterTypes[1] == "Ljava/util/Map;" // URL headers.
77+
&& indexOfNewUrlRequestBuilderInstruction(methodDef) >= 0
7778
}
7879
}
7980

80-
8181
internal val protobufClassParseByteBufferFingerprint = fingerprint {
8282
accessFlags(AccessFlags.PROTECTED, AccessFlags.STATIC)
8383
returns("L")
@@ -191,3 +191,13 @@ internal val playbackStartDescriptorFeatureFlagFingerprint = fingerprint {
191191
returns("Z")
192192
literal { PLAYBACK_START_CHECK_ENDPOINT_USED_FEATURE_FLAG }
193193
}
194+
195+
internal fun indexOfNewUrlRequestBuilderInstruction(method: Method) = method.indexOfFirstInstruction {
196+
val reference = getReference<MethodReference>()
197+
opcode == Opcode.INVOKE_VIRTUAL && reference?.definingClass == "Lorg/chromium/net/CronetEngine;"
198+
&& reference.name == "newUrlRequestBuilder"
199+
&& reference.parameterTypes.size == 3
200+
&& reference.parameterTypes[0] == "Ljava/lang/String;"
201+
&& reference.parameterTypes[1] == "Lorg/chromium/net/UrlRequest\$Callback;"
202+
&& reference.parameterTypes[2] == "Ljava/util/concurrent/Executor;"
203+
}

patches/src/main/kotlin/app/revanced/patches/shared/misc/spoof/SpoofVideoStreamsPatch.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,17 @@ import app.revanced.patches.all.misc.resources.addResourcesPatch
1616
import app.revanced.util.findFreeRegister
1717
import app.revanced.util.findInstructionIndicesReversedOrThrow
1818
import app.revanced.util.getReference
19-
import app.revanced.util.indexOfFirstInstruction
2019
import app.revanced.util.indexOfFirstInstructionOrThrow
2120
import app.revanced.util.insertLiteralOverride
2221
import app.revanced.util.returnEarly
2322
import com.android.tools.smali.dexlib2.AccessFlags
2423
import com.android.tools.smali.dexlib2.Opcode
2524
import com.android.tools.smali.dexlib2.builder.MutableMethodImplementation
26-
import com.android.tools.smali.dexlib2.iface.Method
2725
import com.android.tools.smali.dexlib2.iface.instruction.FiveRegisterInstruction
2826
import com.android.tools.smali.dexlib2.iface.instruction.OneRegisterInstruction
2927
import com.android.tools.smali.dexlib2.iface.instruction.ReferenceInstruction
3028
import com.android.tools.smali.dexlib2.iface.instruction.TwoRegisterInstruction
3129
import com.android.tools.smali.dexlib2.iface.reference.FieldReference
32-
import com.android.tools.smali.dexlib2.iface.reference.MethodReference
3330
import com.android.tools.smali.dexlib2.immutable.ImmutableMethod
3431
import com.android.tools.smali.dexlib2.immutable.ImmutableMethodParameter
3532

@@ -337,12 +334,3 @@ fun spoofVideoStreamsPatch(
337334
executeBlock()
338335
}
339336
}
340-
341-
internal fun indexOfNewUrlRequestBuilderInstruction(method: Method) = method.indexOfFirstInstruction {
342-
opcode == Opcode.INVOKE_VIRTUAL && getReference<MethodReference>().toString() ==
343-
"Lorg/chromium/net/CronetEngine;" +
344-
"->newUrlRequestBuilder(" +
345-
"Ljava/lang/String;Lorg/chromium/net/UrlRequest${'$'}Callback;" +
346-
"Ljava/util/concurrent/Executor;" +
347-
")Lorg/chromium/net/UrlRequest${'$'}Builder;"
348-
}

patches/src/main/kotlin/app/revanced/patches/youtube/ad/general/HideAdsPatch.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,9 @@ val hideAdsPatch = bytecodePatch(
7878
"com.google.android.youtube"(
7979
"19.34.42",
8080
"19.43.41",
81-
"19.47.53",
8281
"20.07.39",
83-
"20.12.46",
8482
"20.13.41",
83+
"20.14.43",
8584
)
8685
)
8786

patches/src/main/kotlin/app/revanced/patches/youtube/ad/getpremium/HideGetPremiumPatch.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@ val hideGetPremiumPatch = bytecodePatch(
2727
"com.google.android.youtube"(
2828
"19.34.42",
2929
"19.43.41",
30-
"19.47.53",
3130
"20.07.39",
32-
"20.12.46",
3331
"20.13.41",
32+
"20.14.43",
3433
)
3534
)
3635

patches/src/main/kotlin/app/revanced/patches/youtube/ad/video/VideoAdsPatch.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@ val videoAdsPatch = bytecodePatch(
2525
"com.google.android.youtube"(
2626
"19.34.42",
2727
"19.43.41",
28-
"19.47.53",
2928
"20.07.39",
30-
"20.12.46",
3129
"20.13.41",
30+
"20.14.43",
3231
)
3332
)
3433

patches/src/main/kotlin/app/revanced/patches/youtube/interaction/copyvideourl/CopyVideoUrlPatch.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,9 @@ val copyVideoUrlPatch = bytecodePatch(
5555
"com.google.android.youtube"(
5656
"19.34.42",
5757
"19.43.41",
58-
"19.47.53",
5958
"20.07.39",
60-
"20.12.46",
6159
"20.13.41",
60+
"20.14.43",
6261
)
6362
)
6463

patches/src/main/kotlin/app/revanced/patches/youtube/interaction/dialog/RemoveViewerDiscretionDialogPatch.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,9 @@ val removeViewerDiscretionDialogPatch = bytecodePatch(
2626
"com.google.android.youtube"(
2727
"19.34.42",
2828
"19.43.41",
29-
"19.47.53",
3029
"20.07.39",
31-
"20.12.46",
3230
"20.13.41",
31+
"20.14.43",
3332
)
3433
)
3534

patches/src/main/kotlin/app/revanced/patches/youtube/interaction/doubletap/DisableChapterSkipDoubleTapPatch.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ val disableDoubleTapActionsPatch = bytecodePatch(
2929
compatibleWith(
3030
"com.google.android.youtube"(
3131
"20.07.39",
32-
"20.12.46",
3332
"20.13.41",
33+
"20.14.43",
3434
)
3535
)
3636

0 commit comments

Comments
 (0)