[FRAMEWORK ONLY!] Xposed - ROM modding without modifying APKs (2.4.1)(02.12.2013)
In this thread, I'm presenting a framework which gives you the possibility to modify your ROM - without modifying any APK (developers) or flashing (users)!
For a quick start, have a look at XDA's "Android Basics 101" on Xposed: http://www.youtube.com/watch?v=uRR0Flqx9M8
Some technical details:
Quick guide what kind of posts is allowed in this thread and what is not allowed.
If you don't follow the rules, you might get notified (sometimes friendly, sometimes angrily) that you're doing it wrong, but your post might as well be ignored.
NO posts without reading at least the first two posts and searching the thread => I and other people have spent hundreds of hours developing and supporting Xposed, we expect at least this much of respect
NO support for any modules here => use the module's thread instead, don't even try to post here
NO questions whether there is a module for XYZ exists => check the builtin repository and this thread: http://forum.xda-developers.com/show....php?t=2327541
NO requests for new modules => check this thread if it has been requested before, otherwise ask nicely there: http://forum.xda-developers.com/show....php?t=2327541
NO, you don't get any support via PM either => for the points above, do as pointed out, for allowed things always post in this thread (unless you want to share logs with sensitive data)
YES, you can report bugs for the framework => make sure that you followed the instructions and can reproduce it without any active modules
YES, you can get support if you have issues with the Xposed Installer (e.g. you can't install the framework) => make sure you read the instructions and searched in the thread for similar problems
YES, I will support module developers with specific questions (e.g. how to hook a certain method) => you must have read the development tutorial and give as much context as needed to make it easy for me or others to answer (code always helps!)
YES, you can suggest new features for the API (as a module developer) or the Xposed Installer here => again, no requests about modules
I extended the /system/bin/app_process executable to load a JAR file on startup. The classes of this file will sit in every process (including the one for system services) and can act with their powers. And even more: I have implemented something that allows developers to replace any method in any class
(may it be in the framework, systemui or a custom app). This makes Xposed very powerful. You can change parameters for the method call, modify the return value or skip the call to the method completely - it's all up to you! Also replacing or adding resources is easy.
- No need to modify any APKs. This means:
- No need to decompile, change things in smali, compile, sign, ...
- It will work for odexed and deodexed ROMs.
- Your mod is not bound to a specific version of the ROM. Unless there is a major change in the methods called for a certain functionality, your mod will continue to work even when you upgrade your ROM. Hell, it will probably even work with different ROMs.
- Multiple mods can be installed at the same time, even if they change the same package. So you can use these battery icons and those quick toggles. Even hooking the same method twice is possible. Of course, this only works properly if the mods are not trying to do incompatible things.
- It does its magic at runtime. That means you can implement options to let the user decide if they prefer the bikeshed to be painted in red or blue. Or you can have some extra logic for certain ROMs without building different mod versions.
- It can be disabled easily without having to reflash.
- It's open source.
You can download the installer from http://dl.xposed.info/latest.apk
. The attached XposedBridgeApi*.jar is only needed for developers.
An experimental version for Gingerbread made by liudongmiao can be found here: http://forum.xda-developers.com/show...4#post44034334
(no support from my side though)
How to install:
First step for everything you do: Create a nandroid backup and make sure you know how to restore it!
I'm not responsible for anything you do with your phone/tablet/rice cooker.
There is also the risk to soft-brick your device. In such a case, restoring a backup is the easiest way to get rid of it (other possibilities mentioned below).
For the framework:
- Download the Xposed Installer APK and install it
- Launch the Xposed Installer, go to the "Framework" section and click on "Install/Update"
You can verify this by starting the Xposed Installer again. If app_process jumped back to an older version (or none at all), you probably have a ROM with S-On or similar, which reverts any changes to /system after a reboot. Then you can try to flash this file: http://forum.xda-developers.com/show...postcount=2308
For any modules you want to install:
(note that you can install the framework and enable/disable multiple modules at once and reboot afterwards)
In case you get into a boot loop:
- Download <module>.apk and install it
- Launch the Xposed Installer and go to the "Modules" section (you will also get there if you click on the notification warning you that the module is not enabled yet)
- Enable the module by checking the checkbox
You can flash the attached Xposed-Disabler-Recovery.zip by Tungstwenty. It will be copied to your (external) SD card when you install Xposed as well. The only thing it does is copying /system/bin/app_process.orig back to /system/bin/app_process, which you can also do yourself (e.g. with adb shell in recovery mode).
You could also create a file /data/data/de.robv.android.xposed.installer/conf/disabled, which causes Xposed to be bypassed as well.
The official repository for Xposed modules, which can also be access from within the app itself (with download/update support), can be found at http://repo.xposed.info
You can also have a look at this index: http://forum.xda-developers.com/show....php?t=2327541
Please don't use this thread for problems with modules!
Use the thread of the module instead.
How to write a module:
If you are an interested developer, give it a try. The development tutorial
will help you get started. Further documentation (e.g. how to replace resources) is here
. And of course, you can ask your development questions in this thread.
If you have suggestions for new functions the framework could provide (which means they should be useful for more than your module), you can do this here as well. However, requests that I or somewhen else should write a module for xyz are NOT allowed here. Again, this thread is only about the framework.
1.0: Initial version
1.5: Resource replacing
1.6: Some fixes and improvements [629 downloads]
2.0 rc2: Lots of thing redone. Supports (temporarily) replacing native libraries, lots of additions and changes for developers. [3,234 downloads]
2.0: Removed the native library replacement again, support for 4.1 and 4.2, Instagram crash fixed, ... [631 downloads]
2.0.1: Fixed a crash when a module tries to hook a function with "long" or "double" parameters [930 downloads]
2.0.2: Fixed a problem which resulted in a boot loop [4,310 downloads]
2.1: Various improvements, e.g. earlier callbacks for module loading. For details, see this post
. [345 downloads]
2.1.1: Fixed a bug in drawable replacements [5,421 downloads]
2.1.2: Small fixes, added Chinese and Russian translations [11,415 downloads]
2.1.3: Reverted a change in 2.1.2 that caused bootloops; new translations and some more fixes [46,803 downloads]
2.1.4: Support for Galaxy S4 and HTC One plus a few minor fixes/enhancements (details
) [208,176 downloads]
2.2: Builtin updater/module downloader, extended UI, support for Android 4.3 and more (details
) [241,267 downloads]
2.3: x86, Knox, MIUI support (experimental), context menu in modules list and more (details
) [18,219 downloads]
2.3.1: "Segmentation fault" during installation fixed [679,333 downloads]
2.4: Support for Android 4.4, performance improvements, log viewer, active check (details
) [101,613 downloads]
2.4.1: Fixed bootloop on some x86 ROMs
(the C++ part)
(the Java part)
Tungstwenty for his many contributions, both in code and thoughts
XDA admins, news writers and supporters for making Xposed known to so many people
All those volunteers who help answering questions about Xposed
The people who donated to get me a Nexus 5 for earlier KitKat support
aljohanei for Arabic translations
hero355 for Azerbaijani translations
David_Vaz for Spanish, Catalán, and Galician translations
kecinzer for Czech translations
BobQuentok for German translations
sirodoht for Greek translations
tonymanou for French translations
Adam77Root for Hungarian translations
AngSanley for Indonesian translations
Vincenzo Cerminara for Italian translations
DubelBoom for Hebrew translations
WedyDQ10 for Japanese translations
Martinusbe, Gertlily for Dutch translations
czeci for Polish translations
marciozom13 for Portugese translations
michfood for Russian translations
pyler for Slovak translations
TheNorth34 for Turkish translations
Cye3s, liveasx for Chinese translations
If you want to contribute more translations please use this file
as a template. I can't accept translations based on decompiled APKs. Submissions on GitHub as pull request are preferred because it's easier for me.