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

Status
Not open for further replies.
Search This thread

dk_zero-cool

Senior Member
Nov 6, 2010
3,529
4,996
Horsens
The object is of type KeyGuardPatternView.UnlockPatternListener where UnlockPatternListener is an inner class. and mCallback is member variable of Outer Class i.e. KeyGuardPatternView. I am unable to access mCallback in the code above. Can anyone guide me how to access it or what has gone wrong if there is any mistake.

You just need to get the outer object

Code:
Object mCallback = getObjectField( [B]getSurroundingThis(param.thisObject)[/B], "mCallback" );

Or without the additional helper

Code:
Object mCallback = getObjectField( [B]getObjectField([/B][B][B]param.thisObject[/B], "this$0")[/B], "mCallback" );
 
  • Like
Reactions: elesbb

rovo89

Senior Recognized Developer
Jan 4, 2012
2,585
81,434
Thanks for the quick reply. I've attached a new logcat :)

Thanks, it indeed looks a bit like those other crashing TV apps. Could you PM me the APK? Play Store says it's not available in my country.

I just tried to reinstall the frameworks. With the normal way, my device just rebooted instantly and nothing happened. With the recovery method only xposedbridge.jar got installed, app_process did not. I've had this installed before, it just worked the simple way so I have no idea what I should do now.
Do you have a custom recovery (CWM/TWRP)? Did you see any error messages while flashing the file?

Are anyone having issues with updating Xposed? Whenever I reboot after I try to update nothing happens, it's still updated.

HTC One with ViperOne 5.8.0 android 4.4.2.

A frequent problem with HTC is that they have S-On, which forgets any changes to /system on reboot. Try installation via recovery.

rovo, just wondering if you had come across my message above from a few days back. I was able to build the Xposed project but having trouble with busybox. The error is coming out of multi_prebuilt.mk file - the toolchain is now properly in my PATH, but I still receive the error "LOCAL_MODULE or LOCAL_MODULE_CLASS not needed by BUILD_MULTI_PREBUILT, use BUILD_PREBUILT instead!. Stop." and my search efforts are turning up short. Do you have any idea what might be missing here?

Thanks again for your work and help.

