增加脚本版本管理的功能
authorCaisking <Casiking@zhihuishixun.com>
Mon, 15 Sep 2025 06:58:17 +0000 (14:58 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Mon, 15 Sep 2025 06:58:17 +0000 (14:58 +0800)
VERSION_MANAGEMENT.md [new file with mode: 0644]
autobuild.sh
project_versions.conf [new file with mode: 0644]

diff --git a/VERSION_MANAGEMENT.md b/VERSION_MANAGEMENT.md
new file mode 100644 (file)
index 0000000..8f26b96
--- /dev/null
@@ -0,0 +1,126 @@
+# 项目版本管理使用说明
+
+## 概述
+编译脚本现在支持为每个项目独立管理版本号,不再使用统一的版本号。
+
+## 功能特性
+1. **独立版本管理**:每个项目都有自己的版本号
+2. **配置文件支持**:版本信息存储在 `project_versions.conf` 文件中
+3. **版本查看**:可以查看所有项目的版本信息
+4. **版本更新**:可以动态更新项目版本号
+5. **自动保存**:版本更新后自动保存到配置文件
+
+## 使用方法
+
+### 1. 查看所有项目版本
+```bash
+./autobuild.sh versions
+# 或者
+./autobuild.sh version
+# 或者
+./autobuild.sh v
+```
+
+### 2. 更新项目版本
+```bash
+./autobuild.sh update-version <项目名> <新版本号>
+```
+
+示例:
+```bash
+# 更新fd230项目版本为1.3.107
+./autobuild.sh update-version fd230 1.3.107
+
+# 更新user项目版本为1.2.86
+./autobuild.sh update-version user 1.2.86
+```
+
+### 3. 正常编译(使用项目对应版本)
+```bash
+# 编译fd230项目(使用fd230的版本号)
+./autobuild.sh fd230 release clean
+
+# 编译user项目(使用user的版本号)
+./autobuild.sh user debug
+
+# 编译其他项目
+./autobuild.sh cm release clean
+```
+
+## 支持的项目
+- fd230 (默认项目)
+- user
+- fd230_user
+- xts
+- u8
+- w9
+- lt22
+- n9
+- ln
+- u8m
+- uoffline
+- oob128
+- z1
+- 4part
+- leakcheck
+- autoota
+- autootacli
+- obu
+- cm
+- ct
+
+## 配置文件格式
+版本信息存储在 `project_versions.conf` 文件中,格式如下:
+```
+# 项目版本配置文件
+# 格式: PROJECT_NAME=VERSION
+# 示例: fd230=1.3.106
+
+# 默认项目版本
+fd230=1.3.106
+user=1.2.85
+fd230_user=1.2.90
+...
+```
+
+## 版本号命名规范
+建议使用语义化版本号:`主版本号.次版本号.修订号`
+- 主版本号:重大功能更新
+- 次版本号:新功能添加
+- 修订号:bug修复
+
+## 注意事项
+1. 版本号更新后会自动保存到配置文件
+2. 如果配置文件不存在,会使用默认版本号
+3. 编译时会显示当前使用的项目版本号
+4. 发布包的文件名会包含项目版本号
+
+## 示例输出
+```bash
+$ ./autobuild.sh versions
+=== 项目版本管理 ===
+当前项目: pack_brandy_native_js_fd230
+当前版本: 1.3.106
+
+所有项目版本:
+  fd230: 1.3.106
+  user: 1.2.85
+  fd230_user: 1.2.90
+  xts: 1.1.50
+  u8: 1.3.20
+  w9: 1.2.75
+  lt22: 1.3.15
+  n9: 1.2.60
+  ln: 1.3.30
+  u8m: 1.2.40
+  uoffline: 1.2.45
+  oob128: 1.3.10
+  z1: 1.1.80
+  4part: 1.3.25
+  leakcheck: 1.2.70
+  autoota: 1.3.50
+  autootacli: 1.1.30
+  obu: 1.2.35
+  cm: 1.3.40
+  ct: 1.3.35
+```
index 20101af..fcc5b59 100644 (file)
@@ -1,5 +1,7 @@
 #!/bin/bash
 # ./autobuild.sh [user|u8m|uoffline|oob128|z1|4part|leakcheck|autoota|autootacli|obu|cm|ct] [debug|release] [clean] 
+# ./autobuild.sh versions  # 查看所有项目版本
+# ./autobuild.sh update-version <project> <version>  # 更新项目版本
 #
 # 通常三个参数可以用,每个是可选项,且三个参数输入的前后顺序可以随意。
 
 #         cm, ChinaMobile 移动入库软件版本
 #         ct, ChinaTelecom 电信入库软件版本
 #
+# 版本管理功能:
+#         versions, 查看所有项目的版本信息
+#         update-version <project> <version>, 更新指定项目的版本号
+#
 
 version=HEAD
 DATE=$(date  +%Y%m%d_%H%M%S)
@@ -35,6 +41,61 @@ DEFAULT_APPLICATION_NAME=brandy-native-js-fd230
 DEFAULT_RECOVERY_NAME=$DEFAULT_APPLICATION_NAME-r
 DEFAULT_SSB_NAME=$DEFAULT_APPLICATION_NAME-ssb
 
+# 各项目独立版本管理
+declare -A PROJECT_VERSIONS
+
+# 从配置文件加载版本信息
+load_versions_from_config() {
+    local config_file="$HOMEDIR/project_versions.conf"
+    if [ -f "$config_file" ]; then
+        while IFS='=' read -r project version; do
+            # 跳过注释行和空行
+            if [[ ! "$project" =~ ^[[:space:]]*# ]] && [[ -n "$project" ]]; then
+                PROJECT_VERSIONS["$project"]="$version"
+            fi
+        done < "$config_file"
+        echo "Loaded versions from $config_file"
+    else
+        echo "Warning: Config file $config_file not found, using default versions"
+        # 使用默认版本
+        PROJECT_VERSIONS["fd230"]="1.3.106"
+        PROJECT_VERSIONS["user"]="1.2.85"
+        PROJECT_VERSIONS["fd230_user"]="1.2.90"
+        PROJECT_VERSIONS["xts"]="1.1.50"
+        PROJECT_VERSIONS["u8"]="1.3.20"
+        PROJECT_VERSIONS["w9"]="1.2.75"
+        PROJECT_VERSIONS["lt22"]="1.3.15"
+        PROJECT_VERSIONS["n9"]="1.2.60"
+        PROJECT_VERSIONS["ln"]="1.3.30"
+        PROJECT_VERSIONS["u8m"]="1.2.40"
+        PROJECT_VERSIONS["uoffline"]="1.2.45"
+        PROJECT_VERSIONS["oob128"]="1.3.10"
+        PROJECT_VERSIONS["z1"]="1.1.80"
+        PROJECT_VERSIONS["4part"]="1.3.25"
+        PROJECT_VERSIONS["leakcheck"]="1.2.70"
+        PROJECT_VERSIONS["autoota"]="1.3.50"
+        PROJECT_VERSIONS["autootacli"]="1.1.30"
+        PROJECT_VERSIONS["obu"]="1.2.35"
+        PROJECT_VERSIONS["cm"]="1.3.40"
+        PROJECT_VERSIONS["ct"]="1.3.35"
+    fi
+}
+
+# 保存版本到配置文件
+save_versions_to_config() {
+    local config_file="$HOMEDIR/project_versions.conf"
+    echo "# 项目版本配置文件" > "$config_file"
+    echo "# 格式: PROJECT_NAME=VERSION" >> "$config_file"
+    echo "# 示例: fd230=1.3.106" >> "$config_file"
+    echo "" >> "$config_file"
+    echo "# 默认项目版本" >> "$config_file"
+    for project in "${!PROJECT_VERSIONS[@]}"; do
+        echo "$project=${PROJECT_VERSIONS[$project]}" >> "$config_file"
+    done
+    echo "Versions saved to $config_file"
+}
+
+# 默认版本
 DEFAULT_CUSTOM_FW_VERSION=1.3.106
 HSO_BUILD=nohso
 TARGET_DATABASE_PATH=code/sdk/output/brandy/database_evb
@@ -47,6 +108,7 @@ SSB_NAME=$DEFAULT_SSB_NAME
 
 CLEAN=
 BUILD_NAME=_FD230
+CURRENT_PROJECT_VERSION=$DEFAULT_CUSTOM_FW_VERSION
 checkarguments()
 {
 if [ "$1" == "clean" ]
@@ -70,6 +132,19 @@ then
 RELEASE_BUILD=release
 fi
 
+# 设置项目版本
+if [ -n "$1" ] && [ "$1" != "clean" ] && [ "$1" != "debug" ] && [ "$1" != "release" ]
+then
+    if [ -n "${PROJECT_VERSIONS[$1]}" ]
+    then
+        CURRENT_PROJECT_VERSION=${PROJECT_VERSIONS[$1]}
+        echo "Setting version for project $1: $CURRENT_PROJECT_VERSION"
+    else
+        echo "Warning: No version defined for project $1, using default version: $DEFAULT_CUSTOM_FW_VERSION"
+        CURRENT_PROJECT_VERSION=$DEFAULT_CUSTOM_FW_VERSION
+    fi
+fi
+
 if [ "$1" == "user" ]
 then
 TARGET_PACK_NAME=pack_brandy_native_js_user
@@ -180,8 +255,8 @@ cp_releasepackage()
        
        resfile_path=$HOMEDIR/code/sdk/output/package/brandy/$TARGET_PACK_NAME/$APPLICATION_NAME/file.bin
 
-       filename=${TARGET_PACK_NAME}_${RELEASE_BUILD}_${DEFAULT_CUSTOM_FW_VERSION}_${DATE}_${USER}.fwpkg
-       releasedir=$HOMEDIR/release/$TARGET_PACK_NAME/$RELEASE_BUILD/V${DEFAULT_CUSTOM_FW_VERSION}_${DATE}${BUILD_NAME}
+       filename=${TARGET_PACK_NAME}_${RELEASE_BUILD}_${CURRENT_PROJECT_VERSION}_${DATE}_${USER}.fwpkg
+       releasedir=$HOMEDIR/release/$TARGET_PACK_NAME/$RELEASE_BUILD/V${CURRENT_PROJECT_VERSION}_${DATE}${BUILD_NAME}
        packsource=$HOMEDIR/code/sdk/tools/pkg/fwpkg/brandy/upload_app.fwpkg
        echo do release copy
        mkdir -p $releasedir/bin
@@ -216,12 +291,12 @@ build_target()
 {
 
        cd $HOMEDIR/code/sdk/
-       echo ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1 
+       echo ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$CURRENT_PROJECT_VERSION $TARGET_PACK_NAME 2>&1 
 if [ "$HSO_BUILD" == "hso" ] 
 then
-       ./build.py $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1 
+       ./build.py $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$CURRENT_PROJECT_VERSION $TARGET_PACK_NAME 2>&1 
 else
-       ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$DEFAULT_CUSTOM_FW_VERSION $TARGET_PACK_NAME 2>&1 
+       ./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE -custom_fw_version=$CURRENT_PROJECT_VERSION $TARGET_PACK_NAME 2>&1 
 fi
        #./build.py -nhso $CLEAN -$RELEASE_BUILD -build_time=$DATE $TARGET_PACK_NAME 2>&1 
        ret_code=$?
@@ -240,16 +315,73 @@ fi
        cd $HOMEDIR
 }
 
+# 版本管理功能
+show_versions() {
+    echo "=== 项目版本管理 ==="
+    echo "当前项目: $TARGET_PACK_NAME"
+    echo "当前版本: $CURRENT_PROJECT_VERSION"
+    echo "版本数量: ${#PROJECT_VERSIONS[@]}"
+    echo ""
+    echo "所有项目版本:"
+    for project in "${!PROJECT_VERSIONS[@]}"; do
+        echo "  $project: ${PROJECT_VERSIONS[$project]}"
+    done
+    echo ""
+}
+
+# 检查是否是版本管理命令
+if [ "$1" == "versions" ] || [ "$1" == "version" ] || [ "$1" == "v" ]
+then
+    load_versions_from_config
+    show_versions
+    exit 0
+fi
+
+# 检查是否是更新版本命令
+if [ "$1" == "update-version" ] && [ -n "$2" ] && [ -n "$3" ]
+then
+    # 先加载版本配置
+    load_versions_from_config
+    project_name=$2
+    new_version=$3
+    if [ -n "${PROJECT_VERSIONS[$project_name]}" ]
+    then
+        old_version=${PROJECT_VERSIONS[$project_name]}
+        PROJECT_VERSIONS[$project_name]=$new_version
+        echo "Updated $project_name version: $old_version -> $new_version"
+        # 保存到配置文件
+        save_versions_to_config
+    else
+        echo "Error: Project $project_name not found"
+        echo "Available projects:"
+        for project in "${!PROJECT_VERSIONS[@]}"; do
+            echo "  $project"
+        done
+        exit 1
+    fi
+    exit 0
+fi
+
+# 加载版本配置
+load_versions_from_config
+
 checkarguments $1
 checkarguments $2
 checkarguments $3
 checkarguments $4
+
+# 显示当前编译信息
+echo "=== 编译信息 ==="
+echo "项目: $TARGET_PACK_NAME"
+echo "版本: $CURRENT_PROJECT_VERSION"
+echo "构建类型: $RELEASE_BUILD"
 if [ "$CLEAN" == "-c" ]
 then
-echo  $0 $TARGET_PACK_NAME $RELEASE_BUILD clean
+echo "清理模式: 是"
 else
-echo  $0 $TARGET_PACK_NAME $RELEASE_BUILD 
+echo "清理模式: 否"
 fi
+echo "=================="
 
 # read -n 1 -p "Press any key to continue..."
 
diff --git a/project_versions.conf b/project_versions.conf
new file mode 100644 (file)
index 0000000..361b7e3
--- /dev/null
@@ -0,0 +1,25 @@
+# 项目版本配置文件
+# 格式: PROJECT_NAME=VERSION
+# 示例: fd230=1.3.106
+
+# 默认项目版本
+ln=1.3.30
+4part=1.3.25
+n9=1.2.107
+u8m=1.2.40
+lt22=1.3.15
+fd230=1.3.107
+z1=1.1.80
+leakcheck=1.2.70
+u8=1.3.20
+fd230_user=1.2.90
+ct=1.3.35
+cm=1.3.40
+w9=1.2.75
+autoota=1.3.50
+xts=1.1.50
+oob128=1.3.10
+uoffline=1.2.45
+obu=1.2.35
+user=1.2.85
+autootacli=1.1.30