跳到正文

← 全部工具

给 iOS 开发者的免费工具

IPA 检查器

在上传或分享之前,拖入 .ipa 文件看看里面有什么:Bundle ID、版本和构建号、最低 iOS 版本、支持的设备和屏幕方向、URL Scheme、所有 NS…UsageDescription 权限说明、哪些包带有 PrivacyInfo.xcprivacy、内嵌的描述文件、框架和 App 扩展及其 Bundle ID、主程序的架构,以及按文件夹统计的体积和最大的 20 个文件。IPA 只在浏览器里读取,不会上传。

不会上传任何内容。IPA 只在你的浏览器里由本页读取,只解压用得到的几个小文件。构建包里有你的团队 ID、Bundle ID,开发版和 Ad Hoc 版还带有设备 UDID。

拖入 .ipa 文件

最大 4 GB。只读取 ZIP 目录和几个小文件,大型 App 也很快。

使用方法

  • •.ipa 是一个 ZIP 压缩包,里面是 Payload/YourApp.app/。本页只从文件末尾读取 ZIP 的中央目录(列出每个文件和大小),然后只解压用得到的文件:Info.plist、embedded.mobileprovision 和图标。2 GB 的 IPA 也不会整个读进内存。
  • •构建好的 App 里,Info.plist 通常是二进制 plist。本页用自带的解析器读取二进制和 XML plist,与描述文件查看器用的是同一个。
  • •架构来自主程序开头的字节:通用二进制以一个列出各个切片(例如 arm64 和 x86_64)的文件头开始,单一架构文件在 Mach-O 文件头里写明 CPU 类型。只解压二进制的开头部分。
  • •PrivacyInfo.xcprivacy 位于 .app 顶层时,算作 App 本身有隐私清单;框架或扩展内部任意位置有这个文件,就算它有。App 资源包里的隐私清单(Swift Package 会放在 Name_Name.bundle 里)单独列出。
  • •体积按 ZIP 目录汇总:解压后大小和在 IPA 里的大小,按 App 顶层的每个文件夹或文件分组,另外列出 App 之外的文件夹,例如 SwiftSupport。

它做不到的事

  • •不读取 Assets.car,所以只放在资源目录里的图标不会显示;苹果 CgBI 优化过的 PNG 会说明情况,但不显示。
  • •不校验代码签名,不解密 App Store(FairPlay)加密的二进制,也不做反汇编。
  • •不检查隐私清单的内容和其中“需要声明理由的 API”声明,只看文件是否存在。
  • •不显示 InfoPlist.strings 里本地化的权限说明,只显示 Info.plist 里的值。
  • •体积是 App Store 瘦身之前的,所以某台 iPhone 实际下载的大小会更小。

常见问题

IPA 文件里面有什么?
IPA 是一个 ZIP 压缩包。App 包位于 Payload/YourApp.app/,里面有 Info.plist、主程序、Assets.car、Frameworks/ 里的内嵌框架、PlugIns/ 里的 App 扩展;开发版、Ad Hoc 版和企业版还有 embedded.mobileprovision。从 Xcode 导出的 App Store 包在 Payload/ 旁边还可能有 SwiftSupport/ 和 Symbols/。
检查大 IPA 会不会把浏览器标签页卡死?
不会。本页从文件末尾读取 ZIP 中央目录,只解压小文件和主程序的开头部分,从不把整个 IPA 读进内存,所以几百 MB 甚至更大的 App 都可以。上限是 4 GB。
怎么检查 App 和它用的 SDK 有没有隐私清单?
把 IPA 拖到这里:App 本身以及每个框架和扩展都会标出是否带有 PrivacyInfo.xcprivacy。苹果要求 App 以及许多常用第三方 SDK(使用了需要声明理由的 API)附带隐私清单。缺少时,上传后 App Store Connect 会发邮件,例如 ITMS-91053(缺少 API 声明)或 ITMS-91061(缺少隐私清单)。
为什么不显示我的 App 图标?
要么 App 只把图标放在 Assets.car 里,本页不读取这个文件;要么这个 PNG 是苹果的 CgBI 格式,开启“Compress PNG Files”时 Xcode 会生成,浏览器画不出来。遇到 CgBI 文件,本页会说明并给出尺寸;运行 `xcrun pngcrush -revert-iphone-optimizations in.png out.png` 可以转回普通 PNG。
怎么查看 App 支持哪些架构?
本页读取 Info.plist 中指定的主程序的 Mach-O 文件头。现在的 iOS App 只有 arm64。在 Mac 上解压后,也可以用 `lipo -archs Payload/YourApp.app/YourApp` 确认。
为什么这里的体积比 App Store 下载大小大?
App Store 会针对下载的设备做瘦身,去掉其他设备用的图片和代码,并压缩下载包。这里的解压总量是瘦身之前的大小。上传构建版本后,App Store Connect 会显示各设备的下载和安装大小。

相关工具