195 lines
4.3 KiB
Bash
195 lines
4.3 KiB
Bash
|
#!/bin/sh
|
||
|
#
|
||
|
# (C) 2018 Dawid Gan, under the GPLv3
|
||
|
#
|
||
|
# A script that builds Android APKs for all architectures
|
||
|
#
|
||
|
# The script assumes that you know what you are doing. It allows to generate all
|
||
|
# packages for Google Play Store with single command. If you just want to build
|
||
|
# STK for your own use, then use android/make.sh script instead.
|
||
|
|
||
|
export BUILD_TYPE=Beta
|
||
|
export PROJECT_VERSION=git20181001
|
||
|
export PROJECT_CODE=48
|
||
|
export STOREPASS="xxx"
|
||
|
export KEYSTORE="/path/to/stk.keystore"
|
||
|
export ALIAS="alias"
|
||
|
|
||
|
|
||
|
check_error()
|
||
|
{
|
||
|
if [ $? -gt 0 ]; then
|
||
|
echo "Error ocurred."
|
||
|
exit
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
clean()
|
||
|
{
|
||
|
echo "Clean everything"
|
||
|
|
||
|
rm -rf ./android-armv7
|
||
|
rm -rf ./android-aarch64
|
||
|
rm -rf ./android-x86
|
||
|
rm -rf ./android-x86_64
|
||
|
rm -rf ./android/assets
|
||
|
rm -rf ./android-output
|
||
|
|
||
|
cd android
|
||
|
./make.sh clean
|
||
|
cd -
|
||
|
}
|
||
|
|
||
|
init_directories()
|
||
|
{
|
||
|
echo "Init directories"
|
||
|
|
||
|
if [ ! -d "./android-armv7" ]; then
|
||
|
echo "Creating android-armv7 directory"
|
||
|
|
||
|
mkdir android-armv7
|
||
|
cd android-armv7
|
||
|
|
||
|
ln -s ../android/Android.mk
|
||
|
ln -s ../android/AndroidManifest.xml
|
||
|
ln -s ../android/banner.png
|
||
|
ln -s ../android/build.gradle
|
||
|
ln -s ../android/icon.png
|
||
|
ln -s ../android/icon-dbg.png
|
||
|
ln -s ../android/make.sh
|
||
|
ln -s ../android/android-ndk
|
||
|
ln -s ../android/android-sdk
|
||
|
ln -s ../android/assets
|
||
|
|
||
|
cd -
|
||
|
fi
|
||
|
|
||
|
if [ ! -d "./android-aarch64" ]; then
|
||
|
echo "Creating android-aarch64 directory"
|
||
|
cp -a ./android-armv7 ./android-aarch64
|
||
|
fi
|
||
|
|
||
|
if [ ! -d "./android-x86" ]; then
|
||
|
echo "Creating android-x86 directory"
|
||
|
cp -a ./android-armv7 ./android-x86
|
||
|
fi
|
||
|
|
||
|
if [ ! -d "./android-x86_64" ]; then
|
||
|
echo "Creating android-x86_64 directory"
|
||
|
cp -a ./android-armv7 ./android-x86_64
|
||
|
fi
|
||
|
|
||
|
if [ ! -d "./android-output" ]; then
|
||
|
echo "Creating android-output directory"
|
||
|
mkdir ./android-output
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
generate_assets()
|
||
|
{
|
||
|
echo "Generate assets"
|
||
|
|
||
|
if [ -d "./android/assets" ]; then
|
||
|
echo "Assets already found in ./android/assets"
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
cd ./android
|
||
|
./generate_assets.sh
|
||
|
|
||
|
if [ ! -f "./assets/directories.txt" ]; then
|
||
|
echo "Error: Couldn't generate assets"
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
if [ -f "./assets/data/supertuxkart.git" ]; then
|
||
|
mv "./assets/data/supertuxkart.git" \
|
||
|
"./assets/data/supertuxkart.$PROJECT_VERSION"
|
||
|
fi
|
||
|
|
||
|
cd -
|
||
|
}
|
||
|
|
||
|
build_package()
|
||
|
{
|
||
|
export ARCH1=$1
|
||
|
export ARCH2=$2
|
||
|
|
||
|
echo "Build package for $ARCH1"
|
||
|
|
||
|
if [ -f "./android-output/SuperTuxKart-$PROJECT_VERSION-$ARCH1.apk" ]; then
|
||
|
echo "Package for architecture $ARCH1 is already built"
|
||
|
#return
|
||
|
fi
|
||
|
|
||
|
export COMPILE_ARCH=$ARCH1
|
||
|
|
||
|
cd ./android-$ARCH1
|
||
|
./make.sh -j5
|
||
|
cd -
|
||
|
|
||
|
if [ ! -f ./android-$ARCH1/build/outputs/apk/android-$ARCH1-release-unsigned.apk ]; then
|
||
|
echo "Error: Couldn't build apk for architecture $ARCH1"
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
cp ./android-$ARCH1/build/outputs/apk/android-$ARCH1-release-unsigned.apk \
|
||
|
./android-output/SuperTuxKart-$PROJECT_VERSION-$ARCH1-unaligned.apk
|
||
|
|
||
|
cp ./android-$ARCH1/obj/local/$ARCH2/libmain.so \
|
||
|
./android-output/SuperTuxKart-$PROJECT_VERSION-$ARCH1-libmain.so
|
||
|
|
||
|
cd ./android-output
|
||
|
|
||
|
jarsigner -sigalg SHA1withRSA -digestalg SHA1 \
|
||
|
-keystore "$KEYSTORE" \
|
||
|
-storepass "$STOREPASS" \
|
||
|
SuperTuxKart-$PROJECT_VERSION-$ARCH1-unaligned.apk \
|
||
|
"$ALIAS"
|
||
|
|
||
|
check_error
|
||
|
|
||
|
zipalign -f 4 SuperTuxKart-$PROJECT_VERSION-$ARCH1-unaligned.apk \
|
||
|
SuperTuxKart-$PROJECT_VERSION-$ARCH1.apk
|
||
|
|
||
|
check_error
|
||
|
|
||
|
rm SuperTuxKart-$PROJECT_VERSION-$ARCH1-unaligned.apk
|
||
|
|
||
|
cd -
|
||
|
}
|
||
|
|
||
|
|
||
|
# Handle clean command
|
||
|
if [ ! -z "$1" ] && [ "$1" = "clean" ]; then
|
||
|
clean
|
||
|
exit
|
||
|
fi
|
||
|
|
||
|
#Build packages
|
||
|
init_directories
|
||
|
|
||
|
generate_assets
|
||
|
|
||
|
if [ -z "$1" ] || [ "$1" = "armv7" ]; then
|
||
|
build_package armv7 armeabi-v7a
|
||
|
fi
|
||
|
|
||
|
PROJECT_CODE=$(($PROJECT_CODE + 1))
|
||
|
|
||
|
if [ -z "$1" ] || [ "$1" = "aarch64" ]; then
|
||
|
build_package aarch64 arm64-v8a
|
||
|
fi
|
||
|
|
||
|
PROJECT_CODE=$(($PROJECT_CODE + 1))
|
||
|
|
||
|
if [ -z "$1" ] || [ "$1" = "x86" ]; then
|
||
|
build_package x86 x86
|
||
|
fi
|
||
|
|
||
|
PROJECT_CODE=$(($PROJECT_CODE + 1))
|
||
|
|
||
|
if [ -z "$1" ] || [ "$1" = "x86_64" ]; then
|
||
|
build_package x86_64 x86_64
|
||
|
fi
|