支持

在 ShouArchive 中遇到问题?请先查看下面的常见问题,仍未解决再来信联系。

联系方式 beakbigkb@gmail.com 回复通常需要几天时间。报告问题的建议见页面底部

快速上手

「描述文件」标签页要求我允许访问一个文件夹,为什么?

Mac App Store 版运行在 macOS 沙盒中。沙盒应用只能读取你明确选择过的文件夹,而 Xcode 存放描述文件的文件夹位于应用之外,因此需要允许一次。

点击「描述文件」标签页中的文件夹按钮,会弹出一个已经选中该文件夹的打开面板——什么都不用改,直接按允许即可。这次授权会在之后的启动中保留(macOS 安全作用域书签)。

应用读取的文件夹:

  • ~/Library/Developer/Xcode/UserData/Provisioning Profiles — Xcode 16 及更高版本
  • ~/Library/MobileDevice/Provisioning Profiles — 较早的 Xcode 版本

~/Library 在 Finder 中默认是隐藏的。在打开面板中按 ⌘⇧G 并粘贴上面的路径即可直接跳转。如果不想允许该文件夹,也可以把 .mobileprovision 文件拖入窗口,或使用「从文件添加…」。

支持哪些文件类型?
  • 产物检查.ipa(iOS 标签页)、.apk.aab(Android 标签页)
  • OTA 分发.ipa(iOS)、.apk(Android)。AAB 无法直接安装到设备上,因此不接受。
  • 描述文件.mobileprovision
  • API 密钥:从 App Store Connect 下载的 .p8 文件

将文件拖到窗口上,或使用「选择文件…」(⌘O)。

为什么这个版本没有 IPA/APK 构建或导出功能?

Mac App Store 应用必须运行在沙盒中,而沙盒无法启动 xcodebuildgradle 之类的外部程序。因此这个版本专注于三件事:检查、描述文件和 OTA。产物检查同样不依赖外部工具——应用自带的解析器直接读取 IPA、APK 和 AAB 文件。

描述文件与 App Store Connect API

如何创建 App Store Connect API 密钥?
  1. 前往 App Store Connect用户和访问集成App Store Connect API
  2. 生成一个团队密钥。读取和创建描述文件与设备通常需要管理(Admin)角色。
  3. 在应用的「下载描述文件」›「API 密钥」中输入 Issuer IDKey ID 和下载的 .p8 文件。选择 AuthKey_XXXXXXXX.p8 文件时会自动填入 Key ID。

Apple 只允许下载一次 .p8 文件,请妥善保管。应用绝不会使用你的 Apple ID 或双重认证验证码。

API 密钥保存在哪里?会发送到哪里?

.p8 文件留在你存放它的位置,应用只记住对它的引用(安全作用域书签)。请求令牌在你的 Mac 上签名,密钥本身从不发送到任何地方——应用只与 Apple 的 App Store Connect API(api.appstoreconnect.apple.com)通信。在应用中移除密钥不会删除 .p8 文件。

「即将过期」和 D-N 徽章是什么意思?

30 天内到期的描述文件会标记为「即将过期」,并以橙色 D-N 徽章显示剩余天数。超过到期日的则标记为「到期」(红色)。「新增」表示最近创建;「重复」标记的是团队、App ID 和类型都相同的两个或多个描述文件。

「证书」卡片是空的。

钥匙串中的代码签名证书列表无法在沙盒内读取,因此 Mac App Store 版中这张卡片是空的。内嵌在各描述文件中的证书仍会显示在详情和比较视图中,并提供 SHA-1 和 SHA-256 复制按钮。

我可以注册多少台设备?

每个 Apple Developer 账户在每个会员年度内,每种类型(iPhone、iPad、Mac……)最多可注册 100 台设备。已停用的设备在会员资格续期之前仍会占用名额。「设备」标签页会显示各类型的当前用量(例如 iPhone 3 / 100)。

产物检查

检查文件会修改或上传它吗?

不会。文件是只读的:原文件绝不会被修改,不会在它旁边写入结果文件,也不会向任何服务器发送任何内容。结果只显示在应用窗口中。

我不明白某一项是什么意思。

带虚线下划线的项目名称(权限、设备功能、清单设置、证书指纹、Entitlements 等)点击后会弹出说明,包含是什么 · 详情 · 注意事项。16 KB 卡片请点击标题旁的 ⓘ。

16 KB 页面大小检查看的是什么?

从 Android 15 开始,部分设备使用 16 KB 内存页,Google Play 要求原生库支持它。应用会检查 64 位(arm64-v8ax86_64.so 文件的 ELF LOAD 对齐;对于以未压缩方式存储在 APK 中的 .so 文件,还会检查它们在归档内的 16 KB 边界,并列出不符合要求的库。

OTA 分发

OTA 文件已经生成,但应用无法安装到设备上。

请按顺序逐项检查:

  • IPA、manifest.plistinstall.html 必须全部通过 https 提供。iOS 拒绝通过 http 安装。
  • 请在设备上的 Safari 中打开安装链接或二维码。即时通讯软件的预览和应用内浏览器往往不会触发安装。
  • Ad Hoc:设备的 UDID 必须包含在描述文件中。如果没有,请把设备加入描述文件并重新构建 IPA。
  • Enterprise:安装后,前往「设置」›「通用」›「VPN 与设备管理」,信任该开发者。
  • 使用 App Store 分发描述文件签名的 IPA 无法通过 OTA 安装。选择这类文件时,应用会给出警告。
  • 检查清单中的 IPA URL 是否与文件的实际位置一致,且文件名不含空格或特殊字符。
生成的文件保存在哪里?

「创建安装文件」(⌘↩)会要求你选择一个输出文件夹。它会在其中创建 <name>_OTA 文件夹,放入 IPA(或 APK)的副本,以及 <name>.manifest.plist<name>.install.html<name>.qr.png(Android:.install.html.qr.png),同名文件会被覆盖。应用从不上传任何内容,请自行将这些文件连同 IPA 或 APK 一起上传。

Android 的安装是怎样进行的?

将 APK、install.html 和二维码图片上传到同一个 https 文件夹,然后在设备的浏览器(Chrome)中打开安装页面。由于应用来自 Play 商店之外,设备需要允许安装未知来源的应用。页面上显示 SHA-256,测试人员可以据此核对下载的文件。

常规

如何更改语言?

打开工具栏中的地球图标菜单,选择语言并确认「立即重新启动」。应用会以该语言重新启动,你的工作会被保留。支持:简体中文、繁體中文、English、한국어、日本語 和 Español。

主题和文本大小?

在工具栏中选择浅色、深色或系统设置。文本大小可在 85 % 到 150 % 之间调整:通过「显示」菜单(放大文本 ⌘+、缩小文本 ⌘-、默认 ⌘0)或设置(⌘,)›「界面」。

系统要求

macOS 15 Sequoia 或更高版本,支持 Apple Silicon 和 Intel Mac。App Store Connect API 密钥仅在下载、创建描述文件和注册设备时需要;其他功能均可离线使用。

如何报告问题?

请将以下信息发送至 beakbigkb@gmail.com,以便尽快排查:

  • macOS 版本(苹果菜单 › 关于本机)
  • 应用版本(ShouArchive 菜单 › 关于 ShouArchive)
  • 你的操作步骤,以及实际发生了什么
  • 如有可能,附上截图或确切的错误文字

无需附上 IPA、APK 或描述文件。如果需要,会另行索取——在发送任何文件之前,请确认其中不含密钥文件(.p8)或敏感数据。