Oh, sorry. I had seen the notification, but forgot to reply. I have checked again and this seems to be required as well:
Code:
export PATH=$PATH:/android/aosp/422/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin
(adjust it to your source tree's path).

The last framework with the last liquidsmooth crash the system ui. :(
If you want to get it fixed, please post a logcat of the bootloop. Please also make sure that this happens with only the framework installed (no active modules), but works fine without Xposed.

would be nice to see a flashable .zip of the installer, maybe even an aroma package that provides the option to install or disable the framework, not only will this provide developers with a way to pre-activate xposed for their roms but also a more secure way of installation.
Actually, I'm against ROMs with pre-installed Xposed. For that to make sense, you would also need to install and activate modules, which would require to write several things to /data, overwriting the user's settings. I have listed other reasons in the FAQ.

As you mentioned it would be more secure - why? You can now activate Xposed via recovery. Deactivating via recovery has been around for some time, now you can simply press a key. I would rather say that putting the complete installation into a zip is more risky, as you probably couldn't replicate all the checks that are done by the installer.


Now it worked on my Xperia Ray ICS 4.0.4
Is there any specialty regarding BusyBox version or its installation on the device? I have BusyBox 1.20.2 CM9 installed via JRummy BusyBox Installer 4.1 to /system/xbin/
You shouldn't even need any installed BusyBox as Xposed Installer comes with its own binary. The segmentation faults probably come from a weird system library. The static BusyBox includes all the dependencies, so it doesn't rely on system libraries (but that of course makes the file much bigger).

@rovo89 How about this?
I make small modification by forced uiOptions="splitActionBarWhenNarrow" and showAsAction="always" for all menus items and include some icons for them as well (all icons picked up from Android Design-Icons)
No need to press the menu button first if you want sort by... etc.

Interesting, yeah. The buttons in the download section should be displayed as icons already, but maybe it's different on small screens. Then again wouldn't you want to use the little space you have for the content rather than the icons? Not sure.

In the log section, I the refresh button should be shown as icon. Not sure if the other icons are needed that often. I wouldn't want to make the "Clear log" action that prominent.
 

claytonjn

Senior Member
Nov 3, 2011
1,561
836
claytonjamesphotography.webs.com
It won't FC unless Xposed is not installed or the link points to the wrong activity. And it's Settings that would FC in either case (when the link is clicked). Not Xposed.

Edit: And if you're using an unrooted ROM with Xposed baked-in, then either switch to a rooted ROM or wait until the dev updates. There's no way around the signature mismatch except to delete the old APK first (either by uninstall+install or delete+paste+reboot) and the Android Installer won't do either.

Sent from: SGS2 - JB 4.1.2 GB27 / SGS4 - JB 4.2.2 MF9

This was my point exactly. Hopefully the way you put it was more clear.
 

Scary Guy

Senior Member
I don't know if it has been suggested but I wouldn't mind seeing a repo system like in F-Droid. Not to mention it would be nice to be able to check of which xposed modules you're interested in (such as for specific ROM's/android versions, type of modifications the modules are for, if they are open source, if they contain ads, etc...)

Seriously thanks for this though. I run Pacman as a ROM and even though it does everything, it doesn't do everything. This helps out a lot.
 

tewilove

Senior Member
Apr 17, 2009
133
130
what is the right way to hook checkComponentPermission() on AMS?

Code:
	public void initZygote(StartupParam startupParam) throws Throwable {
		try {
			Class<?> clzAMS = Class
					.forName("com.android.server.am.ActivityManagerService");
			Method mChkPerm = clzAMS.getDeclaredMethod(
					"checkComponentPermission", String.class, Integer.TYPE,
					Integer.TYPE, Integer.TYPE, Boolean.TYPE);
			XposedBridge.hookMethod(mChkPerm, new XC_MethodReplacement() {

				@Override
				protected Object replaceHookedMethod(MethodHookParam param)
						throws Throwable {
					return PackageManager.PERMISSION_GRANTED;
				}

			});
		} catch (Throwable ex) {
			ex.printStackTrace();
		}
	}
This results in boot loop, and logcat shows a NPE in first call to this function. Even I do nothing in before/after hooked method there is still NPE.
Code:
W/dalvikvm( 1421): threadid=12: thread exiting with uncaught exception (group=0x416c9da0)
E/AndroidRuntime( 1421): !@*** FATAL EXCEPTION IN SYSTEM PROCESS: ActivityManager
E/AndroidRuntime( 1421): java.lang.NullPointerException
E/AndroidRuntime( 1421): 	at com.android.server.am.ActivityManagerService.checkComponentPermission(ActivityManagerService.java:7056)
E/AndroidRuntime( 1421): 	at com.android.server.am.ActivityManagerService.checkPermission(ActivityManagerService.java:7110)
E/AndroidRuntime( 1421): 	at com.android.server.am.ActivityManagerService.checkCallingPermission(ActivityManagerService.java:7118)
E/AndroidRuntime( 1421): 	at com.android.server.am.ActivityManagerService.enforceCallingPermission(ActivityManagerService.java:7127)
E/AndroidRuntime( 1421): 	at com.android.server.am.ActivityManagerService.registerProcessObserver(ActivityManagerService.java:10277)
E/AndroidRuntime( 1421): 	at com.android.server.am.ActivityManagerService.<init>(ActivityManagerService.java:2489)
E/AndroidRuntime( 1421): 	at com.android.server.am.ActivityManagerService.<init>(ActivityManagerService.java:315)
E/AndroidRuntime( 1421): 	at com.android.server.am.ActivityManagerService$AThread.run(ActivityManagerService.java:2326)
I/Process ( 1421): Sending signal. PID: 1421 SIG: 9
E/AndroidRuntime( 1421): Error reporting crash
E/AndroidRuntime( 1421): java.lang.NullPointerException
E/AndroidRuntime( 1421): 	at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:89)
E/AndroidRuntime( 1421): 	at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
E/AndroidRuntime( 1421): 	at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
Please help.
 

itandy

Senior Member
Apr 28, 2010
2,382
1,355
Hong Kong
@rovo89, I have a Xperia V phone just upgraded to the latest 4.3 firmware. Since then the phone baseband often show Unknown and then the phone mobile and Wifi cannot be used. But if I uninstall Xposed (binary only via Xposed Installer) and reboot the phone, baseband and everything works again. Then if I install Xposed binary again and soft reboot the phone, both Xposed and baseband work no problem. And hard reboot will usually (not always) result in baseband issue again.

It seems to me Xposed is interfering with the baseband initialization in kernel level. However, Xposed log shows no error at all. You have any idea or heard similar issue before?

PS. The latest Xposed 2.5 and previous 2.4.1 (Xperia test) versions have this issue on my phone
 

claytonjn

Senior Member
Nov 3, 2011
1,561
836
claytonjamesphotography.webs.com
@rovo89, I have a Xperia V phone just upgraded to the latest 4.3 firmware. Since then the phone baseband often show Unknown and then the phone mobile and Wifi cannot be used. But if I uninstall Xposed (binary only via Xposed Installer) and reboot the phone, baseband and everything works again. Then if I install Xposed binary again and soft reboot the phone, both Xposed and baseband work no problem. And hard reboot will usually (not always) result in baseband issue again.

