Sunday, September 15, 2013

Xposed Framework For Android



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 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.



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 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:
  1. Download XposedInstaller.apk and install it
  2. Launch the Xposed Installer, go to the "Framework" section and click on "Install/Update"
  3. Reboot
  4. Done!

For any modules you want to install:
  1. Download <module>.apk and install it
  2. 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)
  3. Enable the module by checking the checkbox
  4. Reboot
  5. Done!
(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:
You can flash the attached Xposed-Disabler-CWM.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/xposed/disabled, which causes Xposed to be bypassed as well.

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
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.

Changelog:
1.0: Initial version
1.1: ???
1.2: Installer
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)

Source code:
https://github.com/rovo89/Xposed (the C++ part)
https://github.com/rovo89/XposedBridge (the Java part)
https://github.com/rovo89/XposedInstaller (Installer app)

Thanks to:
Tungstwenty for his many contributions, both in code and thoughts
burstlam for Chinese translations
jack_nuclear for Russian translations
kecinzer for Czech translations
Adam77Root for Hungarian translations
WedyDQ10 for Japanese translations
rocky12345678900 for Polish translations
David_Vaz for Spanish, Catalán, and Galician translations
tonymanou for French translations
Vincenzo Cerminara for Italian translations
DubelBoom for Hebrew translations
pyler for Slovak translations
ATTACHED THUMBNAILS
Click image for larger version

Name: Screenshot_2013-09-03-21-41-04.jpg
Views: 17236
Size: 35.9 KB
ID: 2232598   Click image for larger version

Name: Screenshot_2013-09-03-21-41-18.jpg
Views: 15686
Size: 20.0 KB
ID: 2232599   Click image for larger version

Name: Screenshot_2013-09-03-21-41-41.jpg
Views: 15640
Size: 46.2 KB
ID: 2232600   Click image for larger version

Name: Screenshot_2013-09-03-21-42-01.jpg
Views: 14959
Size: 45.9 KB
ID: 2232601   Click image for larger version

Name: Screenshot_2013-09-03-21-42-17.jpg
Views: 13920
Size: 40.9 KB
ID: 2232602 

Click image for larger version

Name: Screenshot_2013-09-03-21-42-30.jpg
Views: 13224
Size: 21.8 KB
ID: 2232603   Click image for larger version

Name: Screenshot_2013-09-03-21-43-14.jpg
Views: 13150
Size: 33.7 KB
ID: 2232604  
ATTACHED FILES
File Type: zipXposed-Disabler-CWM.zip - [Click for QR Code] (121.2 KB, 57902 views)
File Type: jarXposedBridgeApi-30.jar - [Click for QR Code] (97.7 KB, 2268 views)

No comments:

Post a Comment