Latest versions have the main grid paywalled through server side
checks and this is being reflected in the mod since we spoof the
latest version against the API.
Change-Id: Ib5af2896b46d56a383da64c515f479a27d22a373
GrindrPlus only needs to know whether it's running via LSPosed or LSPatch. isLSPosed() already provides that information, making isRooted() redundant.
Removes isRooted() from MiscUtils, BridgeClient, BridgeService and IBridgeService.aidl, replaces RootBeer usages with isLSPosed() in InstallScreen and FileOperationHandler, and drops the RootBeer dependency from build.gradle.kts and libs.versions.toml.
The DexClassLoader was originally added with the idea of accessing module classes at runtime in LSPatch, but it never worked. The module APK has multiple DEX files and neither DexClassLoader nor PathClassLoader can load classes from secondary DEX files in this context. Classes from classes.dex are found, but nothing beyond that.
On top of that, the module APK cannot be loaded directly from the LSPatch cache because ART rejects writable DEX files with a SecurityException, and the read-only copy in filesDir has the same multidex problem.
In both LSPosed and LSPatch, all GrindrPlus.loadClass() calls (including Hook.findClass(), which delegates to it) only ever resolve Grindr's obfuscated classes, which are always available via context.classLoader. The DexClassLoader just delegated everything to its parent anyway.
There is no real need to resolve module classes at runtime either. The only known case is isLSPosed(), but that is handled exclusively by LSPosed by hooking the module itself, not Grindr.
Also removes IXposedHookZygoteInit since modulePath is no longer needed, and adds a one-time cleanup of the legacy grindrplus.dex file from filesDir.
* Location chat command: save current GPS location
if the user is not teleporting
* update teleport dialog
* fix Utils::getId not working in cloned apps
* location spoofer: add map location picker