• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Root Superuser - an open source, fully featured su implementation

MikeRL

Android Enthusiast
Flashable zips are available. I found it here. It is made by Koush and is completely open source! That is not only good from a security standpoint, as a superuser script and management tool should be open source (imagine what proprietary software could do if in the wrong hands in terms of privacy), and this comes WITHOUT ADS, FOR FREE, WITH NO CATCH, AND FULLY FEATURED! If this thing works Cyanogenmod is considering replacing SuperUser with it. If I test it and others test it and we find it to be better than the other Superuser, perhaps we should integrate it with every single MTDEV CM release? After all, we should consider giving our users the best, most open experience they can get. Plus, this one has no nag screens and is free! Did I mention it has pin protection and all sorts of goodies for free?!? This may fix some of the root issues users have been experiencing. :D
 
Flashable zips are available. I found it here. It is made by Koush and is completely open source! That is not only good from a security standpoint, as a superuser script and management tool should be open source (imagine what proprietary software could do if in the wrong hands in terms of privacy), and this comes WITHOUT ADS, FOR FREE, WITH NO CATCH, AND FULLY FEATURED! If this thing works Cyanogenmod is considering replacing SuperUser with it. If I test it and others test it and we find it to be better than the other Superuser, perhaps we should integrate it with every single MTDEV CM release? After all, we should consider giving our users the best, most open experience they can get. Plus, this one has no nag screens and is free! Did I mention it has pin protection and all sorts of goodies for free?!? This may fix some of the root issues users have been experiencing. :D

I'll have to look into what we have building now, but could be good for us.

EDIT: is what we have now
 
I saw a different SU in the JB PA ROM that looked cooler than the one we use in CM7 and 9 but this like you said could be the "one" for us.
 
Yeah I really do think this is the one. I've been using it for about a day now on my Nexuses and it's faster than both SuperUser by ChainsDD and Chainfire's SuperSu. As a bonus, it's open source and nag free. I tested it on the Triumph and it was a bit faster than the competition. On an aging device like the Triumph, the need for speed is greater than ever. No bloated crap comes with this. The CM team is deciding if they should integrate it in. As so when they removed ROM Manager and MTDEV followed suite, I believe the same should apply with this tool. That means dsmryder will have to prep the repos, fork Superuser and merge it in, and create a test build running it. There will be a poll soon deciding on the favored superuser tool. Performance is key. We're thinking of doing the test in CM7 where there's a lot less that could go wrong if something does go wrong. By the way, I flashed the zip on my Triumph and it worked. No bricks. So if the vote turns out like I think it will (open source light modular tool vs bloated proprietary competition) we will follow in the footsteps of CyanogenMod and modernize Superuser on our ROMs. Yeah SuperSu is cool but it comes with nag screens and is proprietary. I used it until I saw this one yesterday. I definitely think it is "the one". The poll in the future will tell.
 
I downloaded and installed the apk from playstore. Runs flawlessly, i've been using super su pro for 6 mos, i uninstalled. Thanks for the info
 
Well it's about to be official for CM. Look here. The commit's summary on BBQLog said something about preparing for the switch to the new superuser. Hopefully team MTDEV will follow.
 
