Releases: noobexon1/XposedFakeLocation
Release list
v0.1.4
What's Changed
- Make system Wi-Fi identity configurable by @Shallow-dusty in #47
New Contributors
- @Shallow-dusty made their first contribution in #47
Full Changelog: v0.1.3...v0.1.4
v0.1.3
What's Changed
- hooks_refactor by @noobexon1 in #42
- feat: Add German language localization by @ro011110ot in #44
New Contributors
- @ro011110ot made their first contribution in #44
Full Changelog: v0.1.2...v0.1.3
This release is mostly bug fixes. It also contains the addition of German as a language contributed by @ro011110ot ! Thanks! ❤️
v0.1.2
What's Changed
- ui_improvements by @noobexon1 in #39
- accuracy_refactor by @noobexon1 in #40
Full Changelog: v0.1.1...v0.1.2
Release Notes
🚀 Features
Favorites
- Added editing functionality for favorite locations with UI dialogs and validation.
- Enhanced Favorites screen with comprehensive KDoc comments, improved state management, and detailed UI updates.
- Introduced an optional description field for favorite locations.
- Implemented navigation to the Favorites screen after successfully saving a new favorite location.
Map & Navigation
- Implemented map zoom persistence and retrieval functionality.
- Added dialogs for adding favorites and navigating to specific coordinates.
- Improved map UI with detailed documentation, better lifecycle management, and enhanced navigation drawer functionality.
- Implemented initial camera positioning based on user location.
Target Apps
- Added search functionality in the
TargetAppsScreento filter target apps efficiently.
Settings
- Introduced a theme selection feature (system default, light, dark themes).
- Added default values for numeric settings with a
resetToDefaults()functionality. - Implemented decimal rounding and decimal keyboards for numeric inputs.
- Restyled the Settings screen with search functionality and reordered sections.
🐛 Bug Fixes
- Changed the minimum SDK requirement to support Android 10.
- Refined precision handling for numeric settings to ensure consistent rounding behavior.
- Cleared relaunching packages when the module goes offline in
TargetApps. - Updated the inactive track color for sliders in the Settings screen for better visibility.
- Improved and refined the search functionality behavior and interaction in the Settings screen.
- Reformatted numeric fields on blur and ensured a stable state for key rows.
🔨 Refactors & Improvements
Performance
- Loaded AppIcon bitmaps asynchronously via
produceStateonDispatchers.IO. - Annotated
TargetAppsUiStatewith@Immutablefor performance optimization.
Architecture & State Management
- Streamlined map event handling and improved lifecycle awareness (e.g., using
collectAsStateWithLifecycle). - Consolidated settings UI state into a single
StateFlow. - Refactored
TargetAppsScreeninto thin stateful and stateless components. - Centralized setting keys in a
SettingKeysobject for improved maintainability. - Replaced
MutableSharedFlowwithChannelfor one-shot events in view models.
UI/UX & Documentation
- Enhanced localization management, updated unit representations to use string resources, and improved the language setting UI.
- Cleaned up unused dialog components, menus, and imports across Map and Favorites screens.
- Reorganized package structures and improved the structure of test files.
- Added comprehensive KDoc comments across multiple view models and UI components for better clarity and maintainability.
v0.1.1
PRs
- Stable_Refactor by @noobexon1 in #36
XposedFakeLocation — Modern Xposed API Release
Important
This release migrates the module to the modern libxposed API (Xposed API 101+). You must use a recent LSPosed build that supports the new API — older managers will not load the module. Get the latest from t.me/LSPosed.
Please read the updated README before updating — setup and scope handling changed significantly.
Highlights
- New Xposed API. Fully migrated from the legacy
XposedBridge/XposedHelpersAPI to the modernio.github.libxposedAPI used by current LSPosed. - Scope is now managed entirely from the app. Just enable the module in LSPosed — that's it. Selecting/deselecting target apps and toggling system-level hooks updates the LSPosed scope automatically. No more manual scope editing in LSPosed.
- Reactive updates. You only need to force-stop/restart a target app the first time it enters the scope. After that, changes you make in the manager (location, settings, start/stop) apply to the running target app immediately — no restart needed.
New features
- In-app target app selection that drives the module scope directly (add/remove apps from the
Target Appsscreen). - "Enable system-level hooks" toggle (Settings) — adds the Android system framework (
android) and phone process (com.android.phone) to the scope for deeper, system-level spoofing. Requires a reboot to take effect (and another to turn off). - Root relaunch button — force-stop and reopen a target app straight from the
Target Appsscreen so spoofing applies right away (requires root).
Changes & cleanup
- Cross-process config now uses Xposed remote preferences (replacing the old
XSharedPreferences/world-readable prefs), with a single source of truth split between hook-shared remote prefs and manager-only local prefs. - Removed DataStore and the legacy module-enabled detection hack, blocking status check, and error screen — the manager binds to
XposedServicereactively instead. - Removed the "Use built-in target app selection" setting; in-app target selection is now the default and only mode.
- Migrated the phone/system service hooks to the new API with name-based target attribution, gated so they stay inert unless you're actively spoofing a selected app.
Build / CI
- CI release workflow now builds on JDK 21 to match the project's Java 21 / Kotlin
jvmTargetsettings.
Requirements
- Rooted Android device, Android 11+ (API 30), and a modern LSPosed build (new API). Legacy Xposed/EdXposed and old LSPosed managers are not supported.
Full Changelog: v0.1.0...v0.1.1
v0.1.0
What's Changed
- Users can define templates with coordinates and optional advanced mock-location settings, then assign each target app to use global settings, a selected template, or custom per-app overrides. Thanks to @MeGaNeKoS for this one! ❤️
- Added in-app language switching and Chinese localization support. You can change the language on the Settings page. Thanks to @guowenye for this improvement! ❤️
- In the About page of the app, you can now see all of the contributors to this project!
- We now have a TG discussion group. Join using the link in the app!
New Contributors
- @MeGaNeKoS made their first contribution in #30
- @guowenye made their first contribution in #32
Full Changelog: v0.0.9...v0.1.0
v0.0.9
What's Changed
New Contributors
Full Changelog: v0.0.8...v0.0.9
Main changes:
- You can now toggle the indicator Toast on and off in settings.
- Map bugs fixed.
- Improvements to UI/UX.
- Can choose in settings if you want to hook the entire system framework or per app (as it was pre-release 0.0.7)
- Can choose in settings to register a broadcast receiver for communicating with other apps.
Thank you so much, @bjspi and @lytalk, for contributing to making this project better! ❤️
If you find any bugs, please let us know so we can fix them.
Cheers!
v0.0.8
v0.0.7
What's Changed
Full Changelog: v0.0.6...v0.0.7
This is a HUGE improvement over the previous version. Thanks to @lytalk for taking the time and effort to improve XposedFakeLocation for everyone!
As many of you requested, the module now works globally. What does that mean for you? Well, from now on, XposedFakeLocation is where you manage your target apps. You don't need to head over to your Xposed module manager to change your targets anymore. Please make sure that you refer to the README.md file and read the new setup instructions. Before opening any issues, make sure that you didn't mess up the setup.
Cheers! ❤️ 🚀 🔥
V0.0.6
V0.0.5 - BETA
Full Changelog: v0.0.4...v0.0.5
- Overall code refactor to improve scalability and conform to Jetpack Compose best practices.
- Greatly improved settings screen UI.
- Greatly improved drawer screen UI.
- Spoof radius is now bounded to 2 kilometers (was 50 meters).
- Shared preferences have been supplemented with JetpackCompse DataStore.
- Update README.md to reflect new changes.
Please let me know if you encounter any bugs.
Enjoy! :D