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)!
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 forum 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 thedevelopment 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
Some technical details:
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 toreplace 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.
Advantages:
- 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.
Download:
You can download the installer from http://dl.xposed.info/latest.apk. The attached disabler zip is only needed if you are in a boot loop.
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"
In case you get a Segmentation Fault error, please install this additional app (not needed if the installation worked fine). - Reboot
- Done!
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. Use installation via recovery in such cases.
For any modules you want to install:
- 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
- Reboot
- Done!
In case you get into a boot loop:
First, try using the safemode by pressing any hardware key repeatedly. You can find a short explanation how it works here.
If that doesn't work, 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).
Modules:
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
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.
No comments:
Post a Comment