专业IOS签名团队
闪电售后,性价比秒杀上架,快速上线、测试
提供 iOS 企业证书签名服务,让您的 iOS App 无需提交 App Store 或设置
UDID 即可在iPhone、iPad 等设备上直接安装,帮助您快速完成应用内测
过程,降低测试成本,缩短上线时间。

在没有Xcode的情况下重新iOS签名应用程序

2019-06-20 08:07 栏目:ios签名 查看()

如果您进入任何类型的iOS开发,您可能会花费大量时间使用.ipa文件,代码签名权利,配置文件和开发证书。如果您的体验与我们的体验一样,有些日子代码签署过程一直是一个令人头痛的问题(从我们不时在Twitter上看到的抱怨来判断,我们知道这对其他人来说也是如此) 。有时似乎只是简单地更新供应配置文件所需的时间比你应该浏览Xcode提供的关于代码签名和权利的神秘错误消息时要长。截止日期临近时,任何介于你和你的最终交付物之间的东西都是不必要的压力。我们希望与您分享我们工作流程中的快捷方式片段,这有助于我们在更新配置文件或诊断无效的权利错误等时节省时间。

iOS应用程序的结构

如果您不熟悉iOS开发,Mac包或一般的那种文件,您可能不知道从Xcode生成的.ipa文件实际上只是一个包含您的应用程序和iTunes信息的zip文件(例如iTunesArtwork)iTunes用于管理应用程序。您可以通过将扩展名更改为.zip或打开终端并运行来解压缩此文件

解压缩app.ipa -d app /

这会将ipa文件的内容解压缩到“app”目录。在此目录中,您将找到以下结构:

Payload目录中的.app文件实际上是一个文件扩展名的文件夹。您可以通过交替单击并选择“显示包内容”来打开它。在此文件中包含应用程序的所有资源(图像,HTML,视频等)和应用程序的已编译二进制文件。此文件中还有一个名为embedded.mobileprovision的文件。这是最初与应用程序一起打包的配置文件。安装应用程序时,iOS会自动在设备上安装此配置文件(如果设备上尚不存在配置文件)。配置文件是一个plist文件,它为您的应用程序指定了一些权限 - 最明显的是,它被配置为运行的设备(用于开发或临时版本)。如果您遇到未在设备上安装应用程序的问题,则可以通过在文本编辑器中打开文件并查找ProvisionedDevices密钥来验证嵌入式配置文件中是否包含UDID。

.app文件的最后一个组件是_CodeSignature文件夹中包含的代码签名。代码签名的目的是验证.app文件中的每个字节与它的创建者(由签名标识指定)签名时完全相同。即使用另一个图像交换图像(即使它具有相同的名称)也会使签名无效。对.app文件所做的任何更改都需要重新签名整个包。

权利文件

该权利的文件代码签名过程中使用到您的应用程序(如访问共享的钥匙圈)内指定特殊权限。大多数应用程序使用它来禁用该get-task-allow属性,并指定其他用户是否可以调试您的应用程序(例如使用Instruments)。权利文件实际上并不属于.app文件(它不应该是Xcode中的Copy Bundle Resources构建阶段的一部分),它仅在代码签名过程中使用。除非您要使用推送通知,iCloud存储或钥匙串共享,否则您不需要使用开发配置文件进行开发构建的权利文件 - 要启用这些功能,您必须在代码签名期间指定权利文件。不要忘记您的权利文件还必须包含application-identifier 密钥(例如123456789.com.floatlearning.app)。

重新签署申请

您可能会问为什么要在Xcode之外修改.ipa。我们想要做的原因有几个:第一,更新mobileprovision文件。有时我们会想要将UDID添加到应用程序的配置文件中。我们可以简单地换掉embedded.mobileprovision文件,而不需要通过Xcode重建应用程序。此外,我们将不时遇到一个问题,客户端可能会收到错误“可执行文件已使用无效授权进行签名。”这是在开发过程中早期发生错误的结果(例如,忘记更新application-identifier在更改捆绑包标识符后的权利文件中),但它很容易修复,无需重建整个应用程序。如果你真的想要,你甚至可以更新Info.plist文件(例如更改包标识符)。

当您安装Xcode开发人员工具时,它包含一个名为codesign(/ usr / bin / codesign)的应用程序。这是Xcode和Xcode Organizer用于在构建应用程序后对其进行签名的应用程序。我们可以在更改捆绑资源或想要修改代码签名期间使用的权利后,使用此应用程序替换现有代码签名。您可以man codesign用来获取可用的所有可能参数的描述,但我们将调出我们关心的两个:

-F 此标志允许我们“强制”替换现有代码签名。如果我们不指定-f,则代码签名过程将在代码签名已存在时退出。

-entitlements =路径 此标志指定用于代码签名的权利文件。

我们的签名快捷方式脚本

更新配置文件或已编译应用程序的权利时,我们发现自己一遍又一遍地重复相同的步骤:解压缩文件,替换embedded.mobileprovision文件,重新签名.app文件,并打包备份.ipa 。只是简单地通过Xcode就不会节省任何时间 - 所以我们写了一个小的bash脚本。

此脚本将使用已签名或未签名的应用程序(.ipa或.app),对其进行签名,然后将其打包到新的.ipa文件中。

./floatsign source identity -p“path / to / profile”-e“path / to / entitlements”target

资源 需要签名的.ipa或.app文件。

身分 要使用的代码签名标识的名称(例如iPhone开发人员:Daniel Pfeiffer(ABC1234567))。

这是Apple提供的开发/分发证书。您可以通过查看Keychain Access找到此证书的通用名称(我们发现通过单击左栏中的“我的证书”来过滤列表很有帮助)。

目标 新签名.ipa文件的目标。

这可能不会涵盖签署iOS应用程序的所有可能要求,但它在我们的开发过程中非常有用,我们希望您也发现它也很有帮助。如果您对脚本进行了任何改进,请在评论中告知我们或在Github上发出Pull请求!

如果你不是终端类型,Brian Gorby已经为Mac创建了一个Droplet应用程序AppResigner,它可以做同样的事情(但是只有.app文件;你会有如果您只有.ipa文件,请自行解压缩并自行压缩)。

扫二维码与IOS签名经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/ios企业签名咨询/签名价格咨询/技术建议/互联网交流

上一篇:ios签名的包支持推送功能吗?

下一篇:使用iOS签名应用配置文件来阻止您的应用过期

郑重申明:IOS企业签名以外的任何单位或个人,不得使用该案例作为工作成功展示!
  • 咨询QQ:1602927038
    邮箱:1602927038@qq.com
    工作时间:08.30-23.30
友情链接: ios企业签名 微构网
Copyright © 2017-2019 www.wegto.com.版权所有  鄂ICP备19007640号-1    苹果企业签名  苹果签名  ios企业签名  
点击这里给我发消息