commit de50258abf4660b07077048e721d02a948cc9f85
Author: n8fr8 <[email protected]>
Date:   Thu May 3 19:40:21 2012 -0400

    new build instructions
---
 BUILD |  136 ++++++++++-------------------------------------------------------
 1 files changed, 21 insertions(+), 115 deletions(-)

diff --git a/BUILD b/BUILD
index 87971c3..a2d6056 100644
--- a/BUILD
+++ b/BUILD
@@ -1,109 +1,31 @@
 
-// 2012/02/13 will be adding information on how to build OBFSPROXY binary 
+This document explains how to properly build an Android package of Orbot from 
source.
 
-// 2011/04/15 this document is a bit out of date. We will be updating to use
-// the standalone cross-compiler that is offered by the Android NDK soon
+Orbot includes, in the external directory, git repo submodules of:
+       - Tor
+       - OpenSSL (statically built and patched for Android)
+       - LibEvent
+       - JTorControl: The Tor Control Library for Java
 
-This document explains how to properly build an Android package of Orbot from
-source. It covers building on Debian Lenny (5.0.3).
+The Orbot repo also includes the Privoxy source code of a recent stable 
release.
 
 Please install the following prerequisites (instructions for each follows):
        ant: http://ant.apache.org/
-       Android OS SDK: http://source.android.com/download
-       droid-wrapper: http://github.com/tmurakam/droid-wrapper
-       libevent source (1.4.12-stable from svn)
-       Tor source (most recent git master branch)
-       Privoxy source (http://sourceforge.net/projects/ijbswa/)
-
-Install and prepare the Android OS SDK ( http://source.android.com/download )
-on Debian Lenny:
-
-       sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf \
-               libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip \
-               curl libncurses5-dev zlib1g-dev valgrind libtool automake \
-               ruby subversion
-       update-java-alternatives -s java-1.5.0-sun
-
-       mkdir ~/bin
-       PATH=~/bin:$PATH
-       curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > 
~/bin/repo
-       chmod a+x ~/bin/repo
-
-       mkdir ~/mydroid
-       cd ~/mydroid
-
-       repo init -u https://android.googlesource.com/platform/manifest -b 
android-2.3.7_r1
-       repo sync
-
-       # Paste in key from http://source.android.com/download next...
-       gpg --import
-
-       cd ~/mydroid
-
-       # This takes a long while...
-       make
-
-Install droid-wrapper:
-
-       cd /tmp
-       git clone git://github.com/tmurakam/droid-wrapper.git
-       cd droid-wrapper
-       sudo make install
-
-zlib and OpenSSL are included with the Android OS SDK. You'll need to build
-libevent, Privoxy and finally Tor. We'll create an externals directory for 
this code:
-
-       mkdir -p ~/mydroid/external/{libevent,tor,privoxy}
-
-We need to set to environment variables for droid-gcc:
-       export DROID_ROOT=~/mydroid/
-       export DROID_TARGET=generic
-
-Fetch and build Privoxy:c
-       cd ~/mydroid/external/privoxy
-       wget 
http://sourceforge.net/projects/ijbswa/files/Sources/3.0.12%20%28stable%29/privoxy-3.0.12-stable-src.tar.gz/download
-       tar xzvf privoxy-3.0.12-stable-src.tar.gz
-       cd privoxy-3.0.12-stable
-       autoheader
-       autoconf
-       #need to disable setpgrp check in configure
-       export ac_cv_func_setpgrp_void=yes
-       CC=droid-gcc LD=droid-ld CPPFLAGS="-I$DROID_ROOT/external/zlib/" 
./configure --host=arm-none-linux-gnueabi
-       #don't mind the "unrecognized option '-pthread'" error message that 
you'll see when you run make
-       make
-       
-Fetch and build libevent:
-
-       cd ~/mydroid/external/libevent
-       svn co 
https://levent.svn.sourceforge.net/svnroot/levent/tags/release-1.4.13-stable/libevent/
 .
-       export LIBEVENTDIR=`cd $DROID_ROOT/external/libevent && pwd`
-       ./autogen.sh
-       # Put the contents of http://pastebin.ca/1577207 in /tmp/libevent-patch
-       # path no longer needed: patch < /tmp/libevent-patch
-       CC=droid-gcc LD=droid-ld ./configure --host=arm-none-linux-gnueabi
-       make
-
-Copy over the libevent library:
-       cp .libs/libevent.a $DROID_ROOT/out/target/product/generic/obj/lib
-
-Fetch and build Tor:
-
-       export OPENSSLDIR=`cd $DROID_ROOT/external/openssl/include/ && pwd`
-       export ZLIBDIR=`cd $DROID_ROOT/external/zlib && pwd`
-
-       cd $DROID_ROOT/external/tor
-       git clone git://git.torproject.org/git/tor.git
-       cd tor/
-       ./autogen.sh
-       CC=droid-gcc LD=droid-ld ./configure --host=arm-none-linux-gnueabi \
-       --with-libevent-dir=$LIBEVENTDIR --with-openssl-dir=$OPENSSLDIR \
-       --with-zlib-dir=$ZLIBDIR --disable-asciidoc
-       make
-
-At this point, you'll have a Tor binary that can be run on an Android handset.
+       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)
+
+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:
 
-file src/or/tor
+       file res/raw/tor
+       file res/raw/privoxy
        
 You should see something like:
 src/or/tor: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically 
linked (uses shared libs), not stripped
@@ -111,30 +33,14 @@ src/or/tor: ELF 32-bit LSB executable, ARM, version 1 
(SYSV), dynamically linked
 This isn't enough though and we'll now sew up the binary into a small package
 that will handle basic Tor controlling features.
 
-We need to get the TorControl library for Java:
-(see also https://svn.torproject.org/svn/torctl/trunk/doc/howto.txt)
+       android update project --name Orbot --target android-15 --path .
 
-       git clone git://git.torproject.org/git/jtorctl
-       cd jtorctl
-       mkdir bin
-       javac net/freehaven/tor/control/TorControlConnection.java -d bin
-       cd bin
-       jar cvf jtorctrl.jar *
-       cp jtorctrl.jar {Orbot Home}/libs
-       
-Finally, we'll make a proper Android package with ant and the Android App SDK:
-
-       export 
APP_SDK=~/Documents/projects/android/android-sdk-linux_x86-1.5_r3/tools
-       cd ../Orbot/
-       cp $DROID_ROOT/external/privoxy/privoxy-3.0.12-stable/privoxy 
assets/privoxy
-
-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 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 build the Android app
-       $APP_SDK/android update project --name Orbot --target 3 --path .
+
        ant release
 
 This will produce an unsigned Tor package in ./bin/Orbot-unsigned.apk!



_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to