67 lines
2.4 KiB
Bash
Executable File
67 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# 自动构建脚本 - 自动增加版本号并编译APK
|
|
|
|
# 颜色定义
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}==================================${NC}"
|
|
echo -e "${BLUE} PDA 打印机测试应用 - 自动构建${NC}"
|
|
echo -e "${BLUE}==================================${NC}"
|
|
|
|
# 读取当前版本
|
|
BUILD_FILE="app/build.gradle.kts"
|
|
CURRENT_VERSION=$(grep "versionCode = " "$BUILD_FILE" | sed 's/.*versionCode = //' | sed 's/[^0-9]//g')
|
|
CURRENT_VERSION_NAME=$(grep "versionName = " "$BUILD_FILE" | sed 's/.*versionName = "//' | sed 's/".*//')
|
|
|
|
echo -e "${GREEN}当前版本: v${CURRENT_VERSION_NAME} (Build ${CURRENT_VERSION})${NC}"
|
|
|
|
# 计算新版本
|
|
NEW_VERSION=$((CURRENT_VERSION + 1))
|
|
# 计算新版本名称 (简单递增小版本号)
|
|
IFS='.' read -r major minor <<< "$CURRENT_VERSION_NAME"
|
|
NEW_MINOR=$((minor + 1))
|
|
NEW_VERSION_NAME="${major}.${NEW_MINOR}"
|
|
|
|
echo -e "${GREEN}新版本: v${NEW_VERSION_NAME} (Build ${NEW_VERSION})${NC}"
|
|
|
|
# 更新版本号
|
|
sed -i.bak "s/versionCode = $CURRENT_VERSION/versionCode = $NEW_VERSION/" "$BUILD_FILE"
|
|
sed -i.bak "s/versionName = \"$CURRENT_VERSION_NAME\"/versionName = \"$NEW_VERSION_NAME\"/" "$BUILD_FILE"
|
|
rm -f "${BUILD_FILE}.bak"
|
|
|
|
echo -e "${GREEN}✓ 版本号已更新${NC}"
|
|
|
|
# 清理并编译
|
|
echo -e "${BLUE}开始编译...${NC}"
|
|
./gradlew clean assembleRelease --no-daemon
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo -e "${GREEN}==================================${NC}"
|
|
echo -e "${GREEN} ✓ 编译成功!${NC}"
|
|
echo -e "${GREEN}==================================${NC}"
|
|
|
|
# 查找生成的APK
|
|
APK_PATH=$(find app/build/outputs/apk/release -name "*.apk" -type f | head -n 1)
|
|
|
|
if [ -n "$APK_PATH" ]; then
|
|
APK_SIZE=$(du -h "$APK_PATH" | cut -f1)
|
|
echo -e "${GREEN}APK 文件: ${APK_PATH}${NC}"
|
|
echo -e "${GREEN}文件大小: ${APK_SIZE}${NC}"
|
|
|
|
# 可选:复制到项目根目录
|
|
cp "$APK_PATH" "./PDA_Printer_Test_latest.apk"
|
|
echo -e "${GREEN}✓ 已复制到: ./PDA_Printer_Test_latest.apk${NC}"
|
|
fi
|
|
else
|
|
echo -e "${RED}✗ 编译失败${NC}"
|
|
# 恢复版本号
|
|
sed -i.bak "s/versionCode = $NEW_VERSION/versionCode = $CURRENT_VERSION/" "$BUILD_FILE"
|
|
sed -i.bak "s/versionName = \"$NEW_VERSION_NAME\"/versionName = \"$CURRENT_VERSION_NAME\"/" "$BUILD_FILE"
|
|
rm -f "${BUILD_FILE}.bak"
|
|
echo -e "${RED}已恢复原版本号${NC}"
|
|
exit 1
|
|
fi
|