一款专为 macOS 设计的原生应用,快速提取 IPA 文件中的设备列表
IPA Provisioned Devices Extractor 是一款轻量级的 macOS 原生应用,帮助开发者快速提取 iOS 应用(IPA 文件)中的 Provisioned Devices 列表。无需命令行操作,只需简单拖放即可完成。
- 🎯 简单易用 - 拖放或点击选择 IPA 文件即可
- 🚀 快速解析 - 自动提取 embedded.mobileprovision 中的设备信息
- 📱 详细展示 - 显示应用名称、设备数量和完整设备列表
- 🔍 智能搜索 - 实时搜索过滤设备 UDID
- 📋 一键复制 - 单独复制任意设备 UDID
- 💾 导出功能 - 将设备列表导出为文本文件
- 🎨 原生界面 - 纯 SwiftUI 开发,完美融入 macOS 系统
- ⚡ 异步处理 - 不阻塞界面,流畅体验
- macOS 12.0 (Monterey) 或更高版本
- Xcode 13.0 或更高版本(仅开发需要)
- 下载最新版本的
.dmg文件 - 打开 DMG,将应用拖到 Applications 文件夹
- 启动应用,开始使用
-
克隆仓库
git https://github.com/insignificance/ipaParser.git cd ipaParser-main -
打开项目
open ipaParser.xcodeproj
-
构建运行
- 在 Xcode 中选择目标设备(My Mac)
- 按
Cmd + R运行 - 或按
Cmd + B构建
-
导入 IPA 文件
- 方法 1:直接拖放 IPA 文件到应用窗口
- 方法 2:点击上传区域,通过文件选择器选择文件
-
提取设备列表
- 点击"提取设备列表"按钮
- 应用会自动解析 IPA 文件
-
查看结果
- 应用名称和设备总数会显示在顶部
- 完整的设备 UDID 列表显示在下方
-
搜索设备
- 使用搜索框快速查找特定设备
- 支持模糊匹配
-
复制或导出
- 点击每行右侧的复制按钮复制单个 UDID
- 点击"导出列表"保存完整列表到文本文件
┌─────────────────────────────────────────┐
│ 📱 IPA Provisioned Devices 提取器 │
│ │
│ ┌───────────────────────────────────┐ │
│ │ 拖放 IPA 文件到这里 │ │
│ │ 或点击选择文件 │ │
│ └───────────────────────────────────┘ │
│ │
│ [ 提取设备列表 ] │
│ │
│ ──────────────────────────────────── │
│ │
│ 应用名称: MyAwesomeApp │
│ 设备数量: 25 台设备 │
│ │
│ 🔍 搜索设备 UDID │
│ │
│ 1. 00008030-001234567890001E [📋] │
│ 2. 00008030-001234567890002E [📋] │
│ 3. 00008030-001234567890003E [📋] │
│ ... │
│ │
│ [ 导出列表 ] │
└─────────────────────────────────────────┘
- Swift - 主要开发语言
- SwiftUI - 用户界面框架
- Foundation - 文件处理和数据解析
- UniformTypeIdentifiers - 文件类型识别
-
IPA 文件解压
- IPA 文件本质上是 ZIP 压缩包
- 使用
/usr/bin/unzip命令解压到临时目录
-
定位 Provisioning Profile
- 在
Payload/*.app/目录下查找embedded.mobileprovision
- 在
-
解析 Provisioning Profile
- 方法 1:使用
security cms -D命令解密 CMS 签名 - 方法 2:手动提取内嵌的 XML plist 数据
- 解析 PropertyList 获取
ProvisionedDevices数组
- 方法 1:使用
-
展示结果
- 提取设备 UDID 列表
- 从
Info.plist获取应用名称
// 使用 security 命令解析 mobileprovision
let process = Process()
process.executableURL = URL(fileURLWithPath: "/usr/bin/security")
process.arguments = ["cms", "-D", "-i", provisionFile.path]
// 解析 plist 获取设备列表
if let devices = plist["ProvisionedDevices"] as? [String] {
return devices
}可能的原因:
- App Store 版本 - App Store 分发的应用不包含设备列表
- 企业签名 - 企业分发证书没有设备限制
- 文件损坏 - IPA 文件可能不完整或损坏
- ✅ Ad Hoc 分发(包含设备列表)
- ✅ Development 开发版本
- ❌ App Store 版本(无设备限制)
- ❌ Enterprise 企业版(无设备限制)
- ✅ 所有处理都在本地完成
- ✅ 不上传任何数据到服务器
- ✅ 临时文件使用后自动删除
- ✅ 完全开源,代码透明
- 支持批量处理多个 IPA 文件
- 添加设备信息详情(设备名称、型号等)
- 支持导出为 CSV/JSON 格式
- 添加设备 UDID 验证功能
- 支持从 App Store Connect 导入设备列表对比
- 添加深色模式优化
- 国际化支持(英文、日文等)
欢迎贡献代码、报告问题或提出建议!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
- 使用 Swift 官方代码风格
- 遵循 SwiftUI 最佳实践
- 添加必要的注释说明
- 确保代码通过编译且无警告
- 🎉 首次发布
- ✨ 支持拖放导入 IPA 文件
- ✨ 自动提取设备列表
- ✨ 搜索和过滤功能
- ✨ 单独复制和批量导出
本项目采用 MIT 许可证 - 详见 LICENSE 文件
Your Name
- GitHub: @insignificance
- Email: insignificance.gmail.com
- 感谢所有为本项目做出贡献的开发者
- 感谢 Apple 提供优秀的开发工具和框架
- 灵感来源于日常开发中的实际需求
如果这个项目对你有帮助,请给个 Star ⭐️ 支持一下!
Made with ❤️ for iOS Developers
