Add a script that allows to build all android packages with single command
This commit is contained in:
parent
1bb0be6a8c
commit
dc428b94cf
194
tools/android_builder.sh
Executable file
194
tools/android_builder.sh
Executable file
@ -0,0 +1,194 @@
|
||||
#!/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
|
Loading…
Reference in New Issue
Block a user