news 2026/9/11 22:37:04

Provision跨平台编译指南:dub、CMake与树莓派工具链的完整配置教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Provision跨平台编译指南:dub、CMake与树莓派工具链的完整配置教程

Provision跨平台编译指南:dub、CMake与树莓派工具链的完整配置教程

【免费下载链接】ProvisionSet of tools interracting with Apple servers. Don't hesitate to leave a star if you appreciate it.项目地址: https://gitcode.com/gh_mirrors/pr/Provision

Provision 是一套运行在 Linux 上、与 Apple 服务器交互的工具集,包含设备注册库 libprovision、Anisette 配给服务 anisette_server 以及请求头获取工具 retrieve_headers。本文将从零讲清 Provision 的三种构建路径:dub 快速编译、CMake + Ninja 完整构建,以及树莓派 2/4 工具链的交叉编译配置,帮助你在任何平台上顺利跑起来。

⚠️安全提示:请勿使用你的主力 Apple 账号!官方建议使用备用账号,ADI 数据保存在~/.adi/adi.pb,切勿泄露。

一、Provision 有什么?先认识 3 个核心组件

组件类型作用
libprovision静态库在 Apple 服务器上注册设备,获取 ADI 数据
anisette_server可执行文件为 AltServer-Linux 等第三方软件提供 Anisette 配给服务
retrieve_headers可执行文件注册设备后在终端输出 JSON 格式的识别请求头
mkcassette可执行文件可选构建的辅助工具

运行时依赖:除二进制本身外,还需要把 Apple Music APK(Android 版)中的lib/文件夹解包到可执行文件旁边,可只保留libstoreservicescore.solibCoreADI.so两个库以减小体积。

二、编译前置:一键安装 D 语言开发环境

编译 Provision 需要D SDK(编译器 + dub 包管理器),可选安装 libplist:

# Debian / Ubuntu 示例 sudo apt install ldc dub ninja-build # 或使用 GDC 编译器 sudo apt install gdc-12

Dockerfile 中使用的构建依赖可作为参考:ldc、git、clang、dub、libz-dev,见 Dockerfile。

三、dub 快速编译:三步出可执行文件

最简单的方式是用 dub 构建,三个命令即可:

git clone https://gitcode.com/gh_mirrors/pr/Provision --recursive cd Provision dub build -b release
  • --recursive会拉取 cmake/cmake-d 等子模块,不要省略
  • 产物统一输出到bin/目录(在 dub.sdl 中通过targetPath "bin"配置)
  • dub.sdl 定义了 4 个包:主库provision和 3 个子包retrieve-headersmkcassetteanisette-server
  • 静态链接 anisette-server(Docker 镜像同款命令):dub build -c static -b release --compiler=ldc2 :anisette-server

四、CMake + Ninja 完整构建:树莓派工具链配置详解

4.1 标准构建流程

mkdir build && cd build cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release ninja

CMakeLists.txt 中的关键选项:

选项默认值说明
build_anisetteserverON是否构建 Anisette 服务
build_mkcassetteOFF是否构建 mkcassette
use_native_plistOFF改用 D 语言原生 plist 解析器
link_libplist_dynamicOFF运行时动态加载 libplist

plist 解析有三级回退:优先用系统libplist-2.0(pkg-config 探测),其次静态链接 libplist-d,最后警告并使用内置 fallback 解析器。第三方依赖(requests ~2.0.9、slf4d ~2.1.1、handy-httpd ~5.2.1)由 cmake/dependencies.cmake 通过 dub 自动拉取,无需手动安装。

4.2 树莓派 4 交叉编译(aarch64)

项目自带 toolchains/ 目录,为树莓派 4 准备了完整工具链文件。以 toolchains/rpi-4.cmake 为例,它指定了aarch64-linux-gnu-gcc-12/g++-12/gdc-12编译器组合,并将 sysroot 指向/usr/aarch64-linux-gnu/sys-root

mkdir build-rpi4 && cd build-rpi4 cmake -G Ninja .. -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../toolchains/rpi-4.cmake ninja

4.3 树莓派 2 交叉编译(ARMv7 32 位)

老款树莓派 2 是 32 位 ARM 架构,使用 toolchains/rpi-2.cmake,编译器前缀为arm-linux-gnueabihf-,其余流程与 4 相同。若你的交叉编译器没有-12版本后缀,可用无后缀版本:toolchains/rpi-4-no-suffix.cmake。

工具链文件还设置了-defaultlib=:libgphobos.a -fall-instantiations等 D 编译标志,专供 gdc 编译器交叉链接使用。

4.4 Windows 交叉编译

项目同时支持面向 Windows 的交叉编译,toolchains/windows.cmake 仅两行,核心是告诉 LDC 目标三元组:

SET(CMAKE_SYSTEM_NAME Windows) SET(CMAKE_D_COMPILER "ldc2;-mtriple=x86_64-windows-msvc")

配置方式与树莓派一致:-DCMAKE_TOOLCHAIN_FILE=../toolchains/windows.cmake

五、常见问题排查清单

  • 找不到 libplist:系统没装 libplist 时会打印Using fallback Property list parser警告,属正常降级,不影响出包;想彻底避免可安装libplist-2.0-dev
  • dub 报错子模块缺失:重新 clone 时务必带--recursive
  • gdc 交叉编译链接失败:确认使用了带-defaultlib=:libgphobos.a的工具链文件(toolchains/rpi-4.cmake 第 30 行已内置)
  • 运行时缺少 .so:把 Apple Music APK 里的lib/文件夹放到可执行文件旁

六、源码导航:快速定位关键文件

  • 项目总览与下载说明:README.md
  • 构建入口:CMakeLists.txt、dub.sdl
  • 依赖声明:cmake/dependencies.cmake
  • 核心库源码:lib/provision/adi.d、lib/provision/compat/linux.d
  • ADI 技术原理文档:docs/ADI.md
  • 树莓派/Windows 工具链:toolchains/
  • 容器化部署定义:Dockerfile

✅ 到这里,Provision 的 dub、CMake 与树莓派工具链三大构建路径就全部掌握了。建议先从 dub 快速编译验证环境,再按需切换到 CMake 交叉编译部署到树莓派等目标设备。

【免费下载链接】ProvisionSet of tools interracting with Apple servers. Don't hesitate to leave a star if you appreciate it.项目地址: https://gitcode.com/gh_mirrors/pr/Provision

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 2:20:40

用RKNPU2部署YOLOv5目标检测:从模型转换到NMS后处理的完整教程

用RKNPU2部署YOLOv5目标检测:从模型转换到NMS后处理的完整教程 【免费下载链接】rknpu2 项目地址: https://gitcode.com/gh_mirrors/rk/rknpu2 本文带你用 RKNPU2(Rockchip NPU 工具链)在 RK3562/RK3566/RK3588 开发板上部署 YOLOv5 …

作者头像 李华
网站建设 2026/8/31 0:45:18

12:1宽压输入Quarter-Brick DC-DC转换器:轨道交通电源设计的硬核选择

第一次看到“12:1 Input Quarter-Brick DC-DC Converters Target Railway Systems”这个标题时,我的第一反应是:这玩意儿肯定是给列车辅助供电系统准备的。轨道交通的电源设计在工业领域里是最不讲情面的场景之一——输入电压波动大、环境温度跨度广、EM…

作者头像 李华
网站建设 2026/8/30 6:22:50

基于SpringBoot+Vue的体育运动中心场地管理系统毕业设计项目源码

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

作者头像 李华