mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-14 20:18:19 +00:00
7de52fd46f
Abort the Android CMake build immediately if any of the command line arguments is not specified, instead of assuming default values. Add more log messages for different build steps to improve progress reporting and improve the existing log messages. Improve and fix colors of log messages. Previously, some log message colors were not terminated properly, causing the output color of subsequent commands to change. Avoid some error messages when the build script is executed for the first time, i.e. when cleanup of the previous build is not necessary because the files do not exist yet. Make some related variable names more readable by removing the unnecessary underscore and `DEFAULT` prefixes.
88 lines
2.9 KiB
Bash
88 lines
2.9 KiB
Bash
#!/bin/bash
|
|
|
|
COLOR_RED="\e[1;31m"
|
|
COLOR_RESET="\e[0m"
|
|
|
|
if [ -z ${1+x} ]; then
|
|
printf "${COLOR_RED}%s${COLOR_RESET}\n" "Did not pass APK name to build script"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z ${2+x} ]; then
|
|
printf "${COLOR_RED}%s${COLOR_RESET}\n" "Did not pass package name to build script"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z ${3+x} ]; then
|
|
printf "${COLOR_RED}%s${COLOR_RESET}\n" "Did not pass build type to build script: Debug, Release"
|
|
exit 1
|
|
fi
|
|
|
|
APK_BASENAME="$1"
|
|
APK_PACKAGE_NAME="$2"
|
|
APK_BUILD_TYPE="$3"
|
|
|
|
if [[ "${APK_BUILD_TYPE}" == "Debug" ]]; then
|
|
RELEASE_TYPE_NAME=debug
|
|
elif [[ "${APK_BUILD_TYPE}" == "Release" ]]; then
|
|
RELEASE_TYPE_NAME=release
|
|
else
|
|
printf "${COLOR_RED}%s${COLOR_RESET}\n" "Did not pass build type to build script: Debug, Release"
|
|
exit 1
|
|
fi
|
|
|
|
APK_PACKAGE_FOLDER=$(echo "$APK_PACKAGE_NAME" | sed 's/\./\//g')
|
|
|
|
sed -i "s/DDNet/${APK_BASENAME}/g" settings.gradle
|
|
|
|
sed -i "s/org.ddnet.client/${APK_PACKAGE_NAME}/g" build.gradle
|
|
|
|
TW_KEY_NAME_ESCAPED=$(echo "$TW_KEY_NAME" | sed 's/\//\\\//g')
|
|
TW_KEY_PW_ESCAPED=$(echo "$TW_KEY_PW" | sed 's/\//\\\//g')
|
|
TW_KEY_ALIAS_ESCAPED=$(echo "$TW_KEY_ALIAS" | sed 's/\//\\\//g')
|
|
|
|
sed -i "s/TW_KEY_NAME/${TW_KEY_NAME_ESCAPED}/g" build.gradle
|
|
sed -i "s/TW_KEY_PW/${TW_KEY_PW_ESCAPED}/g" build.gradle
|
|
sed -i "s/TW_KEY_ALIAS/${TW_KEY_ALIAS_ESCAPED}/g" build.gradle
|
|
|
|
sed -i "s/TW_NDK_VERSION/${ANDROID_NDK_VERSION}/g" build.gradle
|
|
sed -i "s/TW_VERSION_CODE/${TW_VERSION_CODE}/g" build.gradle
|
|
sed -i "s/TW_VERSION_NAME/${TW_VERSION_NAME}/g" build.gradle
|
|
|
|
sed -i "s/DDNet/${APK_BASENAME}/g" src/main/res/values/strings.xml
|
|
|
|
sed -i "s/\"DDNet\"/\"${APK_BASENAME}\"/g" src/main/AndroidManifest.xml
|
|
sed -i "s/org.ddnet.client/${APK_PACKAGE_NAME}/g" src/main/AndroidManifest.xml
|
|
|
|
if [ "${APK_PACKAGE_FOLDER}" != "org/ddnet/client" ]; then
|
|
mv src/main/java/org/ddnet/client src/main/java/"${APK_PACKAGE_FOLDER}"
|
|
fi
|
|
|
|
sed -i "s/org.ddnet.client/${APK_PACKAGE_NAME}/g" src/main/java/"${APK_PACKAGE_FOLDER}"/NativeMain.java
|
|
sed -i "s/org.ddnet.client/${APK_PACKAGE_NAME}/g" proguard-rules.pro
|
|
|
|
# disable hid manager for now
|
|
sed -i "s/mHIDDeviceManager = HIDDeviceManager.acquire(this);/mHIDDeviceManager=null;/g" src/main/java/org/libsdl/app/SDLActivity.java
|
|
|
|
if [[ "${APK_BUILD_TYPE}" == "Debug" ]]; then
|
|
sed -i "s/android.enableR8.fullMode=true/android.enableR8.fullMode=false/g" gradle.properties
|
|
fi
|
|
|
|
function build_gradle() {
|
|
java "-Dorg.gradle.appname=Gradle" -classpath gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain --warning-mode all "$1"
|
|
}
|
|
|
|
if [[ "${APK_BUILD_TYPE}" == "Debug" ]]; then
|
|
build_gradle builddebug
|
|
build_gradle assembleDebug
|
|
else
|
|
build_gradle buildrelease
|
|
build_gradle assembleRelease
|
|
fi
|
|
cp build/outputs/apk/"$RELEASE_TYPE_NAME"/"$APK_BASENAME"-"$RELEASE_TYPE_NAME".apk "$APK_BASENAME".apk
|
|
|
|
if [[ "${APK_BUILD_TYPE}" == "Release" ]]; then
|
|
build_gradle bundleRelease
|
|
cp build/outputs/bundle/"$RELEASE_TYPE_NAME"/"$APK_BASENAME"-"$RELEASE_TYPE_NAME".aab "$APK_BASENAME".aab
|
|
fi
|