Why another Superuser?

  • Superuser should be open source. It's the gateway to root on your device. It must be open for independent security analysis. Obscurity (closed source) is not security.
  • Superuser should be NDK buildable. No internal Android references.
  • Superuser should also be AOSP buildable for those that want to embed it in their ROM.
  • Superuser should also be AOSP embeddable, meaning a ROM can easily embed it into their Settings app.
  • Maintenance and updates on both the market and source repositories should be timely.
  • I want to be able to point users of my app to a Superuser solution that I wrote, that I know works, and that I can fix if something is wrong. Yes, this is selfish: Carbon does not work with some versions of Chainsdd's Superuser. SuperSU works great, but I am not comfortable pointing a user to a closed source su implementation.
  • Handle multiuser (4.2+) properly
  • Handle concurrent su requests properly

Checking out the source

You'll need the "Widgets" dependency.

  • $ mkdir /path/to/src
  • $ cd /path/to/src
  • $ git clone git://github.com/koush/Superuser
  • $ git clone git://github.com/koush/Widgets

These repositories do not keep the actual projects in the top level directory. This is because they contain tests, libs, and samples.

Eclipse

In Eclipse, import Widgets/Widgets and Superuser/Superuser. It should Just Work (TM).

Ant

Same old, same old.

  • $ mkdir /path/to/src
  • $ cd /path/to/src
  • $ cd Superuser/Superuser
  • $ ant release

Outputs:

  • bin/update.zip - Recovery installable zip
  • bin/Superuser.apk - Superuser Android app
  • libs/armeabi/su - ARM su binary
  • libs/x86/su - x86 su binary

Building the su binary

Make sure you have the android-ndk downloaded with the tool "ndk-build" in your path.

  • $ cd /path/to/src/
  • $ cd Superuser/Superuser
  • $ ndk-build

The su binary will built into Superuser/Superuser/libs/armeabi/su.

Building with AOSP, CyanogenMod, etc

TODO!