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