如何协同设计自动生成的 iOS 应用程序?
Posted
技术标签:
【中文标题】如何协同设计自动生成的 iOS 应用程序?【英文标题】:How to codesign automatically generated iOS apps? 【发布时间】:2011-05-04 04:59:28 【问题描述】:您好,
我正在编写一个 Web 服务器脚本,让您可以创建自定义 ios 应用程序(主要是交换徽标和其他一些东西)。 Web 服务器自定义了之前上传的“shell”.ipa 并重新压缩整个容器以将其发送到用户的浏览器。即:我们在web服务器上自定义一个之前上传的.ipa,让用户下载提交到App Store。
下一步将重新设计整个 .ipa - 因为我们更改了 .IPA 内容并且用户必须使用自己的签名身份 - 这样他才能真正将其上传到 App Store。
据我了解,有一个“CodeResources”文件,其中包含捆绑中每个资源文件的某种散列,并且可执行文件还包含某种嵌入式签名。要生成这些,您必须使用用户计算机上的“代码设计”实用程序,然后使用 Application Loader 将其提交到 App Store。到目前为止正确吗?
我想知道的是:
-
有没有办法在服务器上对 .ipa 进行共同签名(让用户预先上传他的证书),这样他就没有任何额外的工作要做?
如果 1) 不可能,是否有某种工具可以轻松地重新设计 .ipa? Xcode 似乎需要一些项目设置工作来做一些代码签名——如果可能的话。
是否有任何替代方法可以为用户共同设计 .ipa 文件 - 可能无需手动手动完成?
提前致谢!
【问题讨论】:
【参考方案1】:Xcode 使用codesign
命令行实用程序来创建 CodeResources 文件夹和数字签名,您可以自己调用它来签署 Xcode 之外的应用程序包。如果服务器运行 Mac OS X,您可能可以在服务器上自动执行此操作;如果您真的很聪明,您也许能够弄清楚如何使用openssl
自己创建签名(签名证书等都是标准的东西)。或者,如果您可以指望用户安装了开发工具,请为他们提供自动签名的应用。
这里是a blog entry describing some of the process(虽然用例有点不同)。
【讨论】:
我也在寻找创建自定义应用程序并自动创建 IPA,例如替换图标、启动画面、应用程序名称、存档应用程序、获取 IPA。你能给我一些信息/博客/教程如何以及从哪里开始吗?【参考方案2】:我不喜欢回答我自己的问题,但我想在这么久之后关闭它。
我们最终使用 Xcode 的目标和方案来简化许多不同应用程序的生成。由于我们拥有合理数量的应用变体,因此目前看来还可以。
代码签名一团糟,Apple 不断改变其背后的技术流程 - 所以它是一个移动的目标,需要大量的黑客攻击和试错工作。
【讨论】:
badcat,我目前正在做与您的项目类似的事情,想知道您是否可以分享一些见解。 事实证明,最终我设法找到了使用codesign
命令行工具的方法。主要问题是没有正确解压缩/压缩 IPA 存档,这导致符号链接损坏,并最终导致在设备上进行代码签名和安装期间出现错误。我最终可能会为此写一篇博文/指南。
是的,Codesign 命令行工具确实有效(一直在使用它)。我遇到的问题是配置文件。我在没有 CodeSigning 且不使用 Provisioning 配置文件的情况下构建了一个 .app 文件,后来我对该 .app 文件进行了一些自定义,Apple 允许您的 CodeSign 一个 .app 文件,但没有用于将 Provisioning 配置文件应用于现有的命令行工具.app 文件,除非您将其复制到目录中。很抱歉这么长的评论,但是,我已经研究这个话题一段时间了,而且至少在我看来,你是唯一一个对此表达过类似处理的人。
在我的例子中,我们只是将配置文件放入包中,并为其命名为“embedded.mobileprovision”。但这还不是全部,因为您似乎需要生成另一个名为“Entitlements.plist”的文件,其中包含来自供应配置文件的权利元素的数据,并且在签名时需要使用--entitlements
调用代码设计。希望对您有所帮助。
@badcat 我也在寻找创建自定义应用程序并自动创建 IPA,例如替换图标、启动画面、应用程序名称、存档应用程序、获取 IPA。你能给我一些信息/博客/教程如何以及从哪里开始吗?以上是关于如何协同设计自动生成的 iOS 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
接口自动化之协同办公自动化平台二(ScriptManagement)
iOS 自动布局:如何在 Xcode 故事板中为 iPad 横向和 iPad 纵向设计不同的布局?