ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

EasyAIoT 移动端一码三端完整指南:一套前端如何打包出 Android APK、iOS IPA、鸿蒙 HAP

EasyAIoT 移动端一码三端完整指南:一套前端如何打包出 Android APK、iOS IPA、鸿蒙 HAP
  • 后端
  • 前端
  • 人工智能
  • 大模型
  • 模型推理服务
  • 微调
  • 计算机视觉
  • 音视频

【免费下载链接】easyaiot

我希望全世界都能使用这个系统,实现AI的真正0门槛,人人都能体验到AI带来的好处,而并不只是掌握在少数人手里。支持上千种垂直场景,支持AI模型定制化和AI算法定制化开发 深度融合,赋能万物智视:EasyAIoT 构筑了物联网设备(尤其是海量摄像头)的高效接入与管控网络。我们深度融合流媒体实时传输技术与前沿人工智能(AI),打造一体化服务核心。这套方案不仅打通了异构设备的互联互通,更将高清视频流与强大的AI解析引擎深度集成,赋予监控系统“智能之眼”——精准实现人脸识别、异常行为分析、风险人员布控周界入侵检测。

项目地址:https://gitcode.com/gh_mirrors/ea/easyaiot
点击查看免费下载

EasyAIoT 是一套面向物联网与视频监控的开源 AIoT 平台,其移动端基于 uni-app 实现「一码三端」:同一套 Vue 3 前端代码,配合三个轻量壳工程,即可分别打包出 Android APK、iOS IPA 与鸿蒙 HarmonyOS HAP 安装包,并支持 prod/test/dev 多环境一键出包。

下面带你快速看懂这套架构,并给出每端最快的手动打包路径 📱

一套前端 + 三个壳:移动端架构总览

EasyAIoT 移动端由四个目录协作完成,核心思想是业务代码与壳分离:

目录角色说明
APP/前端工程(唯一业务代码)uni-app 3 + Vue 3 + TypeScript + Vite 5,编译出 App 资源 / H5 资源
ANDROID/Android 壳工程内置 uni-app 离线运行时(AAR),Gradle 打 APK
IOS/iOS 壳工程系统 WKWebView 加载 H5 产物,xcodebuild 出 IPA
HARMONYOS/鸿蒙壳工程ArkWeb(系统 WebView)加载 H5 产物,hvigor 出 HAP

三个壳工程不含任何业务代码,只负责运行时、图标、签名与打包;界面全部来自 APP 模块的构建产物。前端与 PC 端(WEB)共用同一套后端接口(/admin-api),登录态、OAuth2 双 Token、多租户切换在移动端照常工作。

打包链路可以概括为三步:

APP (uni-app 工程) │ 1. pnpm build:app / build:h5 ← 编译前端 ▼ │ 2. 脚本自动同步产物到壳工程 ← 资源同步 ▼ │ 3. gradlew / xcodebuild / hvigorw ← 出包 ▼ easyaiot-<版本>-<环境>-<平台>.<格式>(APK / IPA / HAP)

APP 端能力覆盖设备管理、实时预览、推流转发、算法任务、告警中心、模型推理与训练监控等场景,打包后在手机上的运行效果如下(来自 APP/docs/ 的移动端面板演示截图):

技术栈速览

  • 框架:uni-app 3 / Vue 3,语言 TypeScript
  • UI:Wot Design Uni + UnoCSS
  • 状态管理:Pinia(含持久化)
  • 视频播放:Jessibuca / flv.js(H5 端低延时播放器)
  • HTTP:自研请求封装,支持 API 加解密

如何一键打出 Android APK

Android 端使用 DCloud uni-app离线运行时方案:APP 工程执行pnpm build:app产出 www 资源后,脚本将其同步到壳工程的assets/apps/<AppID>/www/,再内置的离线运行时 AAR 一起由 Gradle 打成 APK。

日常只需一条命令(详见 ANDROID/README.md):

cd ANDROID ./make-apk.sh # 生产环境 ./make-apk.sh test # 测试环境 ./make-apk.sh dev # 开发环境

make-apk.sh 会依次完成:版本一致性校验 → 前端构建 → 清空并同步 www 资源 → Gradle assembleRelease → 复制为带环境后缀的成品。

几个关键配置(都已在仓库中就绪):

  • 包名com.basiclab.iot.app,签名证书 ANDROID/app/iot.jks(alias=iot,有效期 25 年)
  • 离线运行时 AAR 内置于ANDROID/app/libs/,版本与 APP 前端编译器配套
  • 多环境后端地址在APP/env/.env.*的VITE_SERVER_BASEURL配置,默认http://localhost:48080/admin-api

若想在真机/模拟器上验证 uni-app 基座运行效果,可在 HBuilderX 中选择「使用自定义基座运行」后直接推送到 Android 设备:

如何打出 iOS IPA:WKWebView 壳 + xcodebuild

iOS 壳不走 uni-app 离线运行时,而是用系统 WKWebView 加载纯 H5 产物(这是三端中依赖最轻的一路):

cd IOS ./make-ipa.sh # 模拟器 .app(免签名,默认) ./make-ipa.sh --device # 真机/分发 .ipa(需配置 teamID) ./make-ipa.sh test # 测试环境

