I know that there is a lot of work behind Xposed Framework but I dont understand why people who makes tweaks has not switched to Cydia Substrate yet for all the advantages that it offers and the experience of Saurik in that. is there any reason?
Is the Android version of the "system" that allows jailbroken iOS versions to have all the amazing tweaks that they have. It works injecting code into apps in a similar way to XPOSED but with much more possibilities, secure and better performance. Its creator Saurik has worked with that for years so it has a great support. Just search "Xposed Cydia Substrate" in google and in the first result you can read the differences.
We really need to start switching to that, its important that implements a Safe Mode and a much more safety system and gives much more options for making amazing tweaks.
So... how many of your points are really your own opinions and experiences and how many did you just take over from the article?
I have read that article a while ago and it really annoyed me. It's obvious that it's biased, and that's neither unexpected nor wrong. What annoyed me was that lots of things he mentioned about Xposed are so wrong that I really wonder whether he even wanted to get them right and do a fair comparison or just wanted to put Cydia Substrate into a good light at the expense of Xposed. Plus several "facts" are actually just his opinion expressed in a way that make them sound like the only possible truth. I felt the need to post a response to this article ever since I've read it, but it will be quite long and other things have been more important to me. So I can't give you a full comparison now.
Just a few sentences to the points you mentioned:
- "much more possibilities": Which are the most important ones to you personally? Cydia Substrate has one additional feature that I find cool (hook C functions, not to be confused with Java native functions/JNI). Only a minority of developers will understand and use it though, for most modifications it's fine if you can change apps. Apart from that, I think that all the helpers in Xposed (like registering callbacks for the time a specifc app is loaded or the resource replacement API) add very much value to the pure concept that Cydia Substrate doesn't have.
- "secure": That's one of the worst things about the article. Using standard Android permissions is
not any more secure because any app moved to /system/app will get any permissions automatically. They have the disadvantage which Saurik learned about himself later: "I did not realize that downloading WinterBoard and Substrate from the Play Store would have a check-and-the-egg problem with defining and activating the security permission. I will look into a better solution to this going forward. In the mean time, 0.9.3921 detects this and asks the user to uninstall and reinstall WinterBoard
" That's exactly the reason why I didn't use them. Xposed
does have a security barrier, you need to enable modules after installing them (with the additional benefit that you can also disable them). Xposed
does not really destroy the Java security system because it doesn't have one in the first place. With reflection, any app can call methods it wouldn't be allowed to call and get+set field contents.
- "better performance": Out of the hundreds of thousands of Xposed users, only a few have complained about some lags. Keep in mind that we are talking about some microseconds here, about ~0.07 milliseconds overhead per call. That's measurable, but hardly noticable. I'm currently testing improvements that would bring this down to ~0.013 milliseconds per call. It should be obvious that additional code needs additional processing time, but compared to the rest of the processing in Android, that's almost nothing.
The "safe mode" is nice. Tungstwenty and me discussed about something like this in July 2012 already (if not earlier). It's a bit easier for newbies, but you can achieve the same (and even more) by flashing the zip file in recovery. If someone doesn't know how to do it, I doubt he should install any framework of this kind or anything else which integrates so deeply with the system. Anyway, there is a proof of concept branch by Tungstwenty in the Xposed repository to detect keys, so I guess this feature will come to Xposed sooner or later.
There are definitely other things to mention like Xposed being open-source, but as I said, that would require a separate article.
As for experience: I'm still young, but nevertheless I have developed for years (including several low-level and reverse-engineering projects), studied IT and work for a big software company. I have been working on Xposed for more than 1.5 years and would say that I know much about the Android code base. Although Saurik has even more experience, I don't think it's a reason to prefer Cydia Substrate.
Of course, everyone is free to decide what they want to use. Let's not start a flame war here. But if you want to convince people to switch, the arguments must be correct, especially if they are about how Xposed seems to be doing things wrong instead of highlighting the unique features of other approaches.