diff --git a/README.android b/README.android new file mode 100644 index 00000000..f06e8611 --- /dev/null +++ b/README.android @@ -0,0 +1,75 @@ +aria2 for Android devices +========================= + +aria2 is a lightweight multi-protocol & multi-source download utility +operated in command-line. It supports HTTP/HTTPS, FTP, BitTorrent and +Metalink. + +Install +------- + +aria2 is not an ordinary Android Java application. It is a C++ native +application and operates in command-line. You don't have to 'root' +your device to use aria2. Because aria2 is a command-line program, +you need a terminal emulator. First install Android Terminal Emulator +from Android Market (or build it from source and install. See +https://github.com/jackpal/Android-Terminal-Emulator/). + +1. Copy aria2c executable to ``/mnt/sdcard`` on your device. +2. Run Android Terminal Emulator. +3. ``mkdir /data/data/jackpal.androidterm/aria2`` +4. ``cat /mnt/sdcard/aria2c > /data/data/jackpal.androidterm/aria2/aria2c`` +5. ``chmod 744 /data/data/jackpal.androidterm/aria2/aria2c`` +6. Add the following commands to the initial command of Android + Terminal Emulator:: + + export HOME=/data/data/jackpal.androidterm/aria2; cd $HOME + +7. Exit Android Terminal Emulator. +8. Run Android Terminal Emulator again. +9. See whether aria2c actually works by invoking ``./aria2c -v`` + +How to use +---------- + +See `the online manual +`_. + +Notes +----- + +aria2c executable was generated using android-ndk-r8. + +The following libraries were statically linked. + + * openssl 1.0.1c + * expat 2.1.0 + * c-ares 1.9.1 + +Since Android does not have ``/etc/resolv.conf``, c-ares (asynchronous +DNS resolver) is disabled by default. But name resolution is sometimes +a little bit slow, so I recommend to enable c-ares. You can enable it +using ``--async-dns`` and specify DNS servers using +``--async-dns-server`` option, like this:: + + --async-dns --async-dns-server=`getprop net.dns1`,`getprop net.dns2` + +Because it is tedious to type these long parameters every time you use +aria2c, the following wrapper shell script would be handy:: + + #!/system/bin/sh + /data/data/jackpal.androidterm/aria2c \ + --async-dns \ + --async-dns-server=`getprop net.dns1`,`getprop net.dns2` \ + "$@" + +Please note that you need to add executable file mode bit to this +wrapper script too. (e.g., ``chmod 744 /PATH/TO/SCRIPT``) + +Known Issues +------------ + +* Since Android does not have ``/dev/stdout``, ``-l-`` does not work. + +* Android Terminal Emulator sometimes stops updating console. It looks + like aria2c hangs, but aria2c continues to run. diff --git a/android-release b/android-release new file mode 100755 index 00000000..927b2285 --- /dev/null +++ b/android-release @@ -0,0 +1,58 @@ +#!/bin/sh -e + +# aria2 - The high speed download utility +# +# Copyright (C) 2012 Tatsuhiro Tsujikawa +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# +# In addition, as a special exception, the copyright holders give +# permission to link the code of portions of this program with the +# OpenSSL library under certain conditions as described in each +# individual source file, and distribute linked combinations +# including the two. +# You must obey the GNU General Public License in all respects +# for all of the code used other than OpenSSL. If you modify +# file(s) with this exception, you may extend this exception to your +# version of the file(s), but you are not obligated to do so. If you +# do not wish to do so, delete this exception statement from your +# version. If you delete this exception statement from all source +# files in the program, then also delete it here. + +if [ -z "$ANDROID_HOME" ]; then + echo 'No $ANDROID_HOME specified.' + exit 1 +fi +TOOLCHAIN=$ANDROID_HOME/toolchain +PATH=$TOOLCHAIN/bin:$PATH + +VERSION=$1 +ANDROID_API=$2 +if [ -z "$VERSION" ]; then + echo "No version specified" + exit 1 +fi +if [ -z "$ANDROID_API" ]; then + echo "No android API specified" + exit 1 +fi + +DIST_DIR=aria2-$VERSION-$ANDROID_API-build1 +arm-linux-androideabi-strip src/aria2c +mkdir $DIST_DIR +cp AUTHORS COPYING ChangeLog LICENSE.OpenSSL NEWS README.html README.android \ + src/aria2c $DIST_DIR +zip -9 -r $DIST_DIR.zip $DIST_DIR +rm -rf $DIST_DIR