实现上有个巧妙设计:H5 产物通过自定义协议easyiot://localhost/index.html由WKURLSchemeHandler从 bundle 内读取,页面以「正常网页」身份运行——ES Module、localStorage、对后端 admin-api 的跨域请求都与真实站点一致,规避了file://直载的各种内核限制(见 IOS/WebViewScreen.swift)。

注意两点:

  • 工程使用 Xcode 16 的新格式(objectVersion 77),必须 Xcode 16+
  • 真机/分发前把 IOS/ExportOptions.plist 中的teamID占位值替换为你的 Apple Team ID;上架 App Store 则将method改为app-store-connect

如何打出鸿蒙 HAP:ArkWeb 壳 + hvigor

鸿蒙端同样是「壳 + H5」路线,用 DevEco Studio 的 ArkWeb 加载网页产物:

cd HARMONYOS ./make-hap.sh # 生产环境 ./make-hap.sh --skip-native # 无 DevEco 环境时只做前端构建 + 资源同步

make-hap.sh 完成后,产物位于entry/build/**/outputs/**/*.hap,可配合hdc install -r安装到真机。这里也有个针对性设计:ArkWeb 基于 Chromium 会拦截file://源的 ES Module,壳页面把资源统一映射为虚拟主机http://appassets.local/,由onInterceptRequest从 rawfile 取字节回填(见 HARMONYOS/entry/src/main/ets/pages/Index.ets)。

调试签名最省事的方式:DevEco Studio 中File → Project Structure → Signing Configs勾选Automatically generate signature,登录华为账号即可自动补全证书与 Profile。

三端统一管理:一个入口管全部

不必分别钻进三个目录。仓库提供了统一入口.scripts/docker/mobile.sh(等价入口./install_linux.sh mobile <子命令>,完整说明见 .scripts/docker/MOBILE.md):

.scripts/docker/mobile.sh status # 三端版本一致性 / 工具链就绪度 / 已有成品 .scripts/docker/mobile.sh build android prod # 单端打包(android|ios|harmonyos|all) .scripts/docker/mobile.sh bump 1.0.1 101 # 发版:5 处版本号一次改齐 .scripts/docker/mobile.sh artifacts # 列出所有已产出安装包 .scripts/docker/mobile.sh clean android # 清理指定端打包成品

其中bump命令一次改齐5 处版本号:APP 的 manifest.config.ts、Android 的build.gradle与dcloud_control.xml、iOS 的project.pbxproj(Debug/Release 两段)、鸿蒙的AppScope/app.json5,并回读校验。各端打包脚本在版本号不一致时会直接拒绝出包——宁可不出包,也不出错包 🛡️

三端安装包统一命名为全小写easyaiot-<版本>-<环境>-<平台>.<格式>(如easyaiot-1.0.0-prod-android.apk),对 CI 制品归集与对象存储归档非常友好。

版本号与常见坑速查

📌发版三原则

  1. versionCode整数递增(不递增则无法覆盖安装)
  2. versionName五处保持一致(推荐直接用bump)
  3. 换 Android 签名证书 = 换指纹 = 必须重新申请 AppKey,老 APK 需先卸载

📌高频问题(完整表格见各模块 README)

现象原因 / 解决
改了前端代码,App 里没生效只跑了 gradlew/xcodebuild/hvigorw,没有重新同步 www → 用一键脚本全流程
启动白屏 / appid 不匹配.env的 AppID、assets 目录名、dcloud_control.xml三处必须一致
接口全部失败VITE_SERVER_BASEURL还写着 localhost → 改为真实网关地址后重新出包
only-allow pnpm报错APP 工程只允许 pnpm 安装依赖,别用 npm/yarn
HAP 无法装真机命令行打的 unsigned 包不能直装 → 配置自动调试签名

小结

EasyAIoT 移动端的设计思路可以总结为一句话:业务写一次,壳各端化,脚本保一致。uni-app 3 前端负责全部业务与界面,Android/iOS/鸿蒙各用一个极简壳工程承载运行时与签名,配合mobile.sh统一入口与版本号一致性校验,新人也能在三条命令内产出三个平台的正式安装包。

更多细节可延伸阅读:APP/README.md、ANDROID/README.md、IOS/README.md、HARMONYOS/README.md。

  • 后端
  • 前端
  • 人工智能
  • 大模型
  • 模型推理服务
  • 微调
  • 计算机视觉
  • 音视频

【免费下载链接】easyaiot

我希望全世界都能使用这个系统,实现AI的真正0门槛,人人都能体验到AI带来的好处,而并不只是掌握在少数人手里。支持上千种垂直场景,支持AI模型定制化和AI算法定制化开发 深度融合,赋能万物智视:EasyAIoT 构筑了物联网设备(尤其是海量摄像头)的高效接入与管控网络。我们深度融合流媒体实时传输技术与前沿人工智能(AI),打造一体化服务核心。这套方案不仅打通了异构设备的互联互通,更将高清视频流与强大的AI解析引擎深度集成,赋予监控系统“智能之眼”——精准实现人脸识别、异常行为分析、风险人员布控周界入侵检测。

项目地址:https://gitcode.com/gh_mirrors/ea/easyaiot
点击查看免费下载

相关推荐

上一篇:3大核心技术让d2dx彻底改变你的暗黑破坏神2游戏体验
下一篇:PPT-Master 模板架构解析:Brand / Style / Layout / Deck 四种模板类型的设计模型与多路径安装规则

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进