feat: Add Strip platform libraries patch

This commit is contained in:
oSumAtrIX
2025-12-27 18:35:53 +01:00
parent da02d68587
commit 34664c9384
11 changed files with 54 additions and 14 deletions

View File

@@ -96,6 +96,10 @@ public final class app/revanced/patches/all/misc/network/OverrideCertificatePinn
public static final fun getOverrideCertificatePinningPatch ()Lapp/revanced/patcher/patch/ResourcePatch; public static final fun getOverrideCertificatePinningPatch ()Lapp/revanced/patcher/patch/ResourcePatch;
} }
public final class app/revanced/patches/all/misc/optimization/StripPlatformLibrariesPatchKt {
public static final fun getStripPlatformLibrariesPatch ()Lapp/revanced/patcher/patch/RawResourcePatch;
}
public final class app/revanced/patches/all/misc/packagename/ChangePackageNamePatchKt { public final class app/revanced/patches/all/misc/packagename/ChangePackageNamePatchKt {
public static field packageNameOption Lapp/revanced/patcher/patch/Option; public static field packageNameOption Lapp/revanced/patcher/patch/Option;
public static final fun getChangePackageNamePatch ()Lapp/revanced/patcher/patch/ResourcePatch; public static final fun getChangePackageNamePatch ()Lapp/revanced/patcher/patch/ResourcePatch;

View File

@@ -4,7 +4,7 @@ import app.revanced.patcher.patch.PatchException
import app.revanced.patcher.patch.booleanOption import app.revanced.patcher.patch.booleanOption
import app.revanced.patcher.patch.resourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.patcher.patch.stringsOption import app.revanced.patcher.patch.stringsOption
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.trimIndentMultiline
import app.revanced.util.getNode import app.revanced.util.getNode
import org.w3c.dom.Element import org.w3c.dom.Element
import java.io.File import java.io.File

View File

@@ -5,7 +5,7 @@ import app.revanced.patcher.patch.rawResourcePatch
import app.revanced.patcher.patch.stringsOption import app.revanced.patcher.patch.stringsOption
import app.revanced.patches.shared.misc.hex.HexPatchBuilder import app.revanced.patches.shared.misc.hex.HexPatchBuilder
import app.revanced.patches.shared.misc.hex.hexPatch import app.revanced.patches.shared.misc.hex.hexPatch
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.trimIndentMultiline
@Suppress("unused") @Suppress("unused")
val hexPatch = rawResourcePatch( val hexPatch = rawResourcePatch(

View File

@@ -2,7 +2,7 @@ package app.revanced.patches.all.misc.network
import app.revanced.patcher.patch.resourcePatch import app.revanced.patcher.patch.resourcePatch
import app.revanced.patches.all.misc.debugging.enableAndroidDebuggingPatch import app.revanced.patches.all.misc.debugging.enableAndroidDebuggingPatch
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.trimIndentMultiline
import org.w3c.dom.Element import org.w3c.dom.Element
import java.io.File import java.io.File

View File

@@ -0,0 +1,30 @@
package app.revanced.patches.all.misc.optimization
import android.os.Build.SUPPORTED_ABIS
import app.revanced.patcher.patch.rawResourcePatch
import app.revanced.patcher.patch.stringsOption
import app.revanced.util.isAndroid
@Suppress("unused")
val stripPlatformLibrariesPatch = rawResourcePatch(
"Strip platform libraries",
"Removes unused platform-native libraries from the APK to reduce package size" +
"- if detected automatically, the device's unsupported ABIs by default."
) {
val allAbis = listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
val supportedAbis = if (isAndroid) SUPPORTED_ABIS.toList() else allAbis
val platformsToKeep by stringsOption(
key = "platformsToKeep",
title = "Platforms to keep",
description = "The platforms to keep in the APK.",
default = supportedAbis,
values = mapOf("Keep all" to allAbis) + allAbis.associate { "Only $it" to listOf(it) },
required = true
)
execute {
val platforms = platformsToKeep!!
get("libs").listFiles { it.name !in platforms }?.forEach { it.deleteRecursively() }
}
}

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.instagram.ghost.story package app.revanced.patches.instagram.ghost.story
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.trimIndentMultiline
import app.revanced.util.returnEarly import app.revanced.util.returnEarly
@Suppress("unused") @Suppress("unused")

View File

@@ -1,7 +1,7 @@
package app.revanced.patches.instagram.misc.devmenu package app.revanced.patches.instagram.misc.devmenu
import app.revanced.patcher.patch.bytecodePatch import app.revanced.patcher.patch.bytecodePatch
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.trimIndentMultiline
import app.revanced.util.getReference import app.revanced.util.getReference
import app.revanced.util.indexOfFirstInstructionReversedOrThrow import app.revanced.util.indexOfFirstInstructionReversedOrThrow
import app.revanced.util.returnEarly import app.revanced.util.returnEarly

View File

@@ -17,7 +17,7 @@ import app.revanced.patches.shared.misc.mapping.resourceMappingPatch
import app.revanced.patches.shared.misc.settings.preference.BasePreferenceScreen import app.revanced.patches.shared.misc.settings.preference.BasePreferenceScreen
import app.revanced.patches.shared.misc.settings.preference.ListPreference import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.util.ResourceGroup import app.revanced.util.ResourceGroup
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.trimIndentMultiline
import app.revanced.util.addInstructionsAtControlFlowLabel import app.revanced.util.addInstructionsAtControlFlowLabel
import app.revanced.util.copyResources import app.revanced.util.copyResources
import app.revanced.util.findElementByAttributeValueOrThrow import app.revanced.util.findElementByAttributeValueOrThrow

View File

@@ -16,7 +16,7 @@ import app.revanced.patches.shared.misc.mapping.resourceMappings
import app.revanced.patches.shared.misc.settings.preference.ListPreference import app.revanced.patches.shared.misc.settings.preference.ListPreference
import app.revanced.patches.youtube.misc.settings.PreferenceScreen import app.revanced.patches.youtube.misc.settings.PreferenceScreen
import app.revanced.util.ResourceGroup import app.revanced.util.ResourceGroup
import app.revanced.util.Utils.trimIndentMultiline import app.revanced.util.trimIndentMultiline
import app.revanced.util.copyResources import app.revanced.util.copyResources
import app.revanced.util.findElementByAttributeValueOrThrow import app.revanced.util.findElementByAttributeValueOrThrow
import app.revanced.util.forEachLiteralValueInstruction import app.revanced.util.forEachLiteralValueInstruction

View File

@@ -1,10 +1,15 @@
package app.revanced.util package app.revanced.util
internal object Utils { internal fun String.trimIndentMultiline() =
internal fun String.trimIndentMultiline() = this.split("\n")
this.split("\n") .joinToString("\n") { it.trimIndent() } // Remove the leading whitespace from each line.
.joinToString("\n") { it.trimIndent() } // Remove the leading whitespace from each line. .trimIndent() // Remove the leading newline.
.trimIndent() // Remove the leading newline.
}
internal fun Boolean.toHexString(): String = if (this) "0x1" else "0x0" internal fun Boolean.toHexString(): String = if (this) "0x1" else "0x0"
internal val isAndroid = try {
Class.forName("android.os.Build")
true
} catch (_: ClassNotFoundException) {
false
}

View File

@@ -16,6 +16,7 @@ public class Build {
public static final String MODEL = null; public static final String MODEL = null;
public static final String PRODUCT = null; public static final String PRODUCT = null;
public static final String RADIO = null; public static final String RADIO = null;
public static final String[] SUPPORTED_ABIS = null;
public static final String TAGS = null; public static final String TAGS = null;
public static final String TYPE = null; public static final String TYPE = null;
public static final String USER = null; public static final String USER = null;