@@ -4,6 +4,7 @@ import app.revanced.patcher.patch.Option
4
4
import app.revanced.patcher.patch.resourcePatch
5
5
import app.revanced.patcher.patch.stringOption
6
6
import org.w3c.dom.Element
7
+ import java.util.logging.Logger
7
8
8
9
lateinit var packageNameOption: Option <String >
9
10
@@ -41,18 +42,38 @@ val changePackageNamePatch = resourcePatch(
41
42
it == " Default" || it!! .matches(Regex (" ^[a-z]\\ w*(\\ .[a-z]\\ w*)+\$ " ))
42
43
}
43
44
45
+ /* *
46
+ * Apps that are confirmed to not work correctly with this patch.
47
+ * This is not an exhaustive list, and is only the apps with
48
+ * ReVanced specific patches and are confirmed incompatible with this patch.
49
+ */
50
+ val incompatibleAppPackages = setOf (
51
+ // Cannot login, settings menu is broken.
52
+ " com.reddit.frontpage" ,
53
+
54
+ // Patches and installs but crashes on launch.
55
+ " com.duolingo" ,
56
+ " com.twitter.android" ,
57
+ " tv.twitch.android.app" ,
58
+ )
59
+
44
60
finalize {
45
61
document(" AndroidManifest.xml" ).use { document ->
62
+ val manifest = document.getElementsByTagName(" manifest" ).item(0 ) as Element
63
+ val originalPackageName = manifest.getAttribute(" package" )
46
64
47
- val replacementPackageName = packageNameOption.value
65
+ if (incompatibleAppPackages.contains(originalPackageName)) {
66
+ return @finalize Logger .getLogger(this ::class .java.name).severe(
67
+ " '$originalPackageName ' does not work correctly with \" Change package name\" " )
68
+ }
48
69
49
- val manifest = document.getElementsByTagName( " manifest " ).item( 0 ) as Element
70
+ val replacementPackageName = packageNameOption.value
50
71
manifest.setAttribute(
51
72
" package" ,
52
73
if (replacementPackageName != packageNameOption.default) {
53
74
replacementPackageName
54
75
} else {
55
- " ${manifest.getAttribute( " package " ) } .revanced"
76
+ " ${originalPackageName } .revanced"
56
77
},
57
78
)
58
79
}
0 commit comments