代码之家  ›  专栏  ›  技术社区  ›  Guillaume

用于签署iPhone应用程序的配置文件的名称?

  •  4
  • Guillaume  · 技术社区  · 15 年前

    我写了一个脚本 xcodebuild 生成iPhone应用程序的临时构建。

    我想编辑此脚本以输出 配置配置文件 用于签署生成。
    这将允许我在自动生成的zip中包含配置配置文件。通过这种方式,我可以自动将存档发送给临时测试人员,并确保他们具有安装应用程序的正确配置文件。

    有什么办法吗 提取用于对应用程序进行签名的配置文件名或文件 :

    • 来自已生成并签名的应用程序
    • 从xcode项目(我不想手动解析project.pbxproj文件,因为此解决方案可能会在下一次xcode更新中中断)
    • 任何其他可编写脚本的方法

    不饶恕的 suggested 使用命令 security 获取用于签署应用程序的证书的名称。一旦您有了这些信息,是否有任何方法可以找到配置文件的名称?


    以下是我的尝试:

    遗憾的是,生成期间xcodebuild的输出不包含此信息。在代码签名步骤中,有一行:

    /usr/bin/codesign -f -s "iPhone Distribution: My name" ...

    但我不能把这个和证书匹配。

    我研究了使用代码符号和命令

    /usr/bin/codesign -d -vvv --entitlements - -r - /Users/lv/Desktop/TicTacBoo.app/TicTacBoo
    看起来很有希望,但它没有提供我需要的信息。
    我也没有在xcodebuild中找到任何有用的选项。
    3 回复  |  直到 15 年前
        1
  •  6
  •   Jon-Eric    15 年前

    设置配置文件已经 在里面 应用程序。在zip文件中不需要另一个副本(除非测试人员不了解如何在应用程序内部使用该副本)。

    它的名字 YourApplication.app/embedded.mobileprovision

    这并不能回答您的问题,因为原始文件名丢失了,但是它似乎确实解决了您的更大问题。

        2
  •  2
  •   Massimo Cafaro    15 年前

    您可以从终端使用“security”(安全)命令;不幸的是,至少在我的MBP和Snow Leopard上,它似乎会导致您需要发出的其中一个命令出现分段错误。有关更多信息,请从终端发出

    man security
    

    无论如何,假设您的开发/生产证书存储在登录密钥链中,您可以尝试以下操作:

    security unlock-keychain login.keychain;
    security find-certificate -a -c "iPhone Distribution: Your name"  -p > cert.pem;
    

    第二个命令导致分段错误(由-c参数引起),但它应该正好是您需要的。或者,您可以使用

    security find-identity -p codesigning -v;
    

    要获取所有可用于对应用程序进行代码签名的有效证书的列表。 对于每个证书,输出还包含sha1消息摘要,这样您就可以轻松地在与“iphone distribution:your name”关联的sha1摘要匹配的密钥链中搜索证书。但是,这要求您使用keychain API编写自己的应用程序。

    如果这在您的Mac上有效,或者您遇到相同的分段错误问题,请通知我。

    :我已经在其他机器上验证了这个bug,并向苹果提交了一个bug。

        3
  •  0
  •   David Gelhar    15 年前

    在(已构建应用程序的)codesignature/coderesources plist文件中查找“mobileprovision”类型的文件如何?

    下面是一种使用默认值(1)读取plist文件的方法。您必须将coderesources文件复制到后缀为“.plist”的文件中,以使默认值保持快乐…

    cp /build/Distribution-iphoneos/MyApp.app/_CodeSignature/CodeResources /tmp/defaults.plist
    defaults read /tmp/defaults files |grep .mobileprovision |grep -v embedded.mobileprovision
    

    (在我的测试用例中,有2个mobileProvision条目;忽略名为“embedded.mobileProvision”的条目)