126 lines
3.4 KiB
Plaintext
126 lines
3.4 KiB
Plaintext
|
|
按yaml文件中心生成相关脚本
|
|||
|
|
我直接给你 全套 YAML 中心版最终成品
|
|||
|
|
完全按照你的要求:
|
|||
|
|
配置文件:app_versions.yaml(最佳格式)
|
|||
|
|
智能脚本:有则更新版本,无则新增 APK
|
|||
|
|
下载脚本:AAOS 自动下载所有 APK
|
|||
|
|
路径:不带版本号 → CarLauncher.apk
|
|||
|
|
全部可直接在 Linux 运行
|
|||
|
|
1. 统一配置文件(最终版)
|
|||
|
|
app_versions.yaml
|
|||
|
|
yaml
|
|||
|
|
# AAOS 应用统一版本配置
|
|||
|
|
# 自动更新 | 自动下载 | 自动编译
|
|||
|
|
apps:
|
|||
|
|
- apk_name: "CarLauncher"
|
|||
|
|
version: "1.0.3"
|
|||
|
|
path: "packages/apps/Car/CarLauncher"
|
|||
|
|
repo_path: "aaos-apps/CarLauncher/1.0.3/CarLauncher.apk"
|
|||
|
|
|
|||
|
|
- apk_name: "CarMedia"
|
|||
|
|
version: "2.1.0"
|
|||
|
|
path: "packages/apps/Car/CarMedia"
|
|||
|
|
repo_path: "aaos-apps/CarMedia/2.1.0/CarMedia.apk"
|
|||
|
|
2. 智能脚本:有则更新,无则新增(最终版)
|
|||
|
|
update_app.sh
|
|||
|
|
bash
|
|||
|
|
运行
|
|||
|
|
#!/bin/bash
|
|||
|
|
set -e
|
|||
|
|
|
|||
|
|
# 使用: ./update_app.sh <apk_name> <version>
|
|||
|
|
if [ $# -ne 2 ]; then
|
|||
|
|
echo "用法: $0 <apk_name> <version>"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
APP="$1"
|
|||
|
|
VER="$2"
|
|||
|
|
YAML="app_versions.yaml"
|
|||
|
|
|
|||
|
|
# 检查工具
|
|||
|
|
command -v yq >/dev/null || {
|
|||
|
|
echo "请先安装 yq:"
|
|||
|
|
echo "sudo wget https://github.com/mikefarah/yq/releases/download/v4.44.2/yq_linux_amd64 -O /usr/bin/yq && sudo chmod +x /usr/bin/yq"
|
|||
|
|
exit 1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 判断是否存在
|
|||
|
|
EXIST=$(yq ".apps[] | select(.apk_name == \"$APP\") | length" $YAML)
|
|||
|
|
|
|||
|
|
if [ "$EXIST" -ge 1 ]; then
|
|||
|
|
echo "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 应用已存在,更新版本..."
|
|||
|
|
yq -i ".apps[] |= (select(.apk_name == \"$APP\") | .version = \"$VER\")" $YAML
|
|||
|
|
yq -i ".apps[] |= (select(.apk_name == \"$APP\") | .repo_path = \"aaos-apps/$APP/$VER/$APP.apk\")" $YAML
|
|||
|
|
else
|
|||
|
|
echo "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 应用不存在,自动新增..."
|
|||
|
|
yq -i ".apps += [{
|
|||
|
|
\"apk_name\": \"$APP\",
|
|||
|
|
\"version\": \"$VER\",
|
|||
|
|
\"path\": \"packages/apps/Car/$APP\",
|
|||
|
|
\"repo_path\": \"aaos-apps/$APP/$VER/$APP.apk\"
|
|||
|
|
}]" $YAML
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
echo -e "\n✅ 成功:$APP -> $VER"
|
|||
|
|
echo "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 已更新 $YAML"
|
|||
|
|
3. AAOS 自动下载所有 APK 脚本
|
|||
|
|
download_apps.py
|
|||
|
|
python
|
|||
|
|
运行
|
|||
|
|
import yaml
|
|||
|
|
import subprocess
|
|||
|
|
|
|||
|
|
# 配置
|
|||
|
|
ARTIFACTORY_BASE = "http://你的artifactory:8081/artifactory"
|
|||
|
|
YAML_FILE = "app_versions.yaml"
|
|||
|
|
|
|||
|
|
with open(YAML_FILE) as f:
|
|||
|
|
data = yaml.safe_load(f)
|
|||
|
|
|
|||
|
|
for app in data["apps"]:
|
|||
|
|
name = app["apk_name"]
|
|||
|
|
version = app["version"]
|
|||
|
|
path = app["path"]
|
|||
|
|
repo = app["repo_path"]
|
|||
|
|
|
|||
|
|
url = f"{ARTIFACTORY_BASE}/{repo}"
|
|||
|
|
out = f"{path}/{name}.apk"
|
|||
|
|
|
|||
|
|
print(f"\n=== 下载 {name} ===")
|
|||
|
|
print(f"版本:{version}")
|
|||
|
|
print(f"地址:{url}")
|
|||
|
|
print(f"保存:{out}")
|
|||
|
|
|
|||
|
|
subprocess.run(f"mkdir -p {path}", shell=True)
|
|||
|
|
subprocess.run(f"curl -f -o {out} {url}", shell=True, check=True)
|
|||
|
|
|
|||
|
|
print("\n✅ 全部下载完成!")
|
|||
|
|
4. 快速使用教程(超级简单)
|
|||
|
|
① 第一次使用先安装工具
|
|||
|
|
bash
|
|||
|
|
运行
|
|||
|
|
sudo wget https://github.com/mikefarah/yq/releases/download/v4.44.2/yq_linux_amd64 -O /usr/bin/yq
|
|||
|
|
sudo chmod +x /usr/bin/yq
|
|||
|
|
sudo apt install python3-pip -y
|
|||
|
|
pip3 install pyyaml
|
|||
|
|
② 给脚本权限
|
|||
|
|
bash
|
|||
|
|
运行
|
|||
|
|
chmod +x update_app.sh
|
|||
|
|
③ 改版本 或 新增 APP(一条命令)
|
|||
|
|
bash
|
|||
|
|
运行
|
|||
|
|
./update_app.sh CarLauncher 1.0.4
|
|||
|
|
④ 下载所有 APK 到 AAOS
|
|||
|
|
bash
|
|||
|
|
运行
|
|||
|
|
python3 download_apps.py
|
|||
|
|
✅ 最终效果(完全满足你)
|
|||
|
|
配置文件:YAML 干净、易读、支持注释
|
|||
|
|
版本管理:一条命令自动更新 / 新增
|
|||
|
|
路径:aaos-apps/APP/VERSION/APP.apk
|
|||
|
|
文件名:无版本号 → CarLauncher.apk
|
|||
|
|
AAOS:自动下载、自动编译
|
|||
|
|
|