gabomdq@7793: #!/bin/bash gabomdq@7793: gabomdq@7793: SOURCES=() gabomdq@7793: MKSOURCES="" gabomdq@7793: CURDIR=`pwd -P` gabomdq@7793: gabomdq@7793: # Fetch sources gabomdq@7793: if [[ $# -ge 2 ]]; then gabomdq@7793: for src in ${@:2} gabomdq@7793: do gabomdq@7793: SOURCES+=($src) gabomdq@7793: MKSOURCES="$MKSOURCES $(basename $src)" gabomdq@7793: done gabomdq@7793: else gabomdq@7793: if [ -n "$1" ]; then gabomdq@7793: while read src gabomdq@7793: do gabomdq@7793: SOURCES+=($src) gabomdq@7793: MKSOURCES="$MKSOURCES $(basename $src)" gabomdq@7793: done gabomdq@7793: fi gabomdq@7793: fi gabomdq@7793: gabomdq@7793: if [ -z "$1" ] || [ -z "$SOURCES" ]; then gabomdq@7793: echo "Usage: androidbuild.sh com.yourcompany.yourapp < sources.list" gabomdq@7793: echo "Usage: androidbuild.sh com.yourcompany.yourapp source1.c source2.c ...sourceN.c" gabomdq@7907: echo "To copy SDL source instead of symlinking: COPYSOURCE=1 androidbuild.sh ... " gabomdq@7974: echo "You can pass additional arguments to ndk-build with the NDKARGS variable: NDKARGS=\"-s\" androidbuild.sh ..." gabomdq@7793: exit 1 gabomdq@7793: fi gabomdq@7793: gabomdq@7793: gabomdq@7793: gabomdq@7793: SDLPATH="$( cd "$(dirname "$0")/.." ; pwd -P )" gabomdq@7793: gabomdq@7793: NDKBUILD=`which ndk-build` gabomdq@7793: if [ -z "$NDKBUILD" ];then gabomdq@7793: echo "Could not find the ndk-build utility, install Android's NDK and add it to the path" gabomdq@7793: exit 1 gabomdq@7793: fi gabomdq@7793: gabomdq@7793: ANDROID=`which android` gabomdq@7793: if [ -z "$ANDROID" ];then gabomdq@7793: echo "Could not find the android utility, install Android's SDK and add it to the path" gabomdq@7793: exit 1 gabomdq@7793: fi gabomdq@7793: gabomdq@7793: ANT=`which ant` gabomdq@7793: gabomdq@7793: if [ -z "$ANT" ];then gabomdq@7793: echo "Could not find the ant utility, install Android's SDK and add it to the path" gabomdq@7793: exit 1 gabomdq@7793: fi gabomdq@7793: gabomdq@7974: NCPUS="1" gabomdq@7974: case "$OSTYPE" in gabomdq@7974: darwin*) gabomdq@7974: NCPU=`sysctl -n hw.ncpu` gabomdq@7974: ;; gabomdq@7974: linux*) gabomdq@7974: if [ -n `which nproc` ]; then gabomdq@7974: NCPUS=`nproc` gabomdq@7974: fi gabomdq@7974: ;; gabomdq@7974: *);; gabomdq@7974: esac gabomdq@7974: gabomdq@7793: APP="$1" gabomdq@7793: APPARR=(${APP//./ }) gabomdq@7793: BUILDPATH="$SDLPATH/build/$APP" gabomdq@7793: gabomdq@7793: # Start Building gabomdq@7793: gabomdq@7793: rm -rf $BUILDPATH gabomdq@7793: mkdir -p $BUILDPATH gabomdq@7793: gabomdq@7793: cp -r $SDLPATH/android-project/* $BUILDPATH gabomdq@7793: gabomdq@7793: # Copy SDL sources gabomdq@7793: mkdir -p $BUILDPATH/jni/SDL gabomdq@7907: if [ -z "$COPYSOURCE" ]; then gabomdq@7907: ln -s $SDLPATH/src $BUILDPATH/jni/SDL gabomdq@7907: ln -s $SDLPATH/include $BUILDPATH/jni/SDL gabomdq@7907: else gabomdq@7907: cp -r $SDLPATH/src $BUILDPATH/jni/SDL gabomdq@7907: cp -r $SDLPATH/include $BUILDPATH/jni/SDL gabomdq@7907: fi gabomdq@7907: gabomdq@7907: cp -r $SDLPATH/Android.mk $BUILDPATH/jni/SDL gabomdq@7793: sed -i "s|YourSourceHere.c|$MKSOURCES|g" $BUILDPATH/jni/src/Android.mk gabomdq@7793: sed -i "s|org\.libsdl\.app|$APP|g" $BUILDPATH/AndroidManifest.xml gabomdq@7793: gabomdq@7793: # Copy user sources gabomdq@7793: for src in "${SOURCES[@]}" gabomdq@7793: do gabomdq@7793: cp $src $BUILDPATH/jni/src gabomdq@7793: done gabomdq@7793: gabomdq@7793: # Create an inherited Activity gabomdq@7793: cd $BUILDPATH/src gabomdq@7793: for folder in "${APPARR[@]}" gabomdq@7793: do gabomdq@7793: mkdir -p $folder gabomdq@7793: cd $folder gabomdq@7793: done gabomdq@7793: gabomdq@7793: ACTIVITY="${folder}Activity" gabomdq@7793: sed -i "s|SDLActivity|$ACTIVITY|g" $BUILDPATH/AndroidManifest.xml gabomdq@7793: sed -i "s|SDLActivity|$APP|g" $BUILDPATH/build.xml gabomdq@7793: gabomdq@7793: # Fill in a default Activity gabomdq@7793: echo "package $APP;" > "$ACTIVITY.java" gabomdq@7793: echo "import org.libsdl.app.SDLActivity;" >> "$ACTIVITY.java" gabomdq@7793: echo "public class $ACTIVITY extends SDLActivity {}" >> "$ACTIVITY.java" gabomdq@7793: gabomdq@7793: # Update project and build gabomdq@7793: cd $BUILDPATH gabomdq@7793: android update project --path $BUILDPATH gabomdq@7974: $NDKBUILD -j $NCPUS $NDKARGS gabomdq@7793: $ANT debug gabomdq@7793: gabomdq@7793: cd $CURDIR gabomdq@7793: gabomdq@7793: APK="$BUILDPATH/bin/$APP-debug.apk" gabomdq@7793: gabomdq@7793: if [ -f "$APK" ]; then gabomdq@7793: echo "Your APK is ready at $APK" gabomdq@7793: echo "To install to your device: " gabomdq@7793: echo "cd $BUILDPATH" gabomdq@7793: echo "ant debug install" gabomdq@7793: exit 0 gabomdq@7793: fi gabomdq@7793: gabomdq@7793: echo "There was an error building the APK" gabomdq@7793: exit 1