| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #!/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
|