So this is looking to be a bit over my head. If I knew how the system linked the various parts of the ROM together then I would be able to figure out the errors before they came. What I have done was removed the already downloaded Superuser source from /packages/apps/ and placed the "Koush" version in /external/
Then I found an error that su was defined already. So I found the su source and removed that.
Then I found the sqlite was having problems. Since that's in both the new Superuser package I removed it from the external directory also.
I posted some of the final errors in case someone want's to look at it.
Code:
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:461: error: 'SQLITE_OK' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:467: error: 'SQLITE_TRANSIENT' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:467: error: 'sqlite3_bind_text' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:468: error: 'SQLITE_OK' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:474: error: 'sqlite3_step' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:475: error: 'SQLITE_OK' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:475: error: 'SQLITE_DONE' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:482: error: 'SQLITE_OK' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:490: error: 'SQLITE_OK' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:497: error: 'SQLITE_OK' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:503: error: 'sqlite3_finalize' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:504: error: 'sqlite3_free_table' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp: In function 'jint android::native_releaseMemory(JNIEnv*, _jobject*)':
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:510: error: 'sqlite3_release_memory' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp: At global scope:
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:548: error: 'sqlite3' has not been declared
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:560: error: 'sqlite3' has not been declared
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp: In function 'void android::throw_sqlite3_exception(JNIEnv*, int*, const char*)':
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:562: error: 'sqlite3_errcode' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:563: error: 'sqlite3_errmsg' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:567: error: 'SQLITE_OK' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp: In function 'void android::throw_sqlite3_exception_errcode(JNIEnv*, int, const char*)':
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:573: error: 'SQLITE_DONE' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp: In function 'void android::throw_sqlite3_exception(JNIEnv*, int, const char*, const char*)':
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:589: error: 'SQLITE_IOERR' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:592: error: 'SQLITE_CORRUPT' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:595: error: 'SQLITE_CONSTRAINT' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:598: error: 'SQLITE_ABORT' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:601: error: 'SQLITE_DONE' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:604: error: 'SQLITE_FULL' was not declared in this scope
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:607: error: 'SQLITE_MISUSE' was not declared in this scope
make: *** [out/target/product/triumph/obj/SHARED_LIBRARIES/libandroid_runtime_intermediates/android_database_SQLiteDatabase.o] Error 1
 
I posted some of the final errors in case someone want's to look at it.
Code:
frameworks/base/core/jni/android_database_SQLiteDatabase.cpp:461: error: 'SQLITE_OK' was not declared in this scope

I'm confused as to why you would be getting a frameworks compile error if you are updating something in packages/apps. This SQLiteDatabase.cpp is a pretty fundamental part of Android, are you sure you didn't change something somewhere else on accident? It looks like it is missing an include of sqlite3.h, but I don't see the file missing error on your dump.
 
I'm confused as to why you would be getting a frameworks compile error if you are updating something in packages/apps. This SQLiteDatabase.cpp is a pretty fundamental part of Android, are you sure you didn't change something somewhere else on accident? It looks like it is missing an include of sqlite3.h, but I don't see the file missing error on your dump.

Well like I said, I removed the /external/su directory from the build and that got me to an issue with sqlite3. So I removed that also and now I have issues with frameworks. I assume frameworks is looking for /external/sqlite3. If I knew how it looked for it I could relink it to the sqlite in the new Superuser.
 
Well like I said, I removed the /external/su directory from the build and that got me to an issue with sqlite3. So I removed that also and now I have issues with frameworks. I assume frameworks is looking for /external/sqlite3. If I knew how it looked for it I could relink it to the sqlite in the new Superuser.

Sorry, I wasn't reading carefully enough. I would recommend removing sqlite from the new superuser, and trying to figure how to link the new superuser to the external sqlite. It's probably a matter of changing an include path and link path in a superuser makefile somewhere.
 
Sorry, I wasn't reading carefully enough. I would recommend removing sqlite from the new superuser, and trying to figure how to link the new superuser to the external sqlite. It's probably a matter of changing an include path and link path in a superuser makefile somewhere.

I bet that's it.
 
Don't worry about putting a Superuser option into settings like in the CM10.1 Nightlies guys. We can start at the bare minimal, just replacing the old Superuser with the new one. Take your time. MTDEV has priorities, like the camera, repo syncing, Triumph specific bugs, and most importantly real life comes first. I also am going to spend a lot of time on our documentation over spring break. I have term papers to do as well. What joy. But I'm sick of leaving you guys hanging. And by the time I am done my coding classes, I should be a good asset. Just keep hanging in there guys! ;)
 
Back
Top Bottom