You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.4 KiB
100 lines
2.4 KiB
#!/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" |
|
echo "To copy SDL source instead of symlinking: COPYSOURCE=1 androidbuild.sh ... " |
|
exit 1 |
|
fi |
|
|
|
SDLPATH="$( cd "$(dirname "$0")/.." ; pwd -P )" |
|
|
|
if [ -z "$ANDROID_HOME" ];then |
|
echo "Please set the ANDROID_HOME directory to the path of the Android SDK" |
|
exit 1 |
|
fi |
|
|
|
if [ ! -d "$ANDROID_HOME/ndk-bundle" -a -z "$ANDROID_NDK_HOME" ]; then |
|
echo "Please set the ANDROID_NDK_HOME directory to the path of the Android NDK" |
|
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/app/jni/SDL |
|
if [ -z "$COPYSOURCE" ]; then |
|
ln -s $SDLPATH/src $BUILDPATH/app/jni/SDL |
|
ln -s $SDLPATH/include $BUILDPATH/app/jni/SDL |
|
else |
|
cp -r $SDLPATH/src $BUILDPATH/app/jni/SDL |
|
cp -r $SDLPATH/include $BUILDPATH/app/jni/SDL |
|
fi |
|
|
|
cp -r $SDLPATH/Android.mk $BUILDPATH/app/jni/SDL |
|
sed -i -e "s|YourSourceHere.c|$MKSOURCES|g" $BUILDPATH/app/jni/src/Android.mk |
|
sed -i -e "s|org\.libsdl\.app|$APP|g" $BUILDPATH/app/build.gradle |
|
sed -i -e "s|org\.libsdl\.app|$APP|g" $BUILDPATH/app/src/main/AndroidManifest.xml |
|
|
|
# Copy user sources |
|
for src in "${SOURCES[@]}" |
|
do |
|
cp $src $BUILDPATH/app/jni/src |
|
done |
|
|
|
# Create an inherited Activity |
|
cd $BUILDPATH/app/src/main/java |
|
for folder in "${APPARR[@]}" |
|
do |
|
mkdir -p $folder |
|
cd $folder |
|
done |
|
|
|
ACTIVITY="${folder}Activity" |
|
sed -i -e "s|\"SDLActivity\"|\"$ACTIVITY\"|g" $BUILDPATH/app/src/main/AndroidManifest.xml |
|
|
|
# Fill in a default Activity |
|
cat >"$ACTIVITY.java" <<__EOF__ |
|
package $APP; |
|
|
|
import org.libsdl.app.SDLActivity; |
|
|
|
public class $ACTIVITY extends SDLActivity |
|
{ |
|
} |
|
__EOF__ |
|
|
|
# Update project and build |
|
echo "To build and install to a device for testing, run the following:" |
|
echo "cd $BUILDPATH" |
|
echo "./gradlew installDebug"
|
|
|