mirror of
				https://github.com/libsdl-org/SDL.git
				synced 2025-11-04 09:44:35 +00:00 
			
		
		
		
	Also added native code to the Android gradle project, which allows using gradle or Android Studio to build the entire SDL application without a separate ndk-build step.
		
			
				
	
	
		
			101 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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"
 |