Edit

kc3-lang/SDL/build-scripts/androidbuild.sh

Branch :

  • Show log

    Commit

  • Author : Sam Lantinga
    Date : 2017-10-23 23:23:47
    Hash : edf0fae1
    Message : Updated Android build tools version, which bumped minimum deployment target to API 14 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.

  • build-scripts/androidbuild.sh
  • #!/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"