|
| 1 | +package app.revanced.patches.all.misc.targetSdk |
| 2 | + |
| 3 | +import app.revanced.patcher.patch.resourcePatch |
| 4 | +import app.revanced.util.getNode |
| 5 | +import org.w3c.dom.Element |
| 6 | +import java.util.logging.Logger |
| 7 | + |
| 8 | +@Suppress("unused") |
| 9 | +val setTargetSdkVersion34 = resourcePatch( |
| 10 | + name = "Set target SDK version 34", |
| 11 | + description = "Changes the target SDK to version 34 (Android 14). " + |
| 12 | + "For devices running Android 15+, this will disable edge-to-edge display.", |
| 13 | + use = false, |
| 14 | +) { |
| 15 | + execute { |
| 16 | + val targetSdkOverride = 34 // Android 14. |
| 17 | + |
| 18 | + document("AndroidManifest.xml").use { document -> |
| 19 | + fun getLogger() = Logger.getLogger(this::class.java.name) |
| 20 | + |
| 21 | + // Ideally, the override should only be applied if the existing target is higher. |
| 22 | + // But since ApkTool does not add targetSdkVersion to the decompiled AndroidManifest, |
| 23 | + // there is no way to check targetSdkVersion. Instead, check compileSdkVersion and print a warning. |
| 24 | + try { |
| 25 | + val manifestElement = document.getNode("manifest") as Element |
| 26 | + val compileSdkVersion = Integer.parseInt( |
| 27 | + manifestElement.getAttribute("android:compileSdkVersion") |
| 28 | + ) |
| 29 | + if (compileSdkVersion <= targetSdkOverride) { |
| 30 | + getLogger().warning( |
| 31 | + "This app does not appear to use a target SDK above $targetSdkOverride: " + |
| 32 | + "(compileSdkVersion: $compileSdkVersion)" |
| 33 | + ) |
| 34 | + } |
| 35 | + } catch (_: Exception) { |
| 36 | + getLogger().warning("Could not check compileSdkVersion") |
| 37 | + } |
| 38 | + |
| 39 | + // Change targetSdkVersion to override value. |
| 40 | + document.getElementsByTagName("manifest").item(0).let { |
| 41 | + var element = it.ownerDocument.createElement("uses-sdk") |
| 42 | + element.setAttribute("android:targetSdkVersion", targetSdkOverride.toString()) |
| 43 | + |
| 44 | + it.appendChild(element) |
| 45 | + } |
| 46 | + } |
| 47 | + } |
| 48 | +} |
0 commit comments