It seems to me Xposed is interfering with the baseband initialization in kernel level. However, Xposed log shows no error at all. You have any idea or heard similar issue before?

PS. The latest Xposed 2.5 and previous 2.4.1 (Xperia test) versions have this issue on my phone

I don't mean to insult you if you've tried this already, but since you didn't explicitly state it - were all modules disabled in Xposed when you ran these tests?
 

Celestial Fury

Senior Member
Aug 19, 2013
1,000
1,434
Sim City
Change the installation mode, then.


Did you try other installation modes? What device do you have? Can you upload a logcat?

Device in my sig: Xperia Z1 4.3. 136 stock rooted. All 3 install method give the same error.

For a logcat what options should I use?

Level: Verbose, Debug, information, warning, error, fatal

Format: brief, process, tag, thread, thread time, time, long, raw

I'm using aLogcat.
 

Attachments

  • 1395726215199.jpg
    1395726215199.jpg
    30.8 KB · Views: 466

rovo89

Senior Recognized Developer
Jan 4, 2012
2,585
81,434
Device in my sig: Xperia Z1 4.3. 136 stock rooted. All 3 install method give the same error.

For a logcat what options should I use?

Level: Verbose, Debug, information, warning, error, fatal

Format: brief, process, tag, thread, thread time, time, long, raw

I'm using aLogcat.

Verbose and time should give the most information.
Anyway, could you also check that you have no permission blockers active that could restrict the installer's ability to write to the file system?





No offense taken. Yes I did disable all modules and with Xposed alone the baseband still doesn't work, at least most of the time.

That's strange. Xposed runs in userspace, so I don't see how it could interfere with the kernel or radio. Could you try to test it multiple times without Xposed? If the same error occurs just once, we know that Xposed can't be the culprit.
 
  • Like
Reactions: .MoHaMaD

itandy

Senior Member
Apr 28, 2010
2,382
1,355
Hong Kong
That's strange. Xposed runs in userspace, so I don't see how it could interfere with the kernel or radio. Could you try to test it multiple times without Xposed? If the same error occurs just once, we know that Xposed can't be the culprit.

That's what I initially think too. Anyway, I'll give it some more test and report back.
 

Celestial Fury

Senior Member
Aug 19, 2013
1,000
1,434
Sim City
Verbose and time should give the most information.
Anyway, could you also check that you have no permission blockers active that could restrict the installer's ability to write to the file system?

I use Xprivacy but Xposed is not restricted. Modules are still able to update just fine.

In the module screen it does show that Xposed 2.5 is installed.

--------- beginning of /dev/log/main
03-25 14:42:46.877 W/InputEventReceiver( 2872): Attempted to finish an input event but the input event receiver has already been disposed.
03-25 14:42:50.737 D/dalvikvm( 2872): JIT code cache reset in 0 ms (4096 bytes 7/0)
03-25 14:42:50.747 D/dalvikvm( 2872): GC_FOR_ALLOC freed 2748K, 24% free 12835K/16700K, paused 41ms, total 41ms
03-25 14:42:50.747 I/dalvikvm-heap( 2872): Grow heap (frag case) to 14.226MB for 755728-byte allocation
03-25 14:42:50.767 D/dalvikvm( 2872): GC_FOR_ALLOC freed 22K, 23% free 13550K/17440K, paused 20ms, total 20ms
03-25 14:42:50.767 I/dalvikvm-heap( 2872): Grow heap (frag case) to 14.924MB for 755728-byte allocation
03-25 14:42:50.787 D/dalvikvm( 2872): GC_FOR_ALLOC freed 12K, 22% free 14277K/18180K, paused 18ms, total 18ms
03-25 14:42:50.797 I/dalvikvm-heap( 2872): Grow heap (frag case) to 15.634MB for 755728-byte allocation
03-25 14:42:50.827 D/dalvikvm( 2872): GC_FOR_ALLOC freed 345K, 23% free 14669K/18920K, paused 25ms, total 25ms
03-25 14:42:50.827 I/dalvikvm-heap( 2872): Grow heap (frag case) to 16.017MB for 755728-byte allocation
03-25 14:42:50.847 D/dalvikvm( 2872): GC_FOR_ALLOC freed <1K, 22% free 15407K/19660K, paused 19ms, total 19ms
03-25 14:42:50.847 I/dalvikvm-heap( 2872): Grow heap (frag case) to 16.821MB for 842320-byte allocation
03-25 14:42:50.867 D/dalvikvm( 2872): GC_FOR_ALLOC freed <1K, 21% free 16230K/20484K, paused 18ms, total 18ms
03-25 14:42:50.867 I/dalvikvm-heap( 2872): Grow heap (frag case) to 17.625MB for 842320-byte allocation
03-25 14:42:50.887 D/dalvikvm( 2872): GC_FOR_ALLOC freed <1K, 19% free 17422K/21308K, paused 18ms, total 18ms
03-25 14:42:50.887 I/dalvikvm-heap( 2872): Grow heap (frag case) to 18.706MB for 755728-byte allocation
03-25 14:43:22.427 D/dalvikvm( 2872): GC_FOR_ALLOC freed 6266K, 27% free 12337K/16704K, paused 32ms, total 32ms
 

