Xposed - Legacy thread. Don't panic, Xposed is still here.

Status
Not open for further replies.
Search This thread

egingell

Senior Member
Apr 10, 2012
4,755
2,059
46
blog.sophielabuf.com

Monipeev

Senior Member
Apr 22, 2010
726
160
Sofia
Samsung Galaxy S22 Ultra
Hello everyone.
Does anyone know the module that could change the time for blinking a LED light? Use this option soon with one of the modules, but now even after hours of reading options, apparently not find it.

Thanks in advance to any responders. :)
 

Pons

Senior Member
Sep 2, 2010
3,932
2,067
Hello everyone.
Does anyone know the module that could change the time for blinking a LED light? Use this option soon with one of the modules, but now even after hours of reading options, apparently not find it.

Thanks in advance to any responders. :)

Please read the first two posts of this thread. If you already have, and can't find it, maybe it doesn't exist, at which point you can move on to the module request thread.
 
  • Like
Reactions: Monipeev

TrD_

Member
Mar 17, 2013
14
1
First time trying this, on unlocked bootloader and rooted Xperia Z with newest (stock)firmware, it just keeps saying "The latest version of Xposed is currently not active. Did you install the framework and reboot?" Yes, I did reboot, so far like million times, also tried reinstalling but still keeps saying that. Am I doing something wrong or what could be the problem?
 

Programming4life

Senior Member
Jul 8, 2013
620
624
programming4life.com
[Help] Unable to hook layout.

I am trying to change the background color of a button in snapchat. But for some resin it does not work.
As of know what i know is for some resin the java method "handleLayoutInflated" is not being called. I know this because I call "XposedBridge.log" inside the method. Which when I check the log the output of "XposedBridge.log" is not there however i can see the log msg "Inside SnapChat!".
So what am I doing wrong why is the background color not changing? Thanks

The layout of snapchat is as:
com.snapchat.android/layout/caption_edit_text_vanilla_cap.xml

The contents of caption_edit_text_vanilla_cap.xml is:
Code:
<?xml version="1.0" encoding="utf-8"?>
<EditText android:textSize="@dimen/image_preview_text_size" android:textColor="@*android:color/white" android:id="@id/picture_caption" android:background="@color/camera_activity_picture_text_message_background" android:paddingLeft="6.0dip" android:paddingTop="4.0dip" android:paddingRight="6.0dip" android:paddingBottom="5.0dip" android:visibility="invisible" android:longClickable="false" android:layout_width="fill_parent" android:layout_height="wrap_content" android:maxLines="1" android:singleLine="true" android:imeOptions="actionDone|flagNoExtractUi" android:textCursorDrawable="@drawable/camera_caption_cursor"
  xmlns:android="removed by me not allowed to post links yet =(" />

The contents of my main class "App.java":
Code:
package com.manvir;

import android.graphics.Color;
import android.widget.EditText;
import de.robv.android.xposed.IXposedHookInitPackageResources;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LayoutInflated;
import de.robv.android.xposed.callbacks.XC_InitPackageResources.InitPackageResourcesParam;

public class App implements IXposedHookInitPackageResources {
	@Override
	public void handleInitPackageResources(InitPackageResourcesParam resparam) throws Throwable {
		if (!resparam.packageName.equals("com.snapchat.android"))
            return;
    	
    	XposedBridge.log("Inside SnapChat!");
    	
    	resparam.res.hookLayout("com.snapchat.android", "layout", "caption_edit_text_vanilla_cap", new XC_LayoutInflated() {
			@Override
			public void handleLayoutInflated(LayoutInflatedParam liparam) throws Throwable {
				EditText g = (EditText) liparam.view.findViewById(liparam.res.getIdentifier("picture_caption", "id", "com.snapchat.android"));
				g.setBackgroundColor(Color.RED);
				XposedBridge.log("caption_edit_text_vanilla_cap DONEEEEE");
			}
		});
	}
}
 
Last edited:

rovo89

Senior Recognized Developer
Jan 4, 2012
2,585
81,434
Quick question. You mention that when we engage safe mode a special file is created that prevents Xposed from running. Is this file a temporary file? As in, can we boot to safemode, disable a module that caused the issues, then reboot (or do some other action) to get Xposed back for all our other modules?
The "conf/disabled" file remains there, however it is automatically removed when you install the framework again.

