Since the dawn of Orbot, way back in 2009, the onion routing robot app has been built using an unwieldy combination of tools, based on an extremely out of date method for cross-compiling C code for Android/ARM. In the 1.x era of Android, there was no Native Development Kit as their is now, but thanks to some craft individuals, scripts were developed to utilize the compilers found within the core Android OS build kit. However, this mean you had to build the entire Android OS to be able to build Orbot, and you were potentially relying upon highly unstable internal libraries.
This week, I finally bit the bullet, and decided to rewrite the build process utilizing the more proper NDK tools, as well as utilize Git submodules as a means for managing retrieval and version control of dependencies. With the help of _hc, sebastian, rransom, vapourEyes, asn and others, I was able to work through the various issues of porting over to the more limited NDK environment, and come out with a properly formatted Makefile for building all native code that Orbot relies upon.
This means that to fully build Orbot (including tor, privoxy, and obfsproxy binaries, and the jtorctrl java library) you simply need to ensure you have the Android SDK and NDK setup, and then:
1) git clone git://git.torproject.org/orbot.git 2) cd orbot 3) make -C external 4) android update project --name Orbot --target android-15 --path . 5) ant debug
That's it! (in theory).
At this point, I would love some clean eyes to look at this, try it out, ask questions and who knows, perhaps submit a patch or two.
Human readme on new build process and prereqs: https://gitweb.torproject.org/orbot.git/blob/HEAD:/BUILD
Makefile for Orbot and dependencies (openssl, libevent, privoxy, obfsproxy) https://gitweb.torproject.org/orbot.git/blob/HEAD:/external/Makefile
Successfully executed build on our build server: https://build.safermobile.org/job/Gibberbot/49/console
happy friday, n8fr8