Every so often, an OEM will do things right. Well, nearly right anyway—right enough at least for their stock ROMS to only need some minor tweaks before they are almost perfect. More often than not though, these tweaks are things that can be tricky to implement for the average user—a user who will often find himself looking to install a custom ROM that is pretty close to stock with these desired tweaks added in. Usually that means downloading a pretty large file and then following the obligatory backup/flash/restore process that many of us now have down to a fine art. It shouldn’t have to be this way though, and luckily it isn’t. You just might not know it yet.
You may or may not have heard of the Xposed Framework, the brainchild of XDA Recognized Developer rovo89. If you’re already familiar with this particular mod, there’s really no need for me to tell you how awesome it is. You’re excused and can go play outside. If you aren’t already familiar with the framework, take a seat and listen up. While the Xposed Framework certainly isn’t a new thing, it doesn’t get nearly as much recognition as it deserves, and it’s time to do something about that.
According to the developer, Xposed works as follows:
“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.”
What that means is that modifications (known as Xposed modules) can be made to any app or element of the OS itself by simply coding the desired change, packing it into its own APK, and installing to the device. The Xposed Framework takes care making sure it gets to where it needs to go and stays there. This eliminates the need to decompile the specific item you’re modifying or creating different versions for different ROMs and devices. There may be a need to alter an Xposed module after a major change in Android itself, for example 4.1 to 4.2, but let’s face it: That’s a fairly infrequent occurrence. No files on the device itself are modified, and this means that in the event something does go wrong, returning the device to a stable state is no more complicated than flashing a zip to disable the framework. That’s right, no more lengthy and storage consuming nandroid backup process every time something goes wrong.
Installation is incredibly quick and painless, considering the scope of this utility. Simply grab the Xposed Installer from the forum thread and sideload to your device, open up the app once it’s installed and click on “Install/Update,” reboot the device, and you’re good to go. No seriously, it’s that simple.
Installing each individual module is as easy as sideloading the APK, installing, activating it via the Xposed application and rebooting. Some mods will offer a user interface depending on how much functionality they are capable of, others just have one specific purpose and need no attention at all.
So what kind of modifications are we talking about here? Well, if you can think of tweak then chances are it can be packed into an Xposed module. Think of the added little extras that make your favourite custom ROM so appealing. Those are the sort of things that Xposed was created for.
A perfect example is Smart Alarm Icon, created by XDA Forum Member Mantelinho. This mod will configure the alarm icon in your status bar to only be displayed at a predetermined period before the alarm is due to sound. Let’s say you have your alarm set Monday through Friday. You can leave the alarm set all week but won’t have to see that little clock shaped reminder of Monday morning hanging around in your status bar over the weekend.
There a multitude of mods out there for various purposes, and you can bet that we’ll be highlighting as many as we can in the future. In the meantime, you can check out a repository for various modifications that was put together by Developer Admin pulser_g2. There is also a development tutorial aimed at getting people to create their own modules and making this the single most powerful tool for customisation there is.
Just when you thought this whole thing couldn’t possibly get any more awesome, it’s all open source. Be sure to check out the original forum thread on the Xposed Framework for more information.
May 6, 2013 By: Conan Troutman
Most of the tutorials out there to get you started in developing Android applications will recommend using Eclipse as an IDE (integrated development environment) and not without good reason. It’s a solid and dependable program that is intuitive and particularly friendly to those with minimal experience. You could almost be forgiven for thinking it was the only viable option given its popularity, but this is far from the truth and there are alternatives.
XDA Senior Member ramdroid77 has taken to the newly launched App Development Forums to talk about his choice of IDE, IntelliJ IDEA. After running into some issues with Eclipse failing to load certain projects on both Windows and Linux, he sought out an alternative and settled with IDEA. One of the reasons for his preference is as follows:
“One big difference (and it seems many people have troubles with it) is IDEA’s handling of library projects. Unfortunately I think this is done in a very logical way, as each “project” is handled as a model. Means you create a project (“My app”), add a module for your main app project, and add new modules for each library project you would add. For each modules you can set the dependencies and say on which modules it depends.”
IDEA itself supports Windows, OSX and Linux, another notable feature is the inclusion of an inbuilt Android UI designer. It also happens to be open source and is available from the JetBrains site as a free download (there is also a paid version with increased functionality). This definitely looks like it might be worth a spin for all of you app developers out there. Be sure to head over to the relevant forum thread and share your experiences as well.
Working with a team of developers can be great because you have someone to talk to when you hit the coding wall. If you don’t have that luxury, you can still learn how other programmers do things in order to sharpen your skills. That’s what XDA Recognized Contributor coolsandie had in mind when he started his list of all open source Android apps.
The list is huge, spanning several posts in the original thread, so there are many examples to learn from. All of the apps listed are available in the Play Store, which should equate to them being less buggy than random code snippets found in the wild. You can install them to see what features they include, then follow the list’s links to the source code to see how the original developers did everything.
Just reading through the source code is a great way to improve your own work and decrease the time you spend developing, but this is also a great resource to turn to when faced with a very specific problem. Want to know how to detect movement? Check out Pedometer which keeps tracks of how many steps you take each day. Need an example of how to add Widgets as part of your App? You’ll have no problem finding one in this list.
Here at XDA, you’ve probably seen us talk about collaboration. The dictionary defines collaborating as “to work with another or others on a joint project.” We take collaboration seriously, so much so that we actually frown when we see members of the community not take it as seriously. What makes us even more upset is when manufacturers don’t take it seriously, though that rant is for another day.
There have been numerous instances of OEMs that have claimed to be “developer-friendly,” but whose actions spoke louder than their words. On the other hand, there are only a few instances of OEMs actually having their actions match their words, with one of those being Sony over the last 12-18 months and another being a relatively new entry to the Android world, Chinese manufacturer Oppo. If you recall we’ve spent some time discussing Oppo’s recent wins in the Android space, not the least of which is their GPLv2-required release of kernel source for the Find 5. On the surface this is not that noteworthy given it should already be done by default, however with Chinese manufacturers that is not a given. Given the negative track record of Chinese manufacturers adhering to licensing, Oppo is doing something extraordinarily rare by signaling a desire to position themselves in the Western market. Unlike other Chinese companies (Huawei comes to mind), Oppo is showing they have some understanding of, or are attempting to learn, what it takes to succeed.
As OEM Relations Manager for XDA, it is my job to contact OEMs and build a dialog with them. This usually starts with establishing a relationship where XDA, with its 5 million users and tremendous independent developers, and the respective OEM can begin to discuss ways to collaborate (there’s that word again) on win/win opportunities. Sometimes it is met with open arms, as has been the case with Oppo. When approached with the idea to work together with XDA in growing development, we immediately began to discuss ways to facilitate collaboration (!) to bring about a good relationship with the developer community. We also knew that in order to make any collaboration a win/win for both parties, there would have to be value for the OEM.
After those initial discussions, I spoke with some veteran CyanogenMod maintainers (and members of the now-defunct Team Hacksung) XDA Elite Recognized Developer Entropy512, and Recognized Developers XpLodWILD and nebkat, about their interest in taking on a new device and bringing CM to it. All three were definitely interested, and I began working together with them and Oppo to make it happen. After a few weeks, CM10.1 was brought to Nightly status by the team.
Oppo was ecstatic, and so recently I reached out to XDA Recognized Developers, and Paranoid Android developers, molesarecoming and aaronpoweruser, about their interest in such a project. As was expected, their answer was in the affirmative. And after just a few days, aaronpoweruser posted on G+ that he was close to having an alpha build of PA soon.
All of this hasn’t come easily though, given the state of Oppo’s kernel source. The kernel source that was released was not fully GPLv2 compliant as it was released late (though better than some other companies we could name), had different config files (debug worked, release didn’t), and the kernel source has not been updated even after they’ve made kernel updates on recent firmware updates. With all that being said, the teams have done a great job bringing their respective projects to where they are today. And with language and cultural barriers between our developers and theirs being what they are, Oppo does appear to be trying to overcome those issues.
We know you look forward to seeing the great things that are bound to come out of this collaboration. And to the other OEMs out there, take this as a suggestion: It doesn’t hurt to embrace the developer community, and only makes your stock rise in the eyes of that community. When that happens, the word will spread, and consumers (who incidentally are highly influenced by what members of that developer community have to say about your products) will follow with their currency. It’s a cycle which can, and should, be repeated. If you’re interested, contact me and XDA.
April 29, 2013 By: Conan Troutman
It used to be the case that whenever you wanted to use ADB or FastBoot with a device, you were required to install a specific driver for each device. For anyone regularly flashing several devices or developers who test on numerous different phones and tablets, this could prove to be something of an inconvenience, especially when setting up for the first time and having to hunt around in a dingy corner of an OEM website looking for the correct driver. Thankfully, things are somewhat simpler nowadays thanks to several different solutions to this old issue.
You may remember us previously talking about the Universal Naked Driver by XDA Senior Member 1wayjonny. This is a Windows based tool (compatible with XP, Vista, 7 and 8) that allows you to make use of ADB, Fastboot, and (for ASUS devices) APX on over 250 different devices with minimal effort. Check out the link above and the forum thread for more information on this one.
Continuing on from the success of the Universal Naked Driver, Koush has taken the device/vendor ids collected within the UND thread and used them to create an alternative solution, which claims to work on all Android phones and all versions of Windows, presumably XP and above. You can find Koush’s Universal ADB Driver and the source for it from the G+ post linked to above.
Last but certainly not least is a project entitled Casual Android Driver Installer, or CADI for short. This is the brainchild of XDA Senior Member jrloper, and like the two already mentioned options, it attempts to alleviate the frustration of device-specific drivers. The difference with CADI though is that it is fully integrated into the CASUAL by XDA Elite Recognized Developer AdamOutler and takes a somewhat different approach to the problem. It uses elements of an open source USB device driver installer called libwdi by Pete Batard and essentially determines which devices are connected via USB before generating drivers on the fly and automatically taking care of the installation process. That’s a pretty good example of three open source projects coming together in a glorious trinity of non-proprietary loveliness if ever I saw one.
So if you are still plagued by the problem of individual drivers for each of your devices, it’s definitely in your best interests to look into one, or indeed all of these options. Let us know your preferred method of driver avoidance in the comments below.
April 27, 2013 By: Samantha
If you have been to the new App Development forums, you may have come across a project called ‘Playview for CardsUI’. Started by XDA Recognized Developer GadgetCheck, it’s an open source project that aims to replicate the aesthetic philosophy and design of the new Google Play store, and in particular, the card-like lists.
“How do you think we can achieve a list view like the new Play store…Can anyone help me out?” GadgetCheck, 10th April, 2013
Within days, GadgetCheck, XDA Senior Member Androguide.fr, and other XDA community members managed to achieve strides of progress in this proposal. Presented with a simple question and an initial prototype the XDA community, with a bit of coding and open-source libraries, further refined the product into what is known today as PlayView for CardsUI. Every aspect of PlayView’s development is documented in the forum thread, with points of major progress uploaded to Github for the community to check out and contribute to. The libraries are open-sourced, allowing anyone to incorporate the UI into their works.
What’s so great about this project is that it epitomizes what XDA-Developers is about: social contribution from the community towards development, helping one another out, and sharing and enjoying the end result. It’s something we all can see in CyanogenMod, FreeXperia, AOKP, and the many other teams and developers who dedicate their time and effort to get Android development to where it is in the present day.
PlayView for CardsUI is still a work in progress, so if you would like to check it or or chip in, make sure to head over to the development thread for more details.
XDA Developers, being the hub of mobile development today, is always glad to see open sourced projects released to the community. Apps, ports, tweaks, and mods are just some of the open sourced projects showcased by XDA members. This time around, it’s SidePanel by XDA Forum Member sukso96100.
Like previous sidebar applications such as Sidebar and Glovebox, SidePanel is another multitasking app that allow users to bring upon a dock of apps to select and open. However because the two former apps are closed source, there is inevitably a certain limit of contributions from the community, meaning less flexibility and customization to suite users’ unique and individual needs and wants. SidePanel being open sourced means that all members of the XDA and Android community will be able to have their own take on the SidePanel experience.
The user interface of SidePanel is presented with a pleasant Holo interface and allow users to change the aesthetic theme of the app dock, the width, height, and position of the touch detection area as well as other customization options. As for the actual dock itself, it displays the recent apps of the device and vertically scrolls up and down. sukso96100 also included a helpful tutorial guiding users through the customization and functionality of the app.
Compatible with Android versions 2.2 and up, SidePanel is still in beta and is available for free on the Play store, with its source code found at its Github. So if you’re interested, head over to the original thread for more details.
February 13, 2013 By: jerdog
We have always strongly encouraged developers from the various OEMs to take an active role in the open source community. At times we have seen involvement, but often that doesn’t happen for many different reasons. One of those reasons boils down to an OEM placing their developers in virtual walled gardens, away from “prying eyes” and the rest of the open source community.
At the risk of belaboring the point too much, Sony Mobile continues to raise the bar for the rest of the OEMs out there. They actively encourage their developers to participate in the open source community, and as a result, their developers answer the call and step forward with great tools. One such tool, by Sony Mobile Developer pal.szasz, adds incredible value to mobile app developers out there. And to top it off, it is fully open source. XAppDbg is a tool which you can include in your existing app to allow you to test out certain features and changes without having to rebuild each time. As Pal explains it, the big advantage this brings is when working on the UI for your app, you can try out different settings and immediately see the effects inside the running application.
XAppDbg consists of the server, which runs on the phone, and a client, which runs on the computer. Utilizing Java reflection to scan for fields and methods in the code, XAppDbg opens up the public fields, properties and commands to the client, allowing you to enter in specific arguments to adjust during runtime. Because XAppDbg is written in J2SE, you can use the tool with desktop Java applications as well as Android mobile applications.
Pal created a thread on XDA, as well as a more detailed write up along with instructions and code examples over on Sony’s Developer World and made his source freely available. Make sure to visit both, and show support for his endeavors.