Attachments

  • 1395730439138.jpg
    1395730439138.jpg
    97 KB · Views: 601
Last edited:

bernlim

Senior Member
Feb 6, 2010
70
10
I'm trying to hook onto android.webkit.WebView from my own app with webview implemented but I am getting a java.lang.ClassNotFoundException: android.webkit.Webview. Tried searching around but can't find any mentions of other people trying to hook onto Android frameworks directly. Is this even possible?
 

egingell

Senior Member
Apr 10, 2012
4,755
2,059
47
blog.sophielabuf.com
I'm trying to hook onto android.webkit.WebView from my own app with webview implemented but I am getting a java.lang.ClassNotFoundException: android.webkit.Webview. Tried searching around but can't find any mentions of other people trying to hook onto Android frameworks directly. Is this even possible?

Classes in Java are case-sensitive.

If that's not the problem, show us your code.

Sent from: SGS2 - JB 4.1.2 GB27 / SGS4 - JB 4.2.2 MF9
 

Pons

Senior Member
Sep 2, 2010
3,932
2,067
I'm trying to hook onto android.webkit.WebView from my own app with webview implemented but I am getting a java.lang.ClassNotFoundException: android.webkit.Webview. Tried searching around but can't find any mentions of other people trying to hook onto Android frameworks directly. Is this even possible?

Classes in Java are case-sensitive.

If that's not the problem, show us your code.

That's my guess.

http://developer.android.com/reference/android/webkit/WebView.html
 

bernlim

Senior Member
Feb 6, 2010
70
10

Classes in Java are case-sensitive.

If that's not the problem, show us your code.

Sent from: SGS2 - JB 4.1.2 GB27 / SGS4 - JB 4.2.2 MF9

My mistake in the post. My code does use android.webkit.Webview and still throwing the error.
Here's the code:
Code:
package com.example.a;

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;

public class MainActivity implements IXposedHookLoadPackage {
    public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
        if (!lpparam.packageName.equals("com.example.webview"))
            return;

        XposedBridge.log("we are in webview");
        
        findAndHookMethod("android.webkit.Webview", lpparam.classLoader, "android.webkit.WebView.loadUrl", new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
            	XposedBridge.log("we are in loadurl");
            }
    });
    }
}

Log shows "we are in webview" but throws ClassNotFoundException right after.
 

Pons

Senior Member
Sep 2, 2010
3,932
2,067
My mistake in the post. My code does use android.webkit.Webview and still throwing the error.
Here's the code:

Code:
package com.example.a;

import static de.robv.android.xposed.XposedHelpers.findAndHookMethod;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;

public class MainActivity implements IXposedHookLoadPackage {
    public void handleLoadPackage(final LoadPackageParam lpparam) throws Throwable {
        if (!lpparam.packageName.equals("com.example.webview"))
            return;

        XposedBridge.log("we are in webview");
        
        findAndHookMethod("android.webkit.Webview", lpparam.classLoader, "android.webkit.WebView.loadUrl", new XC_MethodHook() {
            @Override
            protected void afterHookedMethod(MethodHookParam param) throws Throwable {
            	XposedBridge.log("we are in loadurl");
            }
    });
    }
}

Log shows "we are in webview" but throws ClassNotFoundException right after.

Did you try WebView and not Webview at findAndHookMethod("android.webkit.Webview"

Check the link I gave earlier.
 
  • Like
Reactions: bernlim

bernlim

Senior Member
Feb 6, 2010
70
10
Did you try WebView and not Webview at findAndHookMethod("android.webkit.Webview"

Check the link I gave earlier.

Roger that, it helped thanks!
However, now it throws java.lang.NoSuchMethodError: android.webkit.WebView#android.webkit.WebView.loadUrl()#exact
Same error for WebView.loadUrl() and just loadUrl() as well.
My WebView app is a default template like so:
Code:
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new WebViewClient());
myWebView.loadUrl(url);
 
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.