Installation and Deployment - langningchen/miniapp GitHub Wiki
本指南详细介绍如何安装、部署、管理和更新 miniapp 应用,包括生产环境部署的最佳实践。
Miniapp 的部署过程包括:
- 📦 应用打包 - 生成 .amr 格式的安装包
- 📤 文件传输 - 将应用上传到设备
- 🔧 应用安装 - 使用 miniapp_cli 安装
- ✅ 安装验证 - 确认应用正常运行
- 🔄 更新管理 - 版本升级和回滚
确保已完成 编译流程详解:
# 检查编译产物
ls -la dist/
# 应该包含:
# miniapp.amr - 主安装包
# 其他资源文件
# 确认设备连接正常
adb devices
# 检查设备存储空间
adb shell df -h /userdisk/
# 确认设备支持 miniapp
adb shell miniapp_cli --help
AMR (Application Mobile Runtime) 是有道词典笔的应用包格式:
- 包含编译后的二进制文件
- 包含前端资源文件
- 包含配置和元数据
- 支持签名和验证
# 查看 AMR 包内容(如果可以解压)
file dist/miniapp.amr
# 检查包大小
ls -lh dist/miniapp.amr
# 验证包的完整性
md5sum dist/miniapp.amr
如果需要修改打包配置,编辑相应的配置文件:
// 应用配置示例
{
"name": "miniapp",
"version": "1.0.0",
"description": "有道词典笔 Miniapp",
"main": "app.js",
"permissions": [
"network",
"storage",
"microphone"
]
}
# 压缩传输(如果网络较慢)
gzip dist/miniapp.amr
adb push dist/miniapp.amr.gz /userdisk/Favorite/
adb shell "cd /userdisk/Favorite && gunzip miniapp.amr.gz"
# 验证传输完整性
local_md5=$(md5sum dist/miniapp.amr | cut -d' ' -f1)
remote_md5=$(adb shell md5sum /userdisk/Favorite/miniapp.amr | cut -d' ' -f1)
if [ "$local_md5" = "$remote_md5" ]; then
echo "✅ 传输完整"
else
echo "❌ 传输有误"
fi
如果需要传输多个文件:
# 创建传输脚本
cat > transfer_files.sh << 'EOF'
#!/bin/bash
FILES=(
"dist/miniapp.amr"
"config/app_config.json"
"assets/icon.png"
)
for file in "${FILES[@]}"; do
echo "传输 $file..."
adb push "$file" "/userdisk/Favorite/$(basename "$file")"
done
EOF
chmod +x transfer_files.sh
./transfer_files.sh
# 1. 上传应用包
adb push dist/miniapp.amr /userdisk/Favorite/miniapp.amr
# 2. 检查上传结果
adb shell ls -la /userdisk/Favorite/miniapp.amr
# 3. 安装应用
adb shell miniapp_cli install /userdisk/Favorite/miniapp.amr
# 4. 验证安装
adb shell miniapp_cli list | grep miniapp
# 强制安装(覆盖已有版本)
adb shell miniapp_cli install --force /userdisk/Favorite/miniapp.amr
# 指定安装位置
adb shell miniapp_cli install --path /custom/path /userdisk/Favorite/miniapp.amr
# 安装时设置权限
adb shell miniapp_cli install --permissions network,storage /userdisk/Favorite/miniapp.amr
# 查看所有已安装的 miniapp
adb shell miniapp_cli list
# 查看特定应用信息
adb shell miniapp_cli info com.miniapp.package
# 检查应用状态
adb shell miniapp_cli status com.miniapp.package
# 启动应用
adb shell miniapp_cli launch com.miniapp.package
# 或通过 Activity Manager 启动
adb shell am start -n com.miniapp.package/.MainActivity
# 检查应用是否在运行
adb shell ps aux | grep miniapp
# 监控应用启动日志
adb logcat -c
adb shell miniapp_cli launch com.miniapp.package &
adb logcat -s "MiniApp:*"
# 测试网络功能
adb shell "curl -I http://www.baidu.com"
# 测试存储功能
adb shell "ls -la /userdisk/miniapp/"
# 监控内存使用
adb shell dumpsys meminfo com.miniapp.package
# 监控 CPU 使用
adb shell top -p $(adb shell pidof com.miniapp.package)
# 监控启动时间
time adb shell miniapp_cli launch com.miniapp.package
# 查看当前版本
adb shell miniapp_cli version com.miniapp.package
# 查看版本历史
adb shell ls -la /userdisk/miniapp/versions/
# 备份当前版本
adb pull /userdisk/Favorite/miniapp.amr ./backup/miniapp_v$(date +%Y%m%d).amr
#!/bin/bash
# 应用更新脚本 update_miniapp.sh
NEW_VERSION="$1"
if [ -z "$NEW_VERSION" ]; then
echo "用法: $0 <新版本号>"
exit 1
fi
echo "开始更新到版本 $NEW_VERSION..."
# 1. 备份当前版本
adb shell miniapp_cli backup com.miniapp.package
# 2. 停止应用
adb shell miniapp_cli stop com.miniapp.package
# 3. 上传新版本
adb push "dist/miniapp_v${NEW_VERSION}.amr" "/userdisk/Favorite/miniapp.amr"
# 4. 更新应用
adb shell miniapp_cli update com.miniapp.package /userdisk/Favorite/miniapp.amr
# 5. 启动应用
adb shell miniapp_cli launch com.miniapp.package
echo "更新完成"
# 查看可用备份
adb shell miniapp_cli list-backups com.miniapp.package
# 回滚到指定版本
adb shell miniapp_cli rollback com.miniapp.package v1.0.0
# 验证回滚
adb shell miniapp_cli version com.miniapp.package
# 查看配置文件
adb shell cat /userdisk/miniapp/config.json
# 备份配置
adb pull /userdisk/miniapp/config.json ./backup/
# 更新配置
cat > new_config.json << 'EOF'
{
"debug": false,
"api_endpoint": "https://api.example.com",
"cache_size": "100MB"
}
EOF
adb push new_config.json /userdisk/miniapp/config.json
# 设置生产环境变量
adb shell "echo 'NODE_ENV=production' > /userdisk/miniapp/.env"
# 设置调试模式
adb shell "echo 'DEBUG=true' >> /userdisk/miniapp/.env"
# 查看环境变量
adb shell cat /userdisk/miniapp/.env
#!/bin/bash
# 部署监控脚本 monitor_deployment.sh
APP_PACKAGE="com.miniapp.package"
while true; do
# 检查应用状态
STATUS=$(adb shell miniapp_cli status $APP_PACKAGE 2>/dev/null)
# 检查进程
PID=$(adb shell pidof $APP_PACKAGE 2>/dev/null)
# 检查内存使用
if [ -n "$PID" ]; then
MEMORY=$(adb shell dumpsys meminfo $PID | grep "TOTAL" | awk '{print $2}')
echo "[$(date)] 应用运行中 - PID: $PID, 内存: ${MEMORY}KB"
else
echo "[$(date)] 应用未运行"
fi
sleep 30
done
# 自动收集应用日志
#!/bin/bash
LOG_DIR="logs/$(date +%Y%m%d)"
mkdir -p $LOG_DIR
# 收集应用日志
adb logcat -s "MiniApp:*" > $LOG_DIR/app.log &
# 收集系统日志
adb logcat -s "System:*" > $LOG_DIR/system.log &
echo "日志收集已启动,保存到 $LOG_DIR/"
# 检查应用权限
adb shell dumpsys package com.miniapp.package | grep permission
# 验证应用签名
adb shell dumpsys package com.miniapp.package | grep signature
# 检查文件权限
adb shell ls -la /userdisk/miniapp/
# 设置安全模式
adb shell "echo 'SECURITY_MODE=strict' >> /userdisk/miniapp/.env"
# 启用访问日志
adb shell "echo 'ACCESS_LOG=true' >> /userdisk/miniapp/.env"
# 配置白名单
cat > whitelist.json << 'EOF'
{
"allowed_domains": [
"api.youdao.com",
"dict.youdao.com"
]
}
EOF
adb push whitelist.json /userdisk/miniapp/
部署前检查:
- 编译无错误
- 所有测试通过
- 版本号正确
- 配置文件正确
- 依赖库齐全
部署过程检查:
- 设备连接稳定
- 存储空间充足
- 文件传输完整
- 安装成功
- 权限配置正确
部署后验证:
- 应用能正常启动
- 基本功能正常
- 性能指标正常
- 日志输出正常
- 配置生效
部署完成后,请参考:
解决方案:
# 检查设备权限
adb shell whoami
# 使用 root 权限安装
adb shell su -c "miniapp_cli install /userdisk/Favorite/miniapp.amr"
# 检查文件权限
adb shell ls -la /userdisk/Favorite/miniapp.amr
解决方案:
# 查看详细错误信息
adb logcat -c
adb shell miniapp_cli launch com.miniapp.package
adb logcat -d | grep -E "(FATAL|ERROR)"
# 检查依赖库
adb shell ldd /path/to/miniapp/binary
# 检查配置文件
adb shell cat /userdisk/miniapp/config.json
解决方案:
# 完全卸载旧版本
adb shell miniapp_cli uninstall com.miniapp.package
# 清理缓存
adb shell rm -rf /userdisk/miniapp/cache/
# 重新安装
adb shell miniapp_cli install /userdisk/Favorite/miniapp.amr
解决方案:
# 检查系统资源
adb shell cat /proc/meminfo
adb shell cat /proc/loadavg
# 优化应用配置
adb shell "echo 'CACHE_SIZE=50MB' >> /userdisk/miniapp/.env"
# 重启应用
adb shell miniapp_cli restart com.miniapp.package
需要帮助? 查看 常见问题解决 获取更多部署和运维解决方案。