Files
MeowOS-SDK/README.md
T

78 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MeowOS SDK for HiBy R3 Pro II
MeowOS 应用框架 SDK 的**公开仓库**——面向第三方开发者,让你为运行 MeowOS 的 **HiBy R3 Pro II** 写自己的 App。
本仓库把 MeowOS 的 App 框架(`meow_ui`)与相关开发文档独立发布出来,自带示例与构建脚本,**自包含、开箱即构建**,不依赖 MeowOS 主仓。
> 快速上手见 [docs/APP_DEV_GUIDE.md](docs/APP_DEV_GUIDE.md);SDK 设计全量见 [docs/MEOW_APP_SDK.md](docs/MEOW_APP_SDK.md)。
## 设备与平台
| 项 | 值 |
|---|---|
| 设备 | HiBy(海贝)R3 Pro II |
| 架构 | MIPS32r2(**mipsel**,little-endian,soft-float) |
| 屏幕 | 480×720,RGB565(代码里颜色统一 24-bit `0xRRGGBB`,SDK 内部转 RGB565) |
| 可执行格式 | **静态** MIPS32r2 ELF(编译 `-Os -static`) |
| 底层系统 | MeowOS(Linux 系,非 Android) |
## 目录结构
```
MeowOS-SDK/
├── sdk/ # meow_ui 应用框架静态库源码(自包含,可交叉 → sdk/meow_ui.a)
│ ├── meow_ui.h # 伞头(#include 聚合 include/ 子头;App 只 include 这个)
│ ├── include/ # 16 个模块子头 + meow_ipc.h / meow_font.h / meow_notif.h(协议/字体)
│ ├── meow_font.c # 预渲染位图字体运行时(meow_font.a 源码,自包含)
│ ├── build_sdk.sh # 交叉编译 meow_ui.a(mipsel 静态库,内含 meow_font.o)
│ └── test_*.c # SDK 宿主逻辑测试(test_host_stub.c 打桩,无硬件可跑)
├── examples/hello/ # 最小示例 App(meow_view 框架,多文件分层)
│ ├── app.c # main + 装配 + 事件分发(把 meow_ui_run 回调路由到各页)
│ ├── ui/ # 每页一个 view 文件(home/demo/list/full/chrome)
│ ├── logic/ # 纯 C 业务逻辑(不依赖 meow_ui.h,宿主可裸测)
│ └── build_hello.sh # 构建 hello(链 meow_ui.a + libz.a + -lpthread)
└── docs/
├── APP_DEV_GUIDE.md # 第三方开发上手指南(环境 → 最小 App → 构建打包 → 签名安装 → 调试)
└── MEOW_APP_SDK.md # SDK 设计全量规范
```
## 快速上手
```sh
# 1) 构建 meow_ui.a(交叉)
cd sdk
./build_sdk.sh # 产出 sdk/meow_ui.a
# 2) 构建示例 App hello
cd ../examples/hello
./build_hello.sh # 产出 examples/hello/hello(静态 MIPS32r2 ELF)
```
## 构建要求
- **交叉工具链**(mipsel musl 静态):MeowOS 开发机默认路径
`$HOME/Project/R3ProII/.tools/zig-mipsel-cc`(zig 包装,`--target=mipsel-linux-musleabi` soft-float)
与对应 sysroot(含 `libz.a`)。可用环境变量覆盖:`MEOW_CC` / `MEOW_SYSROOT`。
- GNU `ar`(归档 mipsel 对象,架构无关)。
- 宿主逻辑测试(无硬件,`gcc` + `test_host_stub.c` 打桩):
```sh
cd sdk
gcc -I. -Iinclude test_umbrella.c <各 sdk 源 .c> test_host_stub.c -lpthread -o test_umbrella
./test_umbrella
```
参考 [docs/APP_DEV_GUIDE.md §1.2](docs/APP_DEV_GUIDE.md)。
- 注意:改 SDK 源码(尤其 `meow_ui_theme`/`meow_widget` 结构)即 ABI 变化,**必须同步重编 `meow_ui.a` 与你的 App**。
## 与 MeowOS 主仓的关系
本仓库由 MeowOS 主仓(`MeowOS-For-R3P2`)经 `git subtree split` 拆出,只含公开的 SDK / 示例 / 文档:
- `sdk/` 对应主仓 `patch_v2/sdk/`,`examples/hello/` 对应主仓 `patch_v2/hello_app/`,`docs/` 对应主仓 `docs/APP_DEV_GUIDE.md` + `MEOW_APP_SDK.md`。
- **不含**主仓的系统组件(launcher / amsd / audiod / svc_* / netmgrd 等)、固件、签名工具、**密钥**。
- 本仓库中的 `build_sdk.sh` / `build_hello.sh` 已改造为**自包含**(`meow_ipc.h`/`meow_font.h`/`meow_notif.h`/`meow_font.c` 一律在 `sdk/` 内 vendored,不再依赖主仓 `meow_launcherd/`),与主仓内的同名脚本存在差异。
- SDK 增量同步(主仓 `patch_v2/sdk` 更新后再推本仓)的方法见主仓 `devdocs/` 与 `scripts/` 中的拆分记录。
## 许可证
MIT License——版权 **"MeowOS contributors"**,见 [LICENSE](LICENSE)。