Update android build script to support aab file

This commit is contained in:
Benau 2020-08-27 16:28:13 +08:00
parent 4ee72fde50
commit 4e6fbd2787
4 changed files with 74 additions and 42 deletions

View File

@ -127,18 +127,10 @@ Before compilation you have to set:
export BUILD_TYPE=release
It's also needed to set STK_STOREPASS, STK_KEYSTORE and STK_ALIAS environment
variables, so that the apk files can be signed.
and then you make standard compilation with:
./generate_assets.sh
./make.sh -j5
The compiled apk is unsigned, so you have to sign it with your key. To sign it,
you have to run:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore \
my-release-key.keystore SuperTuxKart-release-unsigned.apk alias_name
and then:
zipalign -v 4 SuperTuxKart-release-unsigned.apk SuperTuxKart-release.apk
./make.sh -j $(($(nproc) + 1))

View File

@ -28,6 +28,25 @@ android
compileSdkVersion compile_sdk_version.toInteger()
buildToolsVersion build_tools_ver
signingConfigs
{
release
{
storeFile file(keystore)
storePassword storepass
keyAlias alias
keyPassword storepass
}
}
buildTypes
{
release
{
signingConfig signingConfigs.release
}
}
sourceSets
{
main

View File

@ -218,6 +218,29 @@ if [ ! -d "$SDK_PATH" ]; then
exit
fi
# Check if we have key for signing in release build
if [ "$GRADLE_BUILD_TYPE" = "assembleRelease" ]; then
if [ -z "$STK_KEYSTORE" ]; then
echo "Error: STK_KEYSTORE variable is empty."
exit
fi
if [ ! -f "$STK_KEYSTORE" ]; then
echo "Error: Couldn't find $STK_KEYSTORE file."
exit
fi
if [ -z "$STK_STOREPASS" ]; then
echo "Error: STK_STOREPASS variable is empty"
exit
fi
if [ -z "$STK_ALIAS" ]; then
echo "Error: STK_ALIAS variable is empty."
exit
fi
fi
# Find newest build-tools version
if [ -z "$BUILD_TOOLS_VER" ]; then
BUILD_TOOLS_DIRS=`ls -1 "$SDK_PATH/build-tools" | sort -V -r`
@ -681,11 +704,17 @@ fi
export ANDROID_HOME="$SDK_PATH"
./gradlew -Pcompile_sdk_version=$COMPILE_SDK_VERSION \
-Pbuild_tools_ver="$BUILD_TOOLS_VER" \
-Pstorepass="$STK_STOREPASS" \
-Pkeystore="$STK_KEYSTORE" \
-Palias="$STK_ALIAS" \
$GRADLE_BUILD_TYPE
if [ "$GRADLE_BUILD_TYPE" = "assembleRelease" ]; then
./gradlew -Pcompile_sdk_version=$COMPILE_SDK_VERSION \
-Pbuild_tools_ver="$BUILD_TOOLS_VER" \
-Pstorepass="$STK_STOREPASS" \
-Pkeystore="$STK_KEYSTORE" \
-Palias="$STK_ALIAS" \
"bundleRelease"
fi

View File

@ -9,11 +9,11 @@
# 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"
export PROJECT_VERSION=git20200827
export PROJECT_CODE=192
export STK_STOREPASS="xxx"
export STK_KEYSTORE="/path/to/stk.keystore"
export STK_ALIAS="alias"
check_error()
@ -105,7 +105,7 @@ generate_assets()
ASSETS_PATHS="../android-output/assets-lq/data" \
./generate_assets.sh
if [ ! -f "./assets/directories.txt" ]; then
if [ ! -f "./assets/files.txt" ]; then
echo "Error: Couldn't generate assets"
return
fi
@ -113,6 +113,8 @@ generate_assets()
if [ -f "./assets/data/supertuxkart.git" ]; then
mv "./assets/data/supertuxkart.git" \
"./assets/data/supertuxkart.$PROJECT_VERSION"
sed -i "s/data\/supertuxkart.git/data\/supertuxkart.$PROJECT_VERSION/g" \
"./assets/files.txt"
fi
cd -
@ -143,7 +145,7 @@ generate_full_assets()
OUTPUT_PATH="assets-hq" \
./generate_assets.sh
if [ ! -f "./assets-hq/directories.txt" ]; then
if [ ! -f "./assets-hq/files.txt" ]; then
echo "Error: Couldn't generate full assets"
return
fi
@ -183,7 +185,7 @@ generate_lq_assets()
OUTPUT_PATH="assets-lq" \
./generate_assets.sh
if [ ! -f "./assets-lq/directories.txt" ]; then
if [ ! -f "./assets-lq/files.txt" ]; then
echo "Error: Couldn't generate lq assets"
return
fi
@ -217,38 +219,28 @@ build_package()
export COMPILE_ARCH=$ARCH1
cd ./android-$ARCH1
./make.sh -j5
./make.sh -j $(($(nproc) + 1))
cd -
if [ ! -f ./android-$ARCH1/build/outputs/apk/release/android-$ARCH1-release-unsigned.apk ]; then
if [ ! -f ./android-$ARCH1/build/outputs/apk/release/android-$ARCH1-release.apk ]; then
echo "Error: Couldn't build apk for architecture $ARCH1"
return
fi
cp ./android-$ARCH1/build/outputs/apk/release/android-$ARCH1-release-unsigned.apk \
./android-output/SuperTuxKart-$PROJECT_VERSION-$ARCH1-unaligned.apk
if [ ! -f ./android-$ARCH1/build/outputs/bundle/release/android-$ARCH1.aab ]; then
echo "Error: Couldn't build app bundle for architecture $ARCH1"
return
fi
cp ./android-$ARCH1/build/outputs/apk/release/android-$ARCH1-release.apk \
./android-output/SuperTuxKart-$PROJECT_VERSION-$ARCH1.apk
cp ./android-$ARCH1/build/outputs/bundle/release/android-$ARCH1.aab \
./android-output/SuperTuxKart-$PROJECT_VERSION-$ARCH1.aab
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 -
}