LiteRT-LM跨平台编译完整指南:Android NDK与iOS预编译库快速上手
【免费下载链接】LiteRT-LMLiteRT-LM is Google's production-ready, high-performance, open-source inference framework for deploying Large Language Models on edge devices.项目地址: https://gitcode.com/GitHub_Trending/li/LiteRT-LM
LiteRT-LM 是 Google 官方出品的生产级端侧大模型推理框架,LiteRT-LM 跨平台编译是将其部署到 Android、iOS 等设备的关键一步。本文将带你完整走通两条路线:使用Android NDK 交叉编译出 arm64 目标库,以及直接集成iOS 预编译库,让你无需搭建复杂的构建环境就能在自有 App 中跑起本地大模型。
📦 为什么选择 LiteRT-LM
LiteRT-LM 主打"一套代码、全平台部署",核心卖点:
| 能力 | 说明 |
|---|---|
| 📱 跨平台 | Android、iOS、Web、桌面端、树莓派等 IoT 设备 |
| 🚀 硬件加速 | GPU(OpenCL / Metal / WebGPU)与 NPU 加速器 |
| 👁️ 多模态 | 支持视觉与音频输入 |
| 🔧 工具调用 | Function Calling,支持 Agentic 工作流 |
| 📚 模型生态 | Gemma、Llama、Phi-4、Qwen 等主流模型 |
它提供 Python(稳定)、Kotlin(稳定)、C++(稳定)、Swift(早期预览)等语言 API,编译产物可直接被这些上层接口调用。
🗂️ 先看懂 prebuilt/ 预编译库体系
打开仓库你会发现prebuilt/目录按平台组织好了现成的动态库——这是 iOS 集成的核心资源:
| 平台 | 目录 | 库格式与内容 |
|---|---|---|
| Android arm64 | prebuilt/android_arm64/ | .so:GPU/OpenCL/WebGPU 加速器、TopK 采样器、约束解码库 |
| iOS 真机 | prebuilt/ios_arm64/ | .dylib:核心运行时 +Metal 加速器 |
| iOS 模拟器 | prebuilt/ios_sim_arm64/ | .dylib:与真机同构,供 Xcode 调试 |
| Linux x86_64 / arm64 | prebuilt/linux_x86_64/ | .so:WebGPU 加速器、采样器 |
| macOS | prebuilt/macos_arm64/ | .dylib:Metal + WebGPU 双加速 |
| Windows | prebuilt/windows_x86_64/ | .dll+.lib |
每个平台的库文件分工非常清晰,以 iOS 真机为例:
libLiteRt.dylib—— 核心推理运行时libLiteRtMetalAccelerator.dylib—— Metal GPU 加速后端libLiteRtTopKMetalSampler.dylib—— Metal TopK 采样器libGemmaModelConstraintProvider.dylib—— 约束解码(结构化解码)
从 v0.16 起还发布了版本化的C API 预编译共享库包,意味着你在任意语言里都能原生绑定 LiteRT-LM,不必自己编译动态库。
🤖 Android NDK 交叉编译分步实战
1. 获取代码并准备 NDK 环境
git clone https://gitcode.com/GitHub_Trending/li/LiteRT-LM cd LiteRT-LM项目预设要求 NDK 位于~/android-ndk/android-ndk-r26d。建议安装NDK r26d并保持该路径一致(后续会修改预设来适配你的环境)。
2. 用 CMake Preset 一键配置并编译
项目内置了 Android arm64 的编译预设,两步命令即可:
cmake --preset android-arm64 cmake --build cmake/build/android-arm64 -j4背后的机制值得了解:
CMakePresets.json中定义了android-arm64预设,自动注入CMAKE_SYSTEM_NAME=Android、API 28、arm64-v8a、c++_shared等参数- 工具链封装在
cmake/toolchains/litertlm_android.toolchain.cmake,它会自动定位 NDK 自带的android.toolchain.cmake,校验失败直接报FATAL_ERROR,避免"半配置"的诡异错误 - 同目录的
litertlm_android.script.cmake负责处理 Rust 子组件的交叉链接器(aarch64-linux-android目标),并把 Release 优化从-O3降为-O2以控制编译内存 - 根
CMakeLists.txt采用 Super-Build 编排:先构建 protoc/flatc 等主机工具,再交叉编译主库,无需手动管理依赖顺序
3. 控制并行度,避免 OOM
官方构建文档(docs/getting-started/cmake.md)特别提醒:依赖树复杂,并行度过高会导致SEGFAULT 或 OOM-kill。推荐公式:
可用内存(GB) ÷ 8 ≈ 最大
-j值(32GB 内存 →-j4)
如果你更想用容器环境,仓库还提供cmake/Containerfile,可一键构建出带全部依赖的 podman/docker 镜像。
🍎 iOS 预编译库快速集成
iOS 路线最省心——不需要交叉编译,直接用仓库内的现成库:
1. 选择对应架构的库
真机运行选prebuilt/ios_arm64/,Xcode 模拟器调试选prebuilt/ios_sim_arm64/,两者文件同构。
2. 通过 Swift 包接入
仓库swift/目录就是现成的 Swift Package,Package.swift已定义好目标依赖。API 入口集中在:
swift/Engine.swift—— 引擎初始化与生命周期swift/Conversation.swift—— 会话与流式输出swift/EmbeddingEngine.swift—— 向量嵌入引擎
官方示例可直接参考samples/ios_and_mac/ContentView.swift(含 iOS 与 macOS 双端说明)。多模态场景下,视觉输入会先经过support/preprocessor/中的前处理管线:
3. 工具调用能力开箱即用
编译好的库完整支持 Tool Use:模型输出的函数调用请求会经过解析器格式化与校验,流程如下图所示:
Kotlin/Android 侧同样享受完整能力,可参考kotlin/java/com/google/ai/edge/litertlm/example/Main.kt中的终端示例。
⚡ 常见问题速查表
| 问题现象 | 原因 | 解决办法 |
|---|---|---|
Could not find the Android NDK toolchain | 预设中 NDK 路径与本机不符 | 修改CMakePresets.json中CMAKE_ANDROID_NDK为你实际的 NDK 路径 |
| 编译中途被 Signal 9 杀掉 | 并行任务过多触发 OOM | 按"内存 ÷ 8"降低-j值 |
| Rust 子组件编译失败 | 缺少 Rust 工具链 | 安装 Rust 并确认支持对应 Android 目标三元组 |
| 主机系统不支持 | 工具链仅支持 Linux/Darwin 交叉编译 | 换用 Linux 或 macOS 构建 Android 目标 |
✅ 总结
LiteRT-LM 的跨平台编译策略非常务实:iOS 用预编译库零门槛集成,Android 用一条 Preset 命令交叉编译。掌握本文后,你可以:
- 通过
cmake --preset android-arm64在 PC 上产出 Android 目标库 - 直接从
prebuilt/ios_arm64/取 Metal 加速动态库接入 Swift 工程 - 用
samples/与swift/目录中的示例快速验证推理效果
关键路径速查:
- 构建入口:
CMakeLists.txt、CMakePresets.json - Android 工具链:
cmake/toolchains/litertlm_android.toolchain.cmake - 构建文档:
docs/getting-started/cmake.md - 预编译库:
prebuilt/(按平台分子目录) - Swift 包与示例:
swift/、samples/ios_and_mac/
【免费下载链接】LiteRT-LMLiteRT-LM is Google's production-ready, high-performance, open-source inference framework for deploying Large Language Models on edge devices.项目地址: https://gitcode.com/GitHub_Trending/li/LiteRT-LM
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考