• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何通过命令行在 Xcode 中登录 Apple ID?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 05:23:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我继承了一个 Xcode 设置,它构建了一个使用自动签名进行开发构建的 iOS 应用程序。我现在的任务是为这个项目构建一些 CI 设置,但不改变实际的 Xcode 项目。这意味着我暂时无法切换到手动签名。

由于项目在本地构建良好,我没想到这会成为一个大问题,但事实证明,自动签名(显然,事后看来)需要将您的 Xcode 登录到 Apple ID(Xcode => Preferences => Accounts) 应该用于自动创建证书。

有没有办法通过命令行将 Apple ID 添加到 Xcode?


这是我已经做过的:

我已经环顾四周,但无法通过 Google 找到任何明显的答案。 StackOverflow 上的所有问题和答案总是提到“只需快速打开 Xcode 并输入您的凭据”,遗憾的是这不适用于我们的 CI 设置。

我找到了 this Jenkins "Xcode Plugin"这使您可以导入可以从 Xcode 导出的 .developerprofile。但是我的 Java 真的很生疏,我无法完全理解这是否“仅”导入配置文件和身份,或者帐户列表。

我自己玩了一个 .developerprofile,它似乎在 .zip 文件中包含了帐户信息(以及所有证书等),因此您可以提取文件。这还包括 accounts.keychainaccounts.plist,但它们都用密码加密 - 我不知道如何使用它来获取真实数据在那里进一步调查。

如果您添加一个新的 Apple ID,我还试图找出 Xcode 最初保存信息的位置:它似乎将帐户名和密码以及一些 token 放入您的“登录”(com.apple. gs.xcode.auth.com.apple.account.AppleIDAuthentication.token)和“iCloud”钥匙串(keychain)(Xcode-AlternateDSIDXcode-Token)。我也无法手动重新创建钥匙串(keychain)访问中的现有条目,因为“访问控制”->“此项目的访问组:”在手动创建应用程序密码时总是不同的。将项目复制到要导出的新钥匙串(keychain)中也不起作用,因为 iCloud 钥匙串(keychain)不允许我将内容复制到新钥匙串(keychain)(即使在 iCloud 中禁用钥匙串(keychain)同步后,所以钥匙串(keychain)被命名为“本地项目”)。



Best Answer-推荐答案


首先,我不确定您尝试做的事情是否是一个好主意。

请记住,如果您要将 Xcode 设置为在每次构建时自动请求 iOS 开发人员证书,并且该构建在不同的机器上执行(例如,托管 CI,例如 Travis 或 Azure Pipelines ),您的 iOS 开发者证书将被吊销并重新生成每次

更好的选择(在我看来)是通过您的开发人员配置文件导出您的 iOS 开发证书和配置文件,并在您的构建环境中导入开发证书和配置文件。然后,如果需要,更新您的 Xcode 项目以使用您刚刚导入的证书和配置文件。

我认为 FaSTLane 已经可以做到几乎所有这些。如果你正在寻找灵感,Azure Pipelines 具有类似的功能。有一个任务installs a provisioning profile , 其中一个 installs a certificate和一个 builds an Xcode project and allows you to override the certificate and provisioning profiles used when signing your product .


话虽如此,accounts.plistaccounts.keychain 可能包含您要查找的信息。这两个文件都使用 AES 加密。

用于加密文件的 key 是使用 PBKDF2(Password-Based Key Derivation Function 2)从密码导出的,使用这些参数:

  • 哈希函数:SHA256
  • 密码:您的密码
  • Salt:密码的字节表示,使用 UTF8 编码
  • 哈希迭代次数:33333
  • key 长度:10

“魔数(Magic Number)”是 Apple 的 SecKeyDeriveFromPassword 函数使用的默认值,as described hereimplemented here

获得加密 key 后,您可以解密文件。您需要一个初始化向量 (IV),这也是 Apple 使用的默认值 - 一个 16 字节的数组,完全由零组成。

在 C 语言中,您应该能够使用这样的代码来生成加密 key :



要解密数据,请使用:



希望对你有帮助!

关于ios - 如何通过命令行在 Xcode 中登录 Apple ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54787309/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap