Tag: Telestax

使用Travis CI连续部署iOS

在Telestax,我们相信持续集成与部署是我们生产的所有软件的组成部分。 随着我们的移动开源WebRTC SDK变得更加成熟,我们开始意识到,越来越多的时间花在了测试和部署的手动步骤上,而不是实际的开发上,现在是时候该死了,并引入CI / CD设施。 在本期中,我们将介绍如何使用Travis CI解决Restcomm Olympus应用程序的持续部署问题,该应用程序是我们在GitHub上托管的开源WebRTC Restcomm iOS SDK的一部分。 更具体地说,我们将: 构建并导出已签名的restcomm-olympus.ipa,并准备进行企业部署。 将restcomm-olympus.ipa上传到TestFairy Beta测试平台,以便我们的Beta测试人员和社区可以立即使用。 这说起来容易做起来难,所以让我们深入了解一下细节。 iOS签名简介 为了能够部署到任何物理设备,而不必每次我们要在新设备上进行测试时都必须更新配置文件,我们将使用企业分发。 这样就可以在Apple App Store外部自由分发App。 要构建以这种方式可分发的.ipa,构建过程分为两个步骤: 生成存档的存档构建步骤。 为此,您需要在CI服务器中安装“开发身份和开发配置文件” 导出步骤,用于对存档进行签名并生成可用于实际分发的.ipa。 为此,您需要在CI服务器中安装分发标识和分发配置文件 但首先.. 关于自动签名 从Xcode 8开始,随着自动签名的引入,很多地方在Signing区域中进行了更改,从而解决了过去的许多问题-请记住,如果以前使用的生成脚本可能会向后兼容,可以与Xcode 7一起使用。有关更多信息,我敦促查看有关该主题的Apple最新的WWDC会议。 另外,对于更技术性的方法,这是一个很好的阅读材料,它首先概述了Apple的代码签名机制,然后描述了Xcode 8中的更改。 我们将使用自动签名,我敦促您也这样做,因此,如果您还没有这样做,现在是升级到Xcode 8的好时机。对于新的Xcode 8项目,默认为自动签名,并且要求您执行以下操作。在创建项目时选择您的团队ID ,并自动为您设置签名身份和配置文件。 您可以在会员中心的“ Apple帐户会员”页面中找到您的团队ID: 如果您已经使用早期版本的Xcode创建了应用程序,则应导航至主要目标的“常规设置”,然后勾选“ 自动管理签名”: 再次,您将被要求输入团队ID,所有内容应自动为您处理。 在这一点上,需要指出的是, Apple并不真正支持在您无法访问UI和Xcode IDE的无头机器上进行构建 ,例如Travis CI的情况(不幸的是,这是我们从Apple那里得到的回应当我们针对某些问题提出技术支持事件时,我们就遇到了麻烦。 主要问题如下: 无法提供自动解决方案来解决有关身份和配置文件的问题(即只能从Xcode IDE中获得解决方案)。 您无法解决UI中显示的任何安全提示,例如在codesign步骤中授予访问权限。 但是不要害怕! 如果您确保在构建之前已安装了正确的身份和配置文件,并且已在脚本中采取了一些其他步骤来授权codesign在没有这些UI提示的情况下工作,那么一切都会正常进行。 我们将稍等一下。 请记住,这里的总体思路是,您首先必须在本地OS […]

在iOS上构建Fat WebRTC框架

通过提供适用于iOS,Web和Android的高级开源WebRTC SDK,Telestax致力于在开发WebRTC应用程序时尽量减少App&Web开发人员与Open Source Restcomm平台集成所花费的精力。 最大的挑战之一是为移动设备(尤其是iOS)正确捆绑WebRTC,它比Android更具限制性。 值得庆幸的是,在过去的几年中,这种情况已大大改善。 在本文中,我们将介绍一些构建iOS的WebRTC框架的最佳实践。 构建用于在iOS设备和模拟器上进行部署的通用(即Fat)框架并不总是那么容易。 在过去,您通常必须为每种体系结构分别构建一个静态库,然后将它们全部组合成一个通用库。 然后,您必须将头文件与lib捆绑在一起,以便iOS App能够正确利用WebRTC媒体工具。 这意味着需要时间和大量的精力来使一切正确。 我们可以花很多篇幅描述艰难的局面,但现在让我们关注一下。 现在,您可以自动创建iOS框架而不是静态库,这使得分发变得更加容易(因为标头被捆绑在一起),并且还配置了GN(WebRTC人们最近推出的新忍者生成器)使其通用从一开始。 无需进行多次迭代,每次迭代都针对一个体系结构,然后手动进行合并。 所以这里… 提取并同步 首先,您需要按照iOS的WebRTC官方指南的“获取代码”部分中所述获取和同步WebRTC代码,这应该非常简单。 用GN生成忍者文件 在这里,我们将与官方指南有所不同,因为我们的目标是: 一次构建多种架构 直接从命令行提出WebRTC框架 这是GN命令,用于组合我们所需的功能: $ gn gen out / Release-universal -args =’target_os =“ ios” target_cpu =“ x64” Additional_target_cpus = [“ arm”,“ arm64”,“ x86”] is_component_build = false is_debug = false ios_enable_code_signing = false’ 哪里: out / Release-universal是忍者文件的生成路径以及生成位置。 […]