#!/bin/bash # ================================================ # HarmonyOS 项目编译脚本 # ================================================ # 设置颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo -e "${GREEN}================================${NC}" echo -e "${GREEN} HarmonyOS 项目编译脚本${NC}" echo -e "${GREEN}================================${NC}" echo "" # 1. 检查 Node.js echo -e "${YELLOW}[1/6] 检查 Node.js...${NC}" if ! command -v node &> /dev/null; then echo -e "${RED}❌ 未找到 Node.js,请先安装 Node.js${NC}" exit 1 fi NODE_VERSION=$(node --version) echo -e "${GREEN}✅ Node.js 版本: $NODE_VERSION${NC}" echo "" # 2. 检查 DevEco Studio echo -e "${YELLOW}[2/6] 检查 DevEco Studio...${NC}" DEVECO_APP="/Applications/DevEco-Studio.app" if [ ! -d "$DEVECO_APP" ]; then echo -e "${RED}❌ 未找到 DevEco Studio,请先安装${NC}" exit 1 fi echo -e "${GREEN}✅ DevEco Studio 已安装${NC}" echo "" # 3. 设置环境变量 echo -e "${YELLOW}[3/6] 设置环境变量...${NC}" # Node 和 hvigorw 路径 NODE_BIN="$DEVECO_APP/Contents/tools/node/bin/node" HVIGORW_JS="$DEVECO_APP/Contents/tools/hvigor/bin/hvigorw.js" # SDK 路径(正确的路径) export DEVECO_SDK_HOME="$DEVECO_APP/Contents/sdk" export HOS_SDK_HOME="$DEVECO_APP/Contents/sdk" export OHOS_SDK_HOME="$DEVECO_APP/Contents/sdk" if [ ! -d "$DEVECO_SDK_HOME" ]; then echo -e "${RED}❌ 未找到 SDK: $DEVECO_SDK_HOME${NC}" echo -e "${YELLOW}提示:在 DevEco Studio 中打开项目,SDK 会自动下载${NC}" exit 1 fi echo -e "${GREEN}✅ SDK 路径: $DEVECO_SDK_HOME${NC}" echo "" # 4. 清理之前的构建 echo -e "${YELLOW}[4/6] 清理之前的构建...${NC}" if [ -d "build" ]; then rm -rf build echo -e "${GREEN}✅ 已清理 build 目录${NC}" fi echo "" # 5. 停止之前的 daemon echo -e "${YELLOW}[5/6] 停止之前的 hvigor daemon...${NC}" "$NODE_BIN" "$HVIGORW_JS" --stop-daemon 2>/dev/null || true echo "" # 6. 开始编译 echo -e "${YELLOW}[6/6] 开始编译项目...${NC}" echo -e "${YELLOW}命令: node hvigorw.js --mode module -p module=entry@default -p product=default -p requiredDeviceType=tablet assembleHap --analyze=normal --parallel --incremental --daemon${NC}" echo "" "$NODE_BIN" "$HVIGORW_JS" \ --mode module \ -p module=entry@default \ -p product=default \ -p requiredDeviceType=tablet \ assembleHap \ --analyze=normal \ --parallel \ --incremental \ --daemon EXIT_CODE=$? echo "" if [ $EXIT_CODE -eq 0 ]; then echo -e "${GREEN}================================${NC}" echo -e "${GREEN} ✅ 编译成功!${NC}" echo -e "${GREEN}================================${NC}" echo "" echo -e "${GREEN}输出文件位置:${NC}" find entry/build -name "*.hap" -type f 2>/dev/null | while read file; do size=$(du -h "$file" 2>/dev/null | cut -f1) echo -e "${GREEN} 📦 $file ($size)${NC}" done else echo -e "${RED}================================${NC}" echo -e "${RED} ❌ 编译失败!${NC}" echo -e "${RED}================================${NC}" echo "" echo -e "${YELLOW}故障排查建议:${NC}" echo -e "1. 在 DevEco Studio 中打开项目" echo -e "2. 等待 SDK 自动下载完成" echo -e "3. 在 DevEco Studio 中点击 Build > Build Hap(s)" echo -e "4. 确认可以在 IDE 中编译成功后,再使用脚本编译" fi exit $EXIT_CODE