mirror of
https://github.com/ReVanced/revanced-patches.git
synced 2026-01-22 18:23:59 +00:00
Compare commits
6 Commits
v4.14.1-de
...
v4.14.2-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3e796eb7c2 | ||
|
|
303d2de81d | ||
|
|
0ab7344295 | ||
|
|
ff8fe46685 | ||
|
|
18b09168cc | ||
|
|
f7209f0a53 |
16
CHANGELOG.md
16
CHANGELOG.md
@@ -1,3 +1,19 @@
|
|||||||
|
## [4.14.2-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.14.1...v4.14.2-dev.1) (2024-09-21)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **TikTok - Playback speed:** Prevent crash by fixing invalid patch ([82d53cb](https://github.com/ReVanced/revanced-patches/commit/82d53cbc3bbfa585ba4337fdfaec9f0f19c802e6))
|
||||||
|
* **TikTok - Settings:** Prevent crash by fixing invalid patch ([8074032](https://github.com/ReVanced/revanced-patches/commit/8074032fad3eff1c03296a882d2e2820da99b592))
|
||||||
|
* **Twitter - Open links with app chooser:** Constrain patch to last working version `10.48.0-release` ([b9955d5](https://github.com/ReVanced/revanced-patches/commit/b9955d5ff6e456593b01f0f25d80ff660d02082a))
|
||||||
|
|
||||||
|
## [4.14.1](https://github.com/ReVanced/revanced-patches/compare/v4.14.0...v4.14.1) (2024-09-18)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **YouTube - Check environment:** Only use fields available since Android 8 ([#3655](https://github.com/ReVanced/revanced-patches/issues/3655)) ([4413533](https://github.com/ReVanced/revanced-patches/commit/441353306572340131030e1c4fee1ab6acb63cd9))
|
||||||
|
|
||||||
## [4.14.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.14.0...v4.14.1-dev.1) (2024-09-18)
|
## [4.14.1-dev.1](https://github.com/ReVanced/revanced-patches/compare/v4.14.0...v4.14.1-dev.1) (2024-09-18)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
org.gradle.parallel = true
|
org.gradle.parallel = true
|
||||||
org.gradle.caching = true
|
org.gradle.caching = true
|
||||||
kotlin.code.style = official
|
kotlin.code.style = official
|
||||||
version = 4.14.1-dev.1
|
version = 4.14.2-dev.1
|
||||||
|
|||||||
@@ -20,19 +20,19 @@ import com.android.tools.smali.dexlib2.iface.reference.MethodReference
|
|||||||
@Patch(
|
@Patch(
|
||||||
name = "Playback speed",
|
name = "Playback speed",
|
||||||
description = "Enables the playback speed option for all videos and " +
|
description = "Enables the playback speed option for all videos and " +
|
||||||
"retains the speed configurations in between videos.",
|
"retains the speed configurations in between videos.",
|
||||||
compatiblePackages = [
|
compatiblePackages = [
|
||||||
CompatiblePackage("com.ss.android.ugc.trill", ["32.5.3"]),
|
CompatiblePackage("com.ss.android.ugc.trill", ["32.5.3"]),
|
||||||
CompatiblePackage("com.zhiliaoapp.musically", ["32.5.3"])
|
CompatiblePackage("com.zhiliaoapp.musically", ["32.5.3"]),
|
||||||
]
|
],
|
||||||
)
|
)
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
object PlaybackSpeedPatch : BytecodePatch(
|
object PlaybackSpeedPatch : BytecodePatch(
|
||||||
setOf(
|
setOf(
|
||||||
GetSpeedFingerprint,
|
GetSpeedFingerprint,
|
||||||
OnRenderFirstFrameFingerprint,
|
OnRenderFirstFrameFingerprint,
|
||||||
SetSpeedFingerprint
|
SetSpeedFingerprint,
|
||||||
)
|
),
|
||||||
) {
|
) {
|
||||||
override fun execute(context: BytecodeContext) {
|
override fun execute(context: BytecodeContext) {
|
||||||
SetSpeedFingerprint.result?.let { onVideoSwiped ->
|
SetSpeedFingerprint.result?.let { onVideoSwiped ->
|
||||||
@@ -44,7 +44,7 @@ object PlaybackSpeedPatch : BytecodePatch(
|
|||||||
addInstruction(
|
addInstruction(
|
||||||
injectIndex,
|
injectIndex,
|
||||||
"invoke-static { v$register }," +
|
"invoke-static { v$register }," +
|
||||||
" Lapp/revanced/integrations/tiktok/speed/PlaybackSpeedPatch;->rememberPlaybackSpeed(F)V"
|
" Lapp/revanced/integrations/tiktok/speed/PlaybackSpeedPatch;->rememberPlaybackSpeed(F)V",
|
||||||
)
|
)
|
||||||
} ?: throw GetSpeedFingerprint.exception
|
} ?: throw GetSpeedFingerprint.exception
|
||||||
|
|
||||||
@@ -64,9 +64,9 @@ object PlaybackSpeedPatch : BytecodePatch(
|
|||||||
|
|
||||||
# Desired playback speed retrieved using getPlaybackSpeed method.
|
# Desired playback speed retrieved using getPlaybackSpeed method.
|
||||||
invoke-static {}, Lapp/revanced/integrations/tiktok/speed/PlaybackSpeedPatch;->getPlaybackSpeed()F
|
invoke-static {}, Lapp/revanced/integrations/tiktok/speed/PlaybackSpeedPatch;->getPlaybackSpeed()F
|
||||||
move-result-object v2
|
move-result v2
|
||||||
invoke-static { v0, v1, v2 }, ${onVideoSwiped.method}
|
invoke-static { v0, v1, v2 }, ${onVideoSwiped.method}
|
||||||
"""
|
""",
|
||||||
) ?: throw OnRenderFirstFrameFingerprint.exception
|
) ?: throw OnRenderFirstFrameFingerprint.exception
|
||||||
|
|
||||||
// Force enable the playback speed option for all videos.
|
// Force enable the playback speed option for all videos.
|
||||||
@@ -75,7 +75,7 @@ object PlaybackSpeedPatch : BytecodePatch(
|
|||||||
"""
|
"""
|
||||||
const/4 v0, 0x1
|
const/4 v0, 0x1
|
||||||
return v0
|
return v0
|
||||||
"""
|
""",
|
||||||
) ?: throw PatchException("Failed to force enable the playback speed option.")
|
) ?: throw PatchException("Failed to force enable the playback speed option.")
|
||||||
} ?: throw SetSpeedFingerprint.exception
|
} ?: throw SetSpeedFingerprint.exception
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ import com.android.tools.smali.dexlib2.iface.reference.FieldReference
|
|||||||
dependencies = [IntegrationsPatch::class],
|
dependencies = [IntegrationsPatch::class],
|
||||||
compatiblePackages = [
|
compatiblePackages = [
|
||||||
CompatiblePackage("com.ss.android.ugc.trill", ["32.5.3"]),
|
CompatiblePackage("com.ss.android.ugc.trill", ["32.5.3"]),
|
||||||
CompatiblePackage("com.zhiliaoapp.musically", ["32.5.3"])
|
CompatiblePackage("com.zhiliaoapp.musically", ["32.5.3"]),
|
||||||
]
|
],
|
||||||
)
|
)
|
||||||
object SettingsPatch : BytecodePatch(
|
object SettingsPatch : BytecodePatch(
|
||||||
setOf(
|
setOf(
|
||||||
@@ -34,21 +34,21 @@ object SettingsPatch : BytecodePatch(
|
|||||||
AddSettingsEntryFingerprint,
|
AddSettingsEntryFingerprint,
|
||||||
SettingsEntryFingerprint,
|
SettingsEntryFingerprint,
|
||||||
SettingsEntryInfoFingerprint,
|
SettingsEntryInfoFingerprint,
|
||||||
)
|
),
|
||||||
) {
|
) {
|
||||||
private const val INTEGRATIONS_CLASS_DESCRIPTOR =
|
private const val INTEGRATIONS_CLASS_DESCRIPTOR =
|
||||||
"Lapp/revanced/integrations/tiktok/settings/AdPersonalizationActivityHook;"
|
"Lapp/revanced/integrations/tiktok/settings/AdPersonalizationActivityHook;"
|
||||||
|
|
||||||
private const val INITIALIZE_SETTINGS_METHOD_DESCRIPTOR =
|
private const val INITIALIZE_SETTINGS_METHOD_DESCRIPTOR =
|
||||||
"$INTEGRATIONS_CLASS_DESCRIPTOR->initialize(" +
|
"$INTEGRATIONS_CLASS_DESCRIPTOR->initialize(" +
|
||||||
"Lcom/bytedance/ies/ugc/aweme/commercialize/compliance/personalization/AdPersonalizationActivity;" +
|
"Lcom/bytedance/ies/ugc/aweme/commercialize/compliance/personalization/AdPersonalizationActivity;" +
|
||||||
")Z"
|
")Z"
|
||||||
|
|
||||||
private const val CREATE_SETTINGS_ENTRY_METHOD_DESCRIPTOR =
|
private const val CREATE_SETTINGS_ENTRY_METHOD_DESCRIPTOR =
|
||||||
"$INTEGRATIONS_CLASS_DESCRIPTOR->createSettingsEntry(" +
|
"$INTEGRATIONS_CLASS_DESCRIPTOR->createSettingsEntry(" +
|
||||||
"Ljava/lang/String;" +
|
"Ljava/lang/String;" +
|
||||||
"Ljava/lang/String;" +
|
"Ljava/lang/String;" +
|
||||||
")Ljava/lang/Object;"
|
")Ljava/lang/Object;"
|
||||||
|
|
||||||
override fun execute(context: BytecodeContext) {
|
override fun execute(context: BytecodeContext) {
|
||||||
// Find the class name of classes which construct a settings entry
|
// Find the class name of classes which construct a settings entry
|
||||||
@@ -70,8 +70,8 @@ object SettingsPatch : BytecodePatch(
|
|||||||
markIndex + 2,
|
markIndex + 2,
|
||||||
listOf(
|
listOf(
|
||||||
getUnitManager,
|
getUnitManager,
|
||||||
addEntry
|
addEntry,
|
||||||
)
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
addInstructions(
|
addInstructions(
|
||||||
@@ -81,7 +81,8 @@ object SettingsPatch : BytecodePatch(
|
|||||||
const-string v1, "$settingsButtonInfoClass"
|
const-string v1, "$settingsButtonInfoClass"
|
||||||
invoke-static {v0, v1}, $CREATE_SETTINGS_ENTRY_METHOD_DESCRIPTOR
|
invoke-static {v0, v1}, $CREATE_SETTINGS_ENTRY_METHOD_DESCRIPTOR
|
||||||
move-result-object v0
|
move-result-object v0
|
||||||
"""
|
check-cast v0, ${SettingsEntryFingerprint.result!!.classDef}
|
||||||
|
""",
|
||||||
)
|
)
|
||||||
} ?: throw AddSettingsEntryFingerprint.exception
|
} ?: throw AddSettingsEntryFingerprint.exception
|
||||||
|
|
||||||
@@ -102,12 +103,10 @@ object SettingsPatch : BytecodePatch(
|
|||||||
if-eqz v$usableRegister, :do_not_open
|
if-eqz v$usableRegister, :do_not_open
|
||||||
return-void
|
return-void
|
||||||
""",
|
""",
|
||||||
ExternalLabel("do_not_open", getInstruction(initializeSettingsIndex))
|
ExternalLabel("do_not_open", getInstruction(initializeSettingsIndex)),
|
||||||
)
|
)
|
||||||
} ?: throw AdPersonalizationActivityOnCreateFingerprint.exception
|
} ?: throw AdPersonalizationActivityOnCreateFingerprint.exception
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun String.toClassName(): String {
|
private fun String.toClassName(): String = substring(1, this.length - 1).replace("/", ".")
|
||||||
return substring(1, this.length - 1).replace("/", ".")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -12,7 +12,7 @@ import app.revanced.util.exception
|
|||||||
name = "Open links with app chooser",
|
name = "Open links with app chooser",
|
||||||
description = "Instead of opening links directly, open them with an app chooser. " +
|
description = "Instead of opening links directly, open them with an app chooser. " +
|
||||||
"As a result you can select a browser to open the link with.",
|
"As a result you can select a browser to open the link with.",
|
||||||
compatiblePackages = [CompatiblePackage("com.twitter.android")],
|
compatiblePackages = [CompatiblePackage("com.twitter.android", ["10.48.0-release"])],
|
||||||
use = false,
|
use = false,
|
||||||
)
|
)
|
||||||
@Suppress("unused")
|
@Suppress("unused")
|
||||||
|
|||||||
Reference in New Issue
Block a user