Skip to content
insignificancePublic

About

IPA Provisioned Devices Extractor 是一款轻量级的 macOS 原生应用,帮助开发者快速提取 iOS 应用(IPA 文件)中的 Provisioned Devices 列表。无需命令行操作,只需简单拖放即可完成。

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

IPA Provisioned Devices Extractor

1024-mac.png

一款专为 macOS 设计的原生应用,快速提取 IPA 文件中的设备列表

Platform Swift SwiftUI License


📋 简介

IPA Provisioned Devices Extractor 是一款轻量级的 macOS 原生应用,帮助开发者快速提取 iOS 应用(IPA 文件)中的 Provisioned Devices 列表。无需命令行操作,只需简单拖放即可完成。

✨ 主要特性

  • 🎯 简单易用 - 拖放或点击选择 IPA 文件即可
  • 🚀 快速解析 - 自动提取 embedded.mobileprovision 中的设备信息
  • 📱 详细展示 - 显示应用名称、设备数量和完整设备列表
  • 🔍 智能搜索 - 实时搜索过滤设备 UDID
  • 📋 一键复制 - 单独复制任意设备 UDID
  • 💾 导出功能 - 将设备列表导出为文本文件
  • 🎨 原生界面 - 纯 SwiftUI 开发,完美融入 macOS 系统
  • ⚡ 异步处理 - 不阻塞界面,流畅体验

🖥️ 系统要求

  • macOS 12.0 (Monterey) 或更高版本
  • Xcode 13.0 或更高版本(仅开发需要)

🚀 快速开始

方式一:直接使用(即将发布)

  1. 下载最新版本的 .dmg 文件
  2. 打开 DMG,将应用拖到 Applications 文件夹
  3. 启动应用,开始使用

方式二:从源码构建

  1. 克隆仓库

    git https://github.com/insignificance/ipaParser.git
    cd ipaParser-main
  2. 打开项目

    open ipaParser.xcodeproj
  3. 构建运行

    • 在 Xcode 中选择目标设备(My Mac)
    • 按 Cmd + R 运行
    • 或按 Cmd + B 构建

📖 使用说明

基本流程

  1. 导入 IPA 文件

    • 方法 1:直接拖放 IPA 文件到应用窗口
    • 方法 2:点击上传区域,通过文件选择器选择文件
  2. 提取设备列表

    • 点击"提取设备列表"按钮
    • 应用会自动解析 IPA 文件
  3. 查看结果

    • 应用名称和设备总数会显示在顶部
    • 完整的设备 UDID 列表显示在下方
  4. 搜索设备

    • 使用搜索框快速查找特定设备
    • 支持模糊匹配
  5. 复制或导出

    • 点击每行右侧的复制按钮复制单个 UDID
    • 点击"导出列表"保存完整列表到文本文件

示例截图

┌─────────────────────────────────────────┐
│     📱 IPA Provisioned Devices 提取器    │
│                                         │
│  ┌───────────────────────────────────┐  │
│  │   拖放 IPA 文件到这里              │  │
│  │   或点击选择文件                   │  │
│  └───────────────────────────────────┘  │
│                                         │
│     [  提取设备列表  ]                   │
│                                         │
│  ────────────────────────────────────   │
│                                         │
│  应用名称: MyAwesomeApp                  │
│  设备数量: 25 台设备                     │
│                                         │
│  🔍 搜索设备 UDID                        │
│                                         │
│  1. 00008030-001234567890001E  [📋]     │
│  2. 00008030-001234567890002E  [📋]     │
│  3. 00008030-001234567890003E  [📋]     │
│  ...                                    │
│                                         │
│           [ 导出列表 ]                   │
└─────────────────────────────────────────┘

🔧 技术实现

核心技术栈

  • Swift - 主要开发语言
  • SwiftUI - 用户界面框架
  • Foundation - 文件处理和数据解析
  • UniformTypeIdentifiers - 文件类型识别

工作原理

  1. IPA 文件解压

    • IPA 文件本质上是 ZIP 压缩包
    • 使用 /usr/bin/unzip 命令解压到临时目录
  2. 定位 Provisioning Profile

    • 在 Payload/*.app/ 目录下查找 embedded.mobileprovision
  3. 解析 Provisioning Profile

    • 方法 1:使用 security cms -D 命令解密 CMS 签名
    • 方法 2:手动提取内嵌的 XML plist 数据
    • 解析 PropertyList 获取 ProvisionedDevices 数组
  4. 展示结果

    • 提取设备 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
}

🤔 常见问题

为什么提示"未找到设备列表"?

可能的原因:

  1. App Store 版本 - App Store 分发的应用不包含设备列表
  2. 企业签名 - 企业分发证书没有设备限制
  3. 文件损坏 - IPA 文件可能不完整或损坏

支持哪些 IPA 文件?

  • ✅ Ad Hoc 分发(包含设备列表)
  • ✅ Development 开发版本
  • ❌ App Store 版本(无设备限制)
  • ❌ Enterprise 企业版(无设备限制)

数据安全吗?

  • ✅ 所有处理都在本地完成
  • ✅ 不上传任何数据到服务器
  • ✅ 临时文件使用后自动删除
  • ✅ 完全开源,代码透明

🛠️ 开发计划

  • 支持批量处理多个 IPA 文件
  • 添加设备信息详情(设备名称、型号等)
  • 支持导出为 CSV/JSON 格式
  • 添加设备 UDID 验证功能
  • 支持从 App Store Connect 导入设备列表对比
  • 添加深色模式优化
  • 国际化支持(英文、日文等)

🤝 贡献指南

欢迎贡献代码、报告问题或提出建议!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

代码规范

  • 使用 Swift 官方代码风格
  • 遵循 SwiftUI 最佳实践
  • 添加必要的注释说明
  • 确保代码通过编译且无警告

📝 更新日志

Version 1.0.0 (2025-11-14)

  • 🎉 首次发布
  • ✨ 支持拖放导入 IPA 文件
  • ✨ 自动提取设备列表
  • ✨ 搜索和过滤功能
  • ✨ 单独复制和批量导出

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件

👨‍💻 作者

Your Name

🙏 致谢

  • 感谢所有为本项目做出贡献的开发者
  • 感谢 Apple 提供优秀的开发工具和框架
  • 灵感来源于日常开发中的实际需求

⭐ 支持项目

如果这个项目对你有帮助,请给个 Star ⭐️ 支持一下!


Made with ❤️ for iOS Developers

About

IPA Provisioned Devices Extractor 是一款轻量级的 macOS 原生应用,帮助开发者快速提取 iOS 应用(IPA 文件)中的 Provisioned Devices 列表。无需命令行操作,只需简单拖放即可完成。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages