diff --git a/BUILD b/BUILD index 049eb2ec..bd535871 100644 --- a/BUILD +++ b/BUILD @@ -1,5 +1,6 @@ -This document explains how to properly build an Android package of Orbot from source. +This document explains how to properly build an Android package of Orbot from +source. Orbot includes, in the external directory, git repo submodules of: - Tor @@ -7,45 +8,53 @@ Orbot includes, in the external directory, git repo submodules of: - LibEvent - JTorControl: The Tor Control Library for Java -The Orbot repo also includes the Privoxy source code of a recent stable release. +The Orbot repo also includes the Polipo source code of a recent stable release. Please install the following prerequisites (instructions for each follows): ant: http://ant.apache.org/ - Android Native Dev Kit or NDK (for C/C++ code): http://developer.android.com/sdk/ndk/index.html - Android Software Dev Kit or SDK (for Java code): http://developer.android.com/sdk/index.html + Android Native Dev Kit or NDK (for C/C++ code): + http://developer.android.com/sdk/ndk/index.html + Android Software Dev Kit or SDK (for Java code): + http://developer.android.com/sdk/index.html -You will need to run the 'android' command in the SDK to install the necessary Android platform supports (ICS 4.x or android-15) +You will need to run the 'android' command in the SDK to install the necessary +Android platform supports (ICS 4.x or android-15) Be sure that you have all of the git submodules up-to-date: - git submodule init - git submodule update + git submodule update --init --recursive -To begin building, from the Orbot root directory, you first need to build all external C/native dependencies: +To begin building, from the Orbot root directory, you first need to build all +external C/native dependencies: export NDK_BASE={PATH TO YOUR NDK INSTALL} make -C external -At this point, you'll have Tor and Privoxy binaries that can be run on an Android handset. -You can verify the ARM binary was properly built using the following command: +At this point, you'll have Tor and Polipo binaries that can be run on an +Android handset. You can verify the ARM binary was properly built using the +following command: - file res/raw/tor - file res/raw/privoxy + file external/bin/tor external/bin/polipo You should see something like: -src/or/tor: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped + external/bin/tor: ELF 32-bit LSB executable, ARM, version 1 (SYSV), + dynamically linked (uses shared libs), not stripped + external/bin/polipo: ELF 32-bit LSB executable, ARM, version 1 (SYSV), + dynamically linked (uses shared libs), not stripped This isn't enough though and we'll now sew up the binary into a small package that will handle basic Tor controlling features. android update project --name Orbot --target android-15 --path . -#Now you need to split and copy the tor binary into res/raw. We split it into < 1M chunks -#because some Android devices don't like resources larger than 1M. -#split --bytes=1m $DROID_ROOT/external/tor/tor/src/or/tor res/raw/tor +Now you need to split and copy the tor binary into external/bin. We split it +into < 1M chunks because some Android devices don't like resources larger than +1M. + split --bytes=1m ./external/tor/src/or/tor ./external/bin/tor Now build the Android app + ./update-ant-build ant release This will produce an unsigned Tor package in ./bin/Orbot-unsigned.apk!