function log_major() { log "$GREEN""==>""$1"; } function log_minor() { log "$GREEN""--> ""$1"; } function log_error() { log "$RED""!!!""Error: $1"; }
function fail() {
log_error "$1"
exit 1
}
# Re-implementation of realpath function (hello macOS) function realpath() {
OURPWD=$PWD
cd "$(dirname "$1")"
LINK=$(readlink "$(basename "$1")") while [ "$LINK" ]; do
cd "$(dirname "$LINK")"
LINK=$(readlink "$(basename "$1")") done
REALPATH="$PWD/$(basename "$1")"
cd "$OURPWD" echo"$REALPATH"
}
# If no arguments are passed, print usage if [ "$#" -lt 1 ]; then print_usage; exit 1; fi
# Parse arguments
license=""
variants=""
build=0
no_cache=""
keystore=""
export_image=1
releasedir="$DIR/../release" while [[ "$#" -gt 0 ]]; do
case $1 in
-v) variants="$2"; shift ;;
-n) echo"Note: The -n parameter is deprecated and not needed anymore"; shift ;;
-b|--build) build=1 ;;
--no-cache) no_cache="--no-cache" ;;
-k|--keystore) keystore="$2"; shift ;;
-o|--outdir) releasedir="$2"; shift ;;
--i-accept-the-android-sdk-license) license="accepted" ;;
--no-image-export) export_image=0 ;;
-h|--help) print_usage; exit 0 ;;
*) echo"Unknown parameter passed: $1"; print_usage; exit 1 ;;
esac
shift done
releasedir=$(realpath "$releasedir")
# Process arguments
IFS=', ' read -r -a variant_array <<< "$variants" for variant in "${variant_array[@]}"; do
case $variant in
googleplay_private | googleplay_work | googleplay_onprem | hms_private | hms_work | threemashop_private | libre_private) # Valid
;;
*)
fail "Invalid build variant: $variant"
;;
esac done if [ "$license" != "accepted" ]; then
fail 'Please accept the license with "--i-accept-the-android-sdk-license"' fi
# Determine build version and full name in the form of: "1.1[-beta1]-1000"
APP_BUILD_GRADLE_FILE="$DIR/../app/build.gradle.kts"
APP_VERSION_CODE=$(grep "^\s*val defaultVersionCode = \d*""$APP_BUILD_GRADLE_FILE" | sed 's/[^0-9]*//g')
APP_VERSION_NAME_MAIN=$(grep '^val appVersion = "'"$APP_BUILD_GRADLE_FILE" | sed 's/^val appVersion = "\([^"]*\)".*/\1/')
APP_VERSION_NAME_SUFFIX=$(grep '^val betaSuffix = "'"$APP_BUILD_GRADLE_FILE" | sed 's/^val betaSuffix = "\([^"]*\)".*/\1/')
FULL_APP_VERSION_NAME="${APP_VERSION_NAME_MAIN}${APP_VERSION_NAME_SUFFIX}-${APP_VERSION_CODE}"
# Validate target directory
mkdir -p "$releasedir"
name=${FULL_APP_VERSION_NAME//[^0-9\.a-zA-Z\-_]/} if [[ "$name" == "" || "$name" == .* ]]; then
fail "Could not process app version name ($FULL_APP_VERSION_NAME)" fi
targetdir="$releasedir/$name"
log_major "Creating target directory $targetdir" if [[ -d "$targetdir" ]]; then
fail "Output directory $targetdir already exists. Please remove it first." fi
mkdir "$targetdir"
# Copy files
log_major "Copying generated files for variant $variant"
mkdir -p "$targetdir/$variant/"{logs,mapping}/ for f in "$DIR"/../app/build/outputs/apk/"$variant_dir"/release/*; do
log_minor "$(basename "$f")" cp -r "$f""$targetdir/$variant/" done for f in "$DIR"/../app/build/outputs/logs/*"$variant_dir"*; do
log_minor "$(basename "$f")" cp"$f""$targetdir/$variant/logs/" done for f in "$DIR"/../app/build/outputs/mapping/"$variant_dir"Release/*; do
log_minor "$(basename "$f")" cp"$f""$targetdir/$variant/mapping/" done for f in "$DIR"/../app/build/outputs/native-debug-symbols/"$variant_dir"Release/native-debug-symbols.zip; do
log_minor "$(basename "$f")" cp"$f""$targetdir/$variant/mapping/" done for f in "$DIR"/../app/build/outputs/sdk-dependencies/"$variant_dir"Release/sdkDependencies.txt; do
log_minor "$(basename "$f")" cp"$f""$targetdir/$variant/" done done
# Export image if [ $export_image -eq 1 ]; then
log_major "Exporting docker image"
docker image save -o "$targetdir/docker-image.tar""$DOCKERIMAGE:$APP_VERSION_CODE"
log_minor "Compressing docker image"
gzip "${targetdir}/docker-image.tar"
chmod 644 "${targetdir}/docker-image.tar.gz" fi
log_major "Done! You can find the resulting files in the '$releasedir' directory."
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.15 Sekunden
(vorverarbeitet am 2026-04-27)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.