blob: 73842e05384e13d52cdfb7c87e9f902d0c6c3558 [file] [edit]
#!/bin/bash -e
NDK=0
SDK=0
JDK=0
REBUILD=0
CLEAN=0
#DEBUG="NDK_DEBUG=0"
DEBUG="NDK_DEBUG=0 APP_OPTIM=release"
#default should be assembleRelease but not working with gradle 2, to fix
GRADLE_FLAG="assembleDebug"
VERB=""
#parse options
for i in $* ; do
#! Check for force rebuild
if [ "$i" = "-force_rebuild" ] ; then
echo -e "\033[31m Usage: $0 Force Rebuild : Activated \033[0m"
REBUILD=1
fi
if [ "$i" = "-clean" ]; then
CLEAN=1
fi
if [ "$i" = "-debug" ]; then
DEBUG="NDK_DEBUG=1"
GRADLE_FLAG="assembleDebug"
fi
if [ "$i" = "-v" ]; then
VERB="V=1"
fi
#! Check for the NDK path
if [ "${i%=*}" = "-ndk" ] ; then
echo -e "\033[31m Usage: $0 Path to Android NDK : Ok \033[0m"
NDK=1
export PATH="$(echo $i | cut -d"=" -f2):$PATH"
fi
#! Check for the SDK path
if [ "${i%=*}" = "-sdk" ] ; then
echo -e "\033[31m Usage: $0 Path to Android SDK : Ok \033[0m"
SDK=1
export PATH="$(echo $i | cut -d"=" -f2)/tools:$PATH"
export ANDROID_HOME="$(echo $i | cut -d"=" -f2)/"
fi
#! Check for the JDK path
if [ "${i%=*}" = "-jdk" ] ; then
echo -e "\033[31m Usage: $0 Path to JDK : Ok \033[0m"
JDK=1
export JAVA_HOME="$(echo $i | cut -d"=" -f2)"
fi
if [ "$i" = "-h" ]; then
echo "Usage: "
echo "-ndk=PATH: path to android NDK"
echo "-sdk=PATH: path to android SDK (for command-line build of APK)"
echo "-jdk=PATH: path to JDK (for command-line build of APK)"
echo "-force_rebuild: forces clean before build"
echo "-clean: remove objs and libs"
echo "-debug: build with debug symbols "
echo "-h: print this screen"
echo "-v: verbose build"
echo ""
echo -e "\n\033[32m If you have problem using this script, check https://wiki.gpac.io/Build/build/GPAC-Build-Guide-for-Android or gpac/build/android/README \033[0m\n"
exit 0
fi
done
#args
if [ $NDK -eq 0 ]
then
echo "\nUsage: $0 ndk=PATH_TO_ANDROID_NDK [ADDITIONAL_NDK-BUILD arguments] : You must give as first argument the directory path of the NDK, add -ndk=PATH_TO_NDK"
exit 1
fi
if [ $SDK -eq 0 ]
then
echo -e "\n\033[34m You have not give the directory path of SDK, build of GPAC.apk not possible. Build it with Android Studio or add -sdk=PATH_TO_SDK\033[0m"
fi
if [ $JDK -eq 0 ]
then
echo -e "\n\033[34m Usage: $0 PATH_TO_JDK : You have not give the directory path of JDK, build of GPAC.apk not possible. Build it with with Android Studio or add -jdk=PATH_TO_JDK \033[0m"
fi
if [ -z $JAVA_HOME ]
then
echo "The JAVA_HOME environment variable must be set if you build without Android studio"
echo "Please refer to https://github.com/gpac/gpac/commit/705e199c8eadf35774520206d7f7cf1a043c0539"
fi
if [ -z $ANDROID_HOME ]
then
echo "The ANDROID_HOME environment variable must be set if you build without Android studio"
echo "Please refer to https://github.com/gpac/gpac/commit/705e199c8eadf35774520206d7f7cf1a043c0539"
fi
echo -e "\n $PATH"
# Be sure to resolve if script not called from its directory
export BUILDPATH=$(dirname "$0")
cd $BUILDPATH
export BUILDPATH=$(pwd)
echo "Current Dir = $BUILDPATH"
echo "Building libgpac"
cd ../../../
BASEPATH=$(pwd)
#check revision.h is here
./check_revision.sh
version="`grep '#define GPAC_GIT_REVISION' \"./include/gpac/revision.h\" | cut -d '"' -f 2`"
#rm -rf $BUILDPATH/../obj/*
cd $BUILDPATH
if [ $CLEAN -eq 1 ]
then
echo -n "Cleaning all from $BUILDPATH"
ndk-build clean
cd $BASEPATH/applications/gpac_android/
./gradlew clean
cd -
exit 0
fi
echo -n "Buiding all libs from $BUILDPATH"
if [ $REBUILD -eq 1 ]
then
ndk-build clean
cd $BASEPATH/applications/gpac_android/
./gradlew clean
cd -
ndk-build -B $VERB $DEBUG
else
ndk-build $VERB $DEBUG
fi
echo "[OK] build successful."
cd ../libs/
LIBS_DIR="$BASEPATH/applications/gpac_android/src/main/libs"
mkdir -p $LIBS_DIR
echo "GPAC.apk: Copying libs to libs dir $LIBS_DIR ..."
for i in $(find . -name '*.so')
do
echo -n " Copy $i"
TMP_DIR=$(dirname $i)
echo $TMP_DIR
mkdir -p "$LIBS_DIR/$TMP_DIR"
cp "$i" "$LIBS_DIR/$i"
done
echo
echo "Done."
LIBS_DIR="$BASEPATH/applications/gpac_android/src/main/libs"
mkdir -p $LIBS_DIR
cd "$BASEPATH/extra_lib/lib/android"
echo "GPAC.apk: Copying all extra libs to $LIBS_DIR ..."
for i in $(find . \( -name '*.so' \))
do
echo " Copy $i"
TMP_DIR=$(dirname $i)
mkdir -p "$LIBS_DIR/$TMP_DIR"
cp "$i" "$LIBS_DIR/$i"
done
echo "Done."
ASSETS_DIR="$BASEPATH/applications/gpac_android/src/main/assets/share"
mkdir -p $ASSETS_DIR
echo "GPAC.apk: Copying shared resources (GUI, scripts, shaders...) to $ASSETS_DIR ..."
cp -R "$BASEPATH/share/gui" $ASSETS_DIR
cp -R "$BASEPATH/share/shaders" $ASSETS_DIR
cp -R "$BASEPATH/share/scripts" $ASSETS_DIR
cp -R "$BASEPATH/share/res" $ASSETS_DIR
echo "Done."
if [ \( $SDK -eq 1 \) -a \( $JDK -eq 1 \) ]
then
TAG="$(grep "\#define GPAC_VERSION " $BASEPATH/include/gpac/version.h | cut -d "\"" -f 2 )"
echo "Building GPAC.apk"
cd $BASEPATH/applications/gpac_android/
./gradlew $GRADLE_FLAG
cd -
if [ -f $BASEPATH/gpac-$TAG-rev$version.apk ]
then
echo -e "\nOld GPAC.apk found. Removing it ..."
rm $BASEPATH/gpac-$TAG-rev$version.apk
fi
cp $BASEPATH/applications/gpac_android/build/outputs/apk/gpac_android-debug.apk $BASEPATH/gpac-$TAG-rev$version.apk
echo "[OK] success Building GPAC apk"
else
echo "Run project with Android studio to generate APK"
fi