-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Using the Xposed Framework API
Every Xposed modules needs to reference the API. This page describes how this can be done correctly. It should be seen in addition to the Development tutorial.
The Xposed Framework API is published on Bintray/jCenter: https://bintray.com/rovo89/de.robv.android.xposed/api
That makes it easy to reference it by simply adding a Gradle dependency in your app/build.gradle
:
repositories {
jcenter();
}
dependencies {
provided 'de.robv.android.xposed:api:82'
}
It is very important that you use provided
instead of compile
! The latter would include the API classes in your APK, which can cause issues especially on Android 4.x. Using provided
just makes the API classes usable from your module, but there will only be references to them in the APK. The actual implementation will be provided when the user installs the Xposed Framework.
In most cases, the repositories
block already exists, and there are usually some dependencies already. In that case, you just need to add the provided
line to the existing dependencies
block.
There is also documentation available for the API (see below). Unfortunately, I didn't find any good way to enable automatic download of the API sources, except using both of these lines:
provided 'de.robv.android.xposed:api:82'
provided 'de.robv.android.xposed:api:82:sources'
The way Gradle caches the files, Android Studio will set up the second jar as source for the first one automatically. Better recommendations are welcome!
Please make sure to disable Instant Run (File -> Settings -> Build, Execution, Deployment -> Instant Run
), otherwise your classes aren't included directly in the APK, but loaded via a stub application which Xposed can't handle.
In Eclipse, you have to download the jar manually from here: https://jcenter.bintray.com/de/robv/android/xposed/api/
I recommend putting the files into a subdirectory called lib
. Don't put them into the libs
subdirectory! Jar files in libs
would automatically make Eclipse compile the API classes into your APK, but they must only be referenced (see above).
Now right-click the api-XX.jar
file and select Build Path -> Add to Build Path
. That's it! Now you can also add a source assignment (from the api-XX-sources.jar
file) in order to see the documentation directly in Eclipse.
Generally, the API version equals the Xposed version that it was built on. However, only some framework changes actually result in API changes, as you can see in the change log. I only publish a new API version when there were API changes, and I try to keep them compatible with existing modules as good as possible. So when you build a module with API version 82, it will most likely also work with Xposed version 90.
I always recommend that end-users use the latest Xposed version, so there's nothing wrong with using the highest API version that's available. You should usually set the xposedminversion
in your AndroidManifest.xml
to the API version that you use. If you depend on a framework change that didn't cause an API change (e.g. because a certain bug has been fixed), feel free to set you xposedminversion
to the least Xposed version that your module requires.
If you want to support ROMs before Lollipop, you can only use API version 53, as the latest Xposed version for Android 4.x was 54. Note that the sources jar provided for this version doesn't match the actual implementation, it only makes the documentation available.
On http://api.xposed.info, you can find the Javadoc for the Xposed Framework API.
If you want to make sure that zip releases or API jars were indeed created by me (rovo89), verify the .asc files with GnuPG.
My master key has the fingerprint 0DC8 2B3E B1C4 6D48 33B4 C434 E82F 0871 7235 F333
(short notation: 7235F333
). Releases are signed with the subkey 852109AA
.