#!/bin/bash # Сборка и прошивка игры «Выключить свет» (Android). # Использование: # ./build.sh # clean + сборка + установка на все подключённые устройства # ./build.sh noinstall # только сборка, без прошивки # ./build.sh # clean + сборка + прошивка на конкретный девайс set -eo pipefail cd "$(dirname "$0")" export ANDROID_HOME="${ANDROID_HOME:-/home/user/android}" APK=app/build/outputs/apk/debug/app-debug.apk echo "Building..." TMP=$(mktemp) ./gradlew clean > /dev/null 2>&1 if ! ./gradlew assembleDebug > "$TMP" 2>&1; then cat "$TMP" rm -f "$TMP" exit 1 fi rm -f "$TMP" echo "Build OK" [ "$1" = "noinstall" ] && exit 0 if [ -n "$1" ]; then DEVICES=("$1") else mapfile -t DEVICES < <(adb devices | awk 'NR>1 && $2=="device"{print $1}') fi if [ ${#DEVICES[@]} -eq 0 ]; then echo "No devices connected" >&2 exit 1 fi echo "Devices (${#DEVICES[@]}):" i=1 for d in "${DEVICES[@]}"; do name=$(adb -s "$d" shell getprop ro.product.model 2>/dev/null | tr -d '\r') [ -z "$name" ] && name=$(adb -s "$d" shell getprop ro.product.marketname 2>/dev/null | tr -d '\r') echo " $i) $d $name" i=$((i+1)) done for d in "${DEVICES[@]}"; do echo "Installing on $d..." adb -s "$d" install -r "$APK" done echo "Install OK"