58 lines
2.1 KiB
Kotlin
58 lines
2.1 KiB
Kotlin
package app.revanced.util.microg
|
|
|
|
import app.revanced.patcher.data.impl.ResourceData
|
|
import app.revanced.util.microg.Constants.META_GMS_PACKAGE_NAME
|
|
import app.revanced.util.microg.Constants.META_SPOOFED_PACKAGE_NAME
|
|
import app.revanced.util.microg.Constants.META_SPOOFED_PACKAGE_SIGNATURE
|
|
import app.revanced.util.microg.Constants.MICROG_VENDOR
|
|
import org.w3c.dom.Element
|
|
import org.w3c.dom.Node
|
|
|
|
/**
|
|
* helper class for adding manifest metadata needed for microG builds with signature spoofing
|
|
*/
|
|
internal object MicroGManifestHelper {
|
|
|
|
/**
|
|
* Add manifest entries needed for package and signature spoofing when using MicroG.
|
|
* Note: this only adds metadata entries for signature spoofing, other changes may still be required to make a microG patch work.
|
|
*
|
|
* @param data Resource data.
|
|
* @param spoofedPackage The package to spoof.
|
|
* @param spoofedSignature The signature to spoof.
|
|
*/
|
|
fun addSpoofingMetadata(
|
|
data: ResourceData,
|
|
spoofedPackage: String,
|
|
spoofedSignature: String
|
|
) {
|
|
data.xmlEditor["AndroidManifest.xml"].use {
|
|
val applicationNode = it
|
|
.file
|
|
.getElementsByTagName("application")
|
|
.item(0)
|
|
|
|
// package spoofing
|
|
applicationNode.adoptChild("meta-data") {
|
|
setAttribute("android:name", META_SPOOFED_PACKAGE_NAME)
|
|
setAttribute("android:value", spoofedPackage)
|
|
}
|
|
applicationNode.adoptChild("meta-data") {
|
|
setAttribute("android:name", META_SPOOFED_PACKAGE_SIGNATURE)
|
|
setAttribute("android:value", spoofedSignature)
|
|
}
|
|
|
|
// microG presence detection in integrations
|
|
applicationNode.adoptChild("meta-data") {
|
|
setAttribute("android:name", META_GMS_PACKAGE_NAME)
|
|
setAttribute("android:value", "${MICROG_VENDOR}.android.gms")
|
|
}
|
|
}
|
|
}
|
|
|
|
private fun Node.adoptChild(tagName: String, block: Element.() -> Unit) {
|
|
val child = ownerDocument.createElement(tagName)
|
|
child.block()
|
|
appendChild(child)
|
|
}
|
|
} |