#!/bin/bash set -e ROOT_DIR="$(cd "$(dirname "$0")" && pwd)" TOOLCHAIN_DIR="$ROOT_DIR/../arm-molv2-linux-uclibcgnueabi" SYSROOT="$TOOLCHAIN_DIR/arm-molv2-linux-uclibcgnueabi/sysroot" CROSS="$TOOLCHAIN_DIR/bin/arm-molv2-linux-uclibcgnueabi" VERSION="1.0.84" #协议版本 3.2系统:0,3.3系统为 1 PROTOCOL_VERSION=0 DISP_COUNT=1 # 显示器数量 TAG_TYPE="70" # 价签类型 # 根据DISP_COUNT设置APP_ID if [[ "$DISP_COUNT" == "1" ]]; then APP_ID="com.eplayer.linux_single.00.$TAG_TYPE" FIRMWARE_ID="com.eplayer.firmware.linux_single.00.$TAG_TYPE" else APP_ID="com.eplayer.linux_dual.00.$TAG_TYPE" FIRMWARE_ID="com.eplayer.firmware.linux_dual.00.$TAG_TYPE" fi # 默认 Release,如需 Debug 直接 ./build.sh Debug BUILD_TYPE="${1:-Release}" BUILD_DIR="$ROOT_DIR/build-arm-$BUILD_TYPE" TOOLCHAIN_FILE="$ROOT_DIR/toolchain-arm.cmake" # ----------------------------------------------------------------------------- # 1. 环境检测 # ----------------------------------------------------------------------------- if [[ ! -d "$TOOLCHAIN_DIR/bin" ]]; then echo "[ERR] 交叉工具链目录不存在:$TOOLCHAIN_DIR" >&2 exit 1 fi if [[ ! -d "$SYSROOT" ]]; then echo "[ERR] sysroot 目录不存在:$SYSROOT" >&2 exit 1 fi echo "[INF] 使用工具链:$TOOLCHAIN_DIR" echo "[INF] 使用 sysroot:$SYSROOT" echo "[INF] 构建类型:$BUILD_TYPE" echo "------------------------------------------------------------" # ----------------------------------------------------------------------------- # 2. PATH / pkg-config 环境 # ----------------------------------------------------------------------------- export PATH="$TOOLCHAIN_DIR/bin:$PATH" # 让 pkg‑config 查找目标库 export PKG_CONFIG_DIR= export PKG_CONFIG_LIBDIR="$SYSROOT/usr/lib/pkgconfig:$SYSROOT/usr/share/pkgconfig" export PKG_CONFIG_SYSROOT_DIR="$SYSROOT" # ----------------------------------------------------------------------------- # 3. 自动生成 toolchain 文件(若不存在) # ----------------------------------------------------------------------------- if [[ ! -f "$TOOLCHAIN_FILE" ]]; then cat >"$TOOLCHAIN_FILE" < /dev/null; then echo "[ERROR] adb 命令未找到,请安装 Android SDK 或配置 PATH" exit 1 fi # 检查设备是否连接 if ! adb devices | grep -v "List of devices" | grep -q "device"; then echo "[ERROR] 未找到已连接的 ADB 设备" exit 1 fi # 清理旧文件并推送新文件 echo "正在删除旧版本..." if [[ "$DISP_COUNT" -eq 1 ]]; then adb shell rm -rf /data/bin/eplayer_single echo "正在上传新版本..." adb push "$BIN_PATH" /data/bin/eplayer_single # 设置可执行权限 adb shell chmod +x /data/bin/eplayer_single else adb shell rm -rf /data/bin/eplayer_dual echo "正在上传新版本..." adb push "$BIN_PATH" /data/bin/eplayer_dual # 设置可执行权限 adb shell chmod +x /data/bin/eplayer_dual fi echo "上传完成" else echo "[INFO] Release 构建,准备打包发布版本..." # 创建临时目录用于打包 TEMP_DIR=$(mktemp -d) if [[ ! "$TEMP_DIR" || ! -d "$TEMP_DIR" ]]; then echo "[ERROR] 无法创建临时目录" exit 1 fi # 复制文件到临时目录 cp "$BIN_PATH" "$TEMP_DIR/e_player" # 创建版本文件 echo "Version: $VERSION" > "$TEMP_DIR/version.txt" echo "DeviceType: $TAG_TYPE" >> "$TEMP_DIR/version.txt" echo "APPID: $APP_ID" >> "$TEMP_DIR/version.txt" echo "PROTOCOL_VERSION: $PROTOCOL_VERSION" >> "$TEMP_DIR/version.txt" echo "BuildDate: $(date '+%Y-%m-%d %H:%M:%S')" >> "$TEMP_DIR/version.txt" # 打包文件 # 如果DISP_COUNT=1 则文件名为:e_player-single-$VERSION.tar # 如果DISP_COUNT=2 则文件名为:e_player-dual-$VERSION.tar if [[ "$DISP_COUNT" -eq 1 ]]; then #命名规则:e_player-{single或dual}-{00(设备型号)}-{TAG_TYPE}-{VERSION}.tar RELEASE_FILE="$ROOT_DIR/release/e_player-single-00-$TAG_TYPE-$VERSION.tar" # 删除旧版本的发布包文件 #echo "正在删除旧版本发布包..." #rm -rf "$ROOT_DIR/release/e_player-single-*" #rm -f "$ROOT_DIR/release/e_player-single-*.tar" "$ROOT_DIR/release/e_player-single-*.tar.md5" else RELEASE_FILE="$ROOT_DIR/release/e_player-dual-00-$TAG_TYPE-$VERSION.tar" # 删除旧版本的发布包文件 #echo "正在删除旧版本发布包..." #rm -f "$ROOT_DIR/release/e_player-dual-*.tar" "$ROOT_DIR/release/e_player-dual-*.tar.md5" fi #RELEASE_FILE="$ROOT_DIR/release/e_player-$VERSION.tar" mkdir -p "$ROOT_DIR/release" echo "正在创建发布包: $RELEASE_FILE" tar -cvf "$RELEASE_FILE" -C "$TEMP_DIR" . # 计算MD5校验值 md5sum "$RELEASE_FILE" > "$RELEASE_FILE.md5" # 清理临时目录 rm -rf "$TEMP_DIR" echo "发布包创建完成:" echo " - 主文件: $RELEASE_FILE" echo " - 校验文件: $RELEASE_FILE.md5" fi else echo "[WARN] 构建流程结束,但未在预期路径找到可执行文件。" fi #拷贝 / 打包 / OTA # #./build.sh # Release #./build.sh Debug # Debug #scp build-arm/bin/e_player root@TARGET_IP:/usr/bin/ #ssh root@TARGET_IP 'chmod +x /usr/bin/e_player && sync' # #