@rovo89

I'm sure this was reported earlier, the ASUS MeMO Pad FHD (x86) with Android 4.3 gets stuck at the boot logo with xposed.
This is a part of my logcat, maybe it's helpful for you:
Code:
E/ServiceManager(  139): add_service('media.widi',0xa) uid=1013 - PERMISSION DENIED
I/ServiceManager(  148): Waiting for service MultiDisplay...
I/ServiceManager(  148): Waiting for service MultiDisplay...
I/ServiceManager(  148): Waiting for service MultiDisplay...
D/Xposed  (  149): Starting Xposed binary version 50, compiled for SDK 16
D/Xposed  (  149): Phone: ME302C (asus), Android version 4.3 (SDK 18)
D/Xposed  (  149): ROM: JSS15Q.WW_epad-V5.0.16-20140226
D/Xposed  (  149): Build fingerprint: asus/WW_epad/ME302C:4.3/JSS15Q/WW_epad-V5.0.16-20140226:user/release-keys
I/Xposed  (  149): -----------------
I/Xposed  (  149): Found new Xposed jar version, activating it
I/Xposed  (  149): Added Xposed (/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar) to CLASSPATH.
D/AndroidRuntime(  149): 
D/AndroidRuntime(  149): >>>>>> AndroidRuntime START de.robv.android.xposed.XposedBridge <<<<<<
D/AndroidRuntime(  149): CheckJNI is OFF
I/AndroidRuntime(  149): IFWI Version: 51.33
I/AndroidRuntime(  149): SCU Version: 20.38
I/AndroidRuntime(  149): PUnit Version: A0.40
I/AndroidRuntime(  149): IA32FW Version: 00.56
I/AndroidRuntime(  149): ValHooks Version: 51.32
I/AndroidRuntime(  149): Kernel Release Version: 3.4.43-00001-g2632b25
I/dalvikvm(  149): No library specified. The standard exception handler will be used
D/dalvikvm(  149): Unable to stat classpath element '/system/framework/com.intel.asf.jar'
D/dalvikvm(  149): Trying to load lib libjavacore.so 0x0
D/dalvikvm(  149): Added shared lib libjavacore.so 0x0
D/dalvikvm(  149): Trying to load lib libnativehelper.so 0x0
D/dalvikvm(  149): Added shared lib libnativehelper.so 0x0
I/dalvikvm(  149): DexOpt: source file mod time mismatch (437e5e69 vs 446f64f1)
D/dalvikvm(  149): ODEX file is stale or bad; removing and retrying (/data/dalvik-cache/data@data@de.robv.android.xposed.installer@bin@XposedBridge.jar@classes.dex)
D/dalvikvm(  149): DexOpt: --- BEGIN 'XposedBridge.jar' (bootstrap=0) ---
I/dalvikvm(  458): No library specified. The standard exception handler will be used
D/dalvikvm(  458): DexOpt: 'Landroid/annotation/SuppressLint;' has an earlier definition; blocking out
D/dalvikvm(  458): DexOpt: 'Landroid/annotation/TargetApi;' has an earlier definition; blocking out
D/dalvikvm(  458): DexOpt: not verifying/optimizing 'Landroid/annotation/SuppressLint;': multiple definitions
D/dalvikvm(  458): DexOpt: not verifying/optimizing 'Landroid/annotation/TargetApi;': multiple definitions
I/dalvikvm(  458): DexOpt: access denied from Landroid/app/AndroidAppHelper; to field Landroid/app/ActivityThread;.mConfiguration
I/dalvikvm(  458): DexOpt: illegal method access (call Landroid/content/res/TypedArray;.<init> (Landroid/content/res/Resources;[I[II)V from Landroid/content/res/XResources$XTypedArray;)
I/ServiceManager(  148): Waiting for service MultiDisplay...
I/dalvikvm(  458): DexOpt: illegal method access (call Landroid/content/res/Resources;.loadXmlResourceParser (ILjava/lang/String;)Landroid/content/res/XmlResourceParser; from Landroid/content/res/XResources;)
I/dalvikvm(  458): DexOpt: access denied from Landroid/content/res/XResources$2; to field Landroid/content/res/TypedArray;.mData
D/dalvikvm(  458): DexOpt: load 130ms, verify+opt 124ms, 408436 bytes
D/dalvikvm(  149): DexOpt: --- END 'XposedBridge.jar' (success) ---
D/dalvikvm(  149): DEX prep '/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar': unzip in 7ms, rewrite 373ms
D/Xposed  (  149): Using structure member offsets for mode WITH_JIT
I/Xposed  (  149): Found Xposed class 'de/robv/android/xposed/XposedBridge', now initializing
W/dalvikvm(  149): PR_SET_NO_NEW_PRIVS failed. Is your kernel compiled correctly?: Invalid argument
I/Xposed  (  149): -----------------
I/Xposed  (  149): 17.03.2014 00:15:44 UTC
I/Xposed  (  149): Loading Xposed v46 (for Zygote)...
I/Xposed  (  149): Running ROM 'JSS15Q.WW_epad-V5.0.16-20140226' with fingerprint 'asus/WW_epad/ME302C:4.3/JSS15Q/WW_epad-V5.0.16-20140226:user/release-keys'
I/SamplingProfilerIntegration(  149): Profiling disabled.
I/Zygote  (  149): Preloading classes...
That looks normal so far, however it doesn't include the interesting part where the system crashes. Could you send me a full logcat?

The 2.5b2 installed fine without root access but while clicking install/upgrade it gave the message to give root permission. I guess this is the expected behavior.
Yes, that's expected, it just shouldn't crash or something. Actually we aren't far away from a non-root installation, however it would still require a custom recovery. Not sure if this combination even exists in real life.

It might be a block device setting. Some newer systems is configured with "blockdev --setro" and needs "blockdev --setrw" in order to write to the /system partition, no mater what it has been mounted as. Only a few busybox versions has been configured to do this automatically when remounting partitions.
Like this? https://github.com/rovo89/android_external_busybox/commit/4f84a299b62843bfd55b4e19accbe9f93f09751f ;)
I didn't get it merged upstream to CM though (yet): http://review.cyanogenmod.org/#/c/54659/

Accoding to the log, this seams to be because it looks in the wrong place. It looks in java.lang.Class instead of the actual class. Can't remember how the XposedHelpers work, as I use my own lib for these things, but I think you should change

Code:
[COLOR=#000000]final Class[COLOR=#0000BB]<?[/COLOR][COLOR=#007700]> [/COLOR][COLOR=#0000BB]clock [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]XposedHelpers[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]findClass[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"com.android.systemui.statusbar.policy.Clock"[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]lpparam[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]classLoader[/COLOR][COLOR=#007700]); 
[/COLOR][COLOR=#0000BB]XposedHelpers[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]findAndHookMethod[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]clock[/COLOR][COLOR=#007700], [/COLOR][COLOR=#DD0000]"updateClock"[/COLOR][COLOR=#007700], new [/COLOR][COLOR=#0000BB]XC_MethodHook[/COLOR][COLOR=#007700]() {[/COLOR][/COLOR]
to

Code:
[COLOR=#000000][COLOR=#0000BB]XposedHelpers[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]findAndHookMethod[/COLOR][COLOR=#007700]([/COLOR][/COLOR][COLOR=#000000][COLOR=#007700][COLOR=#000000][COLOR=#DD0000]"com.android.systemui.statusbar.policy.Clock"[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]lpparam[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]classLoader[/COLOR][/COLOR][/COLOR][COLOR=#007700], [/COLOR][COLOR=#DD0000]"updateClock"[/COLOR][COLOR=#007700], new [/COLOR][COLOR=#0000BB]XC_MethodHook[/COLOR][COLOR=#007700]() {[/COLOR][/COLOR]
I would also do that because it's shorter to write, but these two are equivalent.

After looking at the Android source I see the problem. The 'updateClock' method is defined as 'final void updateClock()' instead of '[public/protected] void updateClock()'. XposedHelpers is not able to locate methods without access modifiers, which is one of the reasons why I made my own tools.
That's not true. You probably mean this: https://github.com/liudongmiao/XposedBridge/issues/1
The issue there was that you wanted to call a method which was implemented a superclass with an object of a subclass. The bug in the helper was that protected/package methods from superclasses were not considered, which has been fixed 5 months ago.

The problem here is "clock" is of type Class<?>. So XposedHelpers.callMethod(clock, "updateClock") is equivalent to calling Clock.class.updateClock(). That obviously can't work. If you wanted to call a static method, you would need to use XposedHelpers.callStaticMethod(clock, "updateClock") instead. But the method isn't static. So you need the first argument to be an object of the Clock class. Actually not any object of that class (so don't try to creating it yourself), but THE object which really displays the clock. Simple approach: As everything is in one process, you could save param.thisObject in updateClock() to an Object variable in your module. When the condition changed, you can call the method for this object.


First time trying this, on unlocked bootloader and rooted Xperia Z with newest (stock)firmware, it just keeps saying "The latest version of Xposed is currently not active. Did you install the framework and reboot?" Yes, I did reboot, so far like million times, also tried reinstalling but still keeps saying that. Am I doing something wrong or what could be the problem?
Did you try the beta version?

I am trying to change the background color of a button in snapchat. But for some resin it does not work.
As of know what i know is for some resin the java method "handleLayoutInflated" is not being called. I know this because I call "XposedBridge.log" inside the method. Which when I check the log the output of "XposedBridge.log" is not there however i can see the log msg "Inside SnapChat!".
So what am I doing wrong why is the background color not changing? Thanks
Could you try reducing the callback to only the logging statement? I think liparam.view is the EditText already, so not sure what happens when you call findViewById on it.
And maybe it's obvious, but are you 100% sure that this layout is actually used where you expect it?
 

Programming4life

Senior Member
Jul 8, 2013
620
624
programming4life.com
[Help] Unable to hook layout.

Could you try reducing the callback to only the logging statement? I think liparam.view is the EditText already, so not sure what happens when you call findViewById on it.
And maybe it's obvious, but are you 100% sure that this layout is actually used where you expect it?

Code:
package com.manvir;

import android.annotation.TargetApi;
import android.os.Build;
import de.robv.android.xposed.IXposedHookInitPackageResources;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LayoutInflated;
import de.robv.android.xposed.callbacks.XC_InitPackageResources.InitPackageResourcesParam;

public class App implements IXposedHookInitPackageResources {
	@Override
	public void handleInitPackageResources(InitPackageResourcesParam resparam) throws Throwable {
		if (!resparam.packageName.equals("com.snapchat.android"))
            return;
    	
    	XposedBridge.log("Inside SnapChat!");
    	
    	resparam.res.hookLayout("com.snapchat.android", "layout", "caption_edit_text_vanilla_cap", new XC_LayoutInflated() {
			@Override
			public void handleLayoutInflated(LayoutInflatedParam liparam) throws Throwable {
				XposedBridge.log("caption_edit_text_vanilla_cap DONEEEEE");
			}
		});
	}
}
Thanks, but I tried this and in logcat i cant see the log "caption_edit_text_vanilla_cap DONEEEEE" any where leading me to believe that the callback is not being called. So what else could I possibly do?

Wouldn't something like this work?
Code:
resparam.res.hookLayout("com.snapchat.android", "EditText", "caption_edit_text_vanilla_cap", new XC_LayoutInflated() {
 

iamxeph

Senior Member
Nov 24, 2008
334
24
Yes, that's expected, it just shouldn't crash or something. Actually we aren't far away from a non-root installation, however it would still require a custom recovery. Not sure if this combination even exists in real life.

It does! :laugh:

A non-root installation would be great.
 

dixan43

Senior Member
Oct 19, 2013
488
97
Anand
help, when i install xposed i get this error, "mksh directory not found":confused::banghead::banghead:

sent from my karbonn a12+
 

dk_zero-cool

Senior Member
Nov 6, 2010
3,529
4,996
Horsens
The problem here is "clock" is of type Class<?>. So XposedHelpers.callMethod(clock, "updateClock") is equivalent to calling Clock.class.updateClock(). That obviously can't work. If you wanted to call a static method, you would need to use XposedHelpers.callStaticMethod(clock, "updateClock") instead. But the method isn't static.

Yes my mistake. I missed some of the code examples he wrote. I just looked at the hook method part.
 

murasaki.bb

Member
Feb 1, 2011
28
9
Hello. I have an Alcate one touch c7 (5 inch Mediatek MT6582 quad core / 4.4.2 stock rom). After intalling the framework i get stuck at boot. What can i do to help you fix the bug? Thank you.
 

bates060

Senior Member
Jan 24, 2011
95
17
Mobile data with Xposed i9505

Hey rovo,

Firstly absolutely love your hard work. Real credit to yourself.

I always install Xposed and always have done.

I recently got a i9505 and been experiencing slow data speeds. so i did some digging and couldnt for the life in me figure out what is was that was causing it. When i flashed a new rom it was fine and then i would install xposed and other apps *Facebook *twitter etc.

I then uninstalled Xposed and rebooted, my data speeds went back to normal.

Was wondering if anyone else was experiencing this?

Many thanks in advance

Bates060
 

perpe

Senior Member
Jul 17, 2011
130
113
That looks normal so far, however it doesn't include the interesting part where the system crashes. Could you send me a full logcat?

I didn't saw more about xposed in the log, that's why I added only the part that belongs to xposed. The log was with 2.5 beta 2. The log with 2.4.1 contains more about xposed. I added both into the archive. On boot up adb starts twice, the logs tagged with first are from the frist adb start, they shouldn't be of interest, nevertheless I added them, too.
The archive contains also the part of the logs, which are displayed within the app. There shouldn't be something different, but may help you.

Many thanks. :)
 

Attachments

  • xposed-logs-me302c.tar.gz
    387.4 KB · Views: 259

aomtitans3

Member
Oct 6, 2013
11
2
I think I'm experiencing some home screen rotation lag on my LG G2 F320K with Android KitKat 4.4 when installing the framework from framework installer. When I uninstall it the thing goes back to normal and the problem disappears, but with it installed (with or without any module activated) the forementioned lag reaches 4 seconds many times, something completely unacceptable for me. It seems that inside an application the problem is there too but much more lightly and it's not as noticeable as at the homescreen. I've been forced to uninstall it until this problem is fixed cause it's pretty annoying for me.
 
Last edited:
Status
Not open for further replies.

Top Liked Posts

  • There are no posts matching your filters.
  • 638
    Xposed 2.4 beta1/beta2

    This is Xposed version 2.4 beta1. The main new features and fixes in this version are:
    • Support for Android 4.4 (KitKat)
    • Significant performance improvements of the framework
    • Viewer for the debug.log in the installer
    • Check in the installer whether Xposed is actually active and working

    First of all, I would like to thank the 45 people who donated to get me a Nexus 5, from a little "thanks" to huge amounts of money. I was really impressed and hope you like this update.

    In detail:
    Xposed should now fully support KitKat. As mentioned, that wouldn't have been possible at this time without your support.
    Modules should continue to work if they don't rely on AOSP internals that have changed in KitKat. One example: It seems that the battery icon is no longer an (animated) image, but a Java implementation. Obviously, any modules that try to replace the battery image will no longer work. The Xposed framework can't do anything here, the module needs to be rewritten. Therefore, if some of your modules don't work, please get in contact with the module author first. You will probably see an error in the new debug.log viewer in this case.
    Xposed isn't compatible with ART, I can't say yet whether it will be in the future (will require a major rewrite if possible at all). As you would get into a bootloop if you try to combine Xposed+ART, Xposed automatically resets the choice to "Dalvik". If you want to test ART, you must uninstall the framework.

    The performance improvements apply to the very core of Xposed, the method hooks, in all Android versions. In a test app developed by @exidler, the overhead per call used to be ~71 μs (= 0.071 ms) per call to a hooked method (with one empty callback handler) on my Galaxy S2. Now it's ~13 μs (= 0.013 ms). That's a relative improvement of factor ~5.5x. Thanks to @exidler for the research and several suggestions! I have sent a pre-beta to @kamso, who had reported lags with older versions. Now everything works fine for him. Anyway, I wouldn't say that Xposed had bad performance before. Keep in mind that we are talking about significantly less than a millisecond here.

    The debug.log viewer should give a quick impression whether Xposed and modules could be loaded fine. It also includes options to save the log to SD card (so it's easier to transfer it to a PC etc.) and send it via mail.

    The Xposed Installer now checks whether the latest version of the framework is active. If not (e.g. because it's not installed yet, you forgot to reboot or something in Xposed doesn't work), you will see a warning in the welcome screen and at the top of the module list.

    Finally, there were some other minor improvements and fixes and new/updated translations.


    Developers:
    As a reminder, please keep the debug.log clean. It's only helpful if it's not as spammed as logcat. You should only use XposedBridge.log() for error messages and other unexpected situations. If everything runs fine, it shouldn't write anything to the log. If you really need to keep some logging in published builds, please use either logcat or make it an opt-in options (i.e. disabled by default and the user enables it if he runs into problems).

    Apart from that, there was a little API change: https://github.com/rovo89/XposedBridge/commit/3c18f6f6bd4e0ec57898b3b3a79b5584d0396054
    I assume that very few modules use the "extra" field to transfer information between beforeHookedMethod() and afterHookedMethod(). If you do, simply replace it by getExtra().

    Layout inflation hooks now also work if the layout has been included in other layouts. That's actually a pretty tricky use-case for the "extra" parameter mentioned about (and other tricky technologies).

    If for some reason you need to determine the active XposedBridge version in your module, you can use XposedBridge.XPOSED_BRIDGE_VERSION.

    findMethodBestMatch() now also looks for protected and package-private methods in superclasses. That's mainly useful if you use the callMethod() or callStaticMethod() helper.

    UPDATE: (beta2)
    The new beta should fix the "read-only filesystem" errors. If you used to experience them, please try this version. Otherwise, there is no need (and no advantage) to update.

    UPDATE:
    The final version is out, please use it instead (see first post / in-app installer).
    479
    The ART of patience

    Regarding ART possibly becoming the default runtime engine: I think that's good news because it means that we will get a stable version of ART then. I'm reluctant to work further on ART support at the moment for mainly three reasons:

    1. Time. I used to spend every evening and every weekend for Xposed, either to give support here (often answering the same questions again and again), writing code or researching about bugs or new ideas. As you may have noticed, there are now days or even weeks where I don't even log on to XDA, and I'm actually glad about this.

    2. Experimental software is bound to contain bugs, even severe ones. There is a reason why Google didn't make this choice available for the typical user (and keep in mind, we are not typical users). I neither want people to blame Xposed if their phone starts acting up nor do I want to hunt bugs which are caused by a runtime engine that is explicitely labelled as not finished yet.

    3. As long as ART is experimental, it's much easier to make big changes to the code. Once a final version is out and used by the masses, quality engineers we be much more careful not to break things. That means that Xposed for ART on 4.5 (or whatever it will be called) might need to be completely different than for ART on 4.4. More variants means more time for maintenance. And I don't feel like pushing something out now just to drop support again in a later version. There is not enough benefit of using ART at the moment to justify that.

    You know, I had already worked on ART support and spent several dozens of hours reading the code, looking for ways to hijack it, implementing my ideas, doing trial and error and starting again from the beginning. I finally had my Nexus 5 boot with Xposed in early December and quickly tested the App Settings module. I'm happy about that, but I also know that this was just a very experimental version, less ready than ART itself. It is totally hacked together and only tested with the stock ROM. ART is quite complex and has several different modes. It's not worth giving the current development to someone else before I have tested these things on my phone, where I can debug much better than instructing someone else to do it. It also requires rewriting app_process to be a light executable again, which loads either the Dalvik or ART Xposed library, depending on your settings. That would require changes in the installer as well, etc. etc.

    So you see, there is still lots of work to do. At the moment, I'm not actively working on it, but trying to get some other things fixed (e.g. LG ROMs) or improved (installation via recovery, better installation feedback in case root access failed, static Busybox package). And as I said, I do have other things in my life as well. It's not about money, that's what I have my full-time job for. I work on Xposed for fun (and maybe a bit for the reputation ;)), so the best way to ensure that I keep on working on it is not taking away the fun part of it. Don't pressure me like it was my duty to implement something ASAP (!!!), be patient even if it takes a bit longer until I answer and join the volunteers who help answering basic questions here so I don't have to. Thanks!
    317
    General information on Xposed has been moved to this thread: http://xdaforums.com/xposed/xposed-installer-versions-changelog-t2714053
    The FAQ has been moved to this thread: http://xdaforums.com/xposed/-t2735540
    Questions, suggestions, bug reports and so on can be posted in the Xposed General forum (for the installer/framework/development only) and in the Xposed Framework modules forum (for anything module-related).
    222
    Xposed Framework Installer (Flashable Zip)

    Announcement: Xposed Framework v2.5+ comes with an option to flash its own install zip via recovery, making my package obsolete. I'll leave them up for posterity; could be useful should the need arise for downgrading on some devices. Cheers all! 10000 downloads is pretty cool. :)

    Xposed Framework v2.2+ has fixed JB4.3 installation and v2.4+ has added support for KK4.4, but for those that still want it, or cannot install via the APK due to /system write protection like HTC's S-ON, here is an updated zip frontend method for installing the framework; now for Xposed Framework v2.4.1.

    You MUST have the Xposed Installer APK installed FIRST. The zip will detect if you do not and stop.

    Flash this in recovery and my frontend script (the update-binary) will detect the correct architecture and SDK version to use the appropriate Xposed app_process and busybox builds (x86, armv5, v6 and v7 & sdk 15 and 16+ supported), and should detect the uid of the Xposed Installer APK on-the-fly and set up the required files with it.

    It leaves a log behind in /data/local/tmp/xposed-log.txt either way with more details about how it went. :cool:

    It also unpacks Xposed-Disabler-Recovery.zip to /sdcard/ (or /sdcard/0/ if it exists) to be as close to the APK install method as possible. For those wanting another method to reactivate after a ROM update or toggle Xposed disabled/enabled, @amishxda has also created a cool "Xposed toggler" zip here.

    Note: Xposed Framework files and the install.sh used are the work of @rovo89 and @Tungstwenty; I have only created a recovery flashable zip to function as an alternative frontend for the framework installation process. I take no credit for their fantastic work.


    P.S. If you found this handy then please check out my Odds and Ends thread for more flashable goodness. :D

    5351 downloads of v2.1.4 when removed. 1049 downloads of v2.2 when removed.
    193
    Xposed 2.5 final

    This is Xposed version 2.5 (final). The main new features and fixes in this version are:
    • Rewritten framework installation/uninstallation
      • Uses interactive su (via libsuperuser) to provide improved compatibility with different Superuser apps
      • Better feedback when root access fails (doesn't freeze the app anymore)
      • Offers installation via custom recovery (CWM/TWRP), either flashing the file automatically or manually
    • Safemode to disable Xposed with hardware keys to get out of (most) bootloops
    • Compatibility with Sony/LG ROMs (4.3 and 4.4), Meizu ROMs (4.4)
    • Debug setting to disable resource hooking as a temporary workaround for incompatibilities with some theming engines (not all modules can be used in this mode)
    There are also other improvements and fixes, especially many translations updates.
    In case you get a message "Segmentation fault" during installation, you can now download an additional app which provides statically compiled versions of BusyBox (a lot bigger, but should work with every ROM). It's not needed otherwise.

    Quick explanation of the safemode: It was developed by @Tungstwenty and makes it possible to disable Xposed by repeatedly pressing one of the hardware buttons during early startup. The phone will vibrate twice when the first key press has been detected. Then you have five seconds to press the same button four more times. Each key press will be confirmed with a short vibration; the final one with a long vibration. It creates /data/data/de.robv.android.xposed.installer/conf/disabled, which prevents most of Xposed's actions (e.g. no hooks are made and no modules are loaded). There's no 100% guarantee that this will get you out of a bootloop, but in most cases it should.

    As always, you can download it via the in-app updater or from http://dl.xposed.info/latest.apk.