Tag: 界面 构build器

须藤save_time

“时间是我们最想要的,但我们最浪费的是” ― 威廉·佩恩 在我们开始之前… 每个开发人员迟早都必须打开Safari并键入https://itunesconnect.apple.com来设置要通过AppStore分发的应用程序。 但是恰好在登录iTunes后,您将了解,应该首先设置开发人员帐户。 并且自开始以来,您将看到更多应执行的其他步骤: 创建一个applicationID 生成证书(用于开发和分发) 设置应用程序功能(例如,推送—通知) 生成一组配置文件以及更多 即使完成此操作,也应该管理所有创建的内容,与队友共享,考虑安全性等等。 是的,很多东西,我知道… “等等,我只想将我的应用程序发送到AppStore。 为什么不能只使用一个命令行命令?»。 实际上,它被称为Fastlane。 概述和要求 «fastlane —是一个用于iOS,Mac和Android开发人员的工具,用于自动化繁琐的任务,例如生成屏幕快照,处理配置文件和发布应用程序。»—这是您在git页面上看到的第一行(https: //github.com/fastlane/fastlane),这是100%正确的。 Fastlane是用Ruby编写的,它是一组或多或少独立的模块,已构建了其丰富的功能集。 它的结构很容易扩展,因为如果您想向系统添加一些新功能,则可以编写简单的Ruby脚本,并在现有的fastlane模块中使用它们,甚至可以向fastlane添加新模块。 Fastlane提供了一堆命令,可帮助自动执行应用程序部署,甚至执行不同的常见任务。 Fastlane是非常灵活且可扩展的工具。 目前,fastlane由200多个不同的模块组成。 我们将在下面列出最有用和最受欢迎的内容,并显示使用fastlane的iTunesConnect传递系统的基本设置。 由于我是iOS平台的软件开发人员,因此我们将深入探讨大多数适用于iOS开发人员的使用fastlane的过程,但是我敢肯定,此强大工具所支持的所有平台的主要步骤都相同。 适用于iOS的Fastlane需要安装以下工具: macOS X El Capitan或更高 Xcode-开发人员-适用于xCode 7或更高版本的工具 红宝石/酒(可选,推荐) textEditor🙂 快车道能为我们做些什么? 好吧,这个列表很大,包括很多东西: 交付:将屏幕截图,元数据和您的应用程序上载到App Store 供应:将您的Android应用及其元数据上传到Google Play 快照:自动在每台设备上拍摄您的iOS和tvOS应用程序的本地化屏幕截图 screengrab:自动在每台设备上拍摄Android应用的本地化屏幕截图 frameit:快速将屏幕截图放入正确的设备框架中 pem:自动生成和更新您的推送通知配置文件 感叹:因为您宁愿花时间在建物上,也不愿与资源调配作斗争 产生:使用命令行在iTunes Connect和Dev Portal上创建新的iOS应用 cert:自动创建和维护iOS代码签名证书 飞船:Ruby库可访问Apple Dev Center和iTunes Connect […]

在单个版本中启动多个模拟器-XCode 9和XCode 10

iOS开发人员面临的主要挑战之一就是要在所有可用的iPhone屏幕尺寸上测试自动布局。 如今,如果您遵循Apple的建议以支持iOS 10以后的所有设备,则必须以至少5种屏幕尺寸显示布局: iPhone SE iPhone 6 / 6s / 7/8 iPhone 6 / 6s / 7/8 Plus iPhone X / XS iPhone XS最大 对于所有这些屏幕尺寸,我们必须确保布局适合其中每个尺寸。 但是由于要实例化不同的模拟器大小以测试布局,因此此任务很痛苦。 这就是为什么此脚本可以帮助您节省大量时间的原因。 #创建一个自定义模拟器 首先,我们必须创建一个新的模拟器,该模拟器将在构建项目时一起启动所有模拟器。 为此,请转到Products -> Scheme -> Edit Scheme 打开左侧菜单中的Build ,创建一个新的Pre-Aciton脚本并粘贴以下脚本 #创建模拟器列表文件 该文件将保存运行“ Custom Simulators模拟器时将启动的模拟器中的所有标识符。 在项目根目录下创建一个名为SimulatorsList.txt的文件,并列出要启动的所有模拟器标识符。 请注意,启动更多的模拟器会使用更多的内存和CPU。 要获取模拟器标识符,请打开您的终端并运行instruments -s devices 。 这将列出所有可用的模拟器及其各自的标识符。 它们将以以下格式显示: iPhone型号(iOS版本)[IDENTIFIER](仿真器) 我们只对模拟器标识符感兴趣,因此对于要同时启动的所有模拟器,将其标识符复制到方括号之间,并将其粘贴到SimulatorsList文件中,每行一个。 #创建运行脚本 最后一步是创建一个运行脚本,以在所选模拟器为“定制模拟器”时运行此最近创建的脚本。 选择项目目标,然后转到“ Build […]

处理缓慢的Swift构建时间

我们从2016年4月开始我们的项目,并决定将其作为纯粹的快速代码库。 随着项目的发展,越来越多的快速文件被添加,我们开始注意到构建时间约为2-3分钟。 几个月后,我们得知该项目将花费大约7分钟的时间来构建 。 到处搜寻,我们发现了一些有趣的链接。 使用适用于Xcode 7.3.1的出色的Xcode分析器插件,我们试图摆脱项目中的头号罪魁祸首,并合并了一些拉取请求,从而将构建时间减少了3–6秒。 但是这些PR并没有真正影响整个构建时间。 仍然花了7分钟才能完成。 我们希望当Apple发布swift 3时,在构建时间上也会有所改进。 尽管编译器有所改进,但在构建项目时我们并未真正注意到任何改进。 更糟的是,当Xcode 8.0发布时,它曾经进行了完全重新编译,而不是进行增量构建,因此更改任何文件中的简单常量都将触发整个项目的重建。 (此问题稍后在Xcode 8.2中修复) 由于进行了这些重建,团队中的开发人员感到沮丧。 再次谷歌搜索,我们想到了Stack Overflow上的这个宝藏。 解决方法以加快构建速度 事实证明,将此简单标志添加到我们的项目设置中,可将编译时间从7分钟减少到1分钟。 只需在“项目设置”中转到目标的“构建设置”,然后单击搜索栏左侧的+按钮即可。 选择添加用户定义的设置 并将此文本粘贴到文本字段中 SWIFT_WHOLE_MODULE_OPTIMIZATION 并将相应的值设置为YES(对于调试版本)和“ NO(否)”。 启用“整体模块优化”后,Xcode会将所有swift文件编译为一个大文件,而不是单独编译每个文件。 通常,您会注意到据说可以对发布版本启用“整体模块优化”,这是因为如果编译器可以一次看到所有文件,则可以推断出优化并将其应用于您的代码库。 因此,请确保针对发行版配置将此设置为“否”,然后上传到appstore,以便获得swift编译器可以提供的编译时间优化。 作为附带说明,您可以参考此答案以了解在xcode中构建项目所花费的时间。 结论 容易忘记,Swift才2岁,许多贡献者仍在努力构建这种语言。 尽管构建时间一直是造成挫败感的很大原因,但是“整体模块优化”技巧为我们节省了很多麻烦,并允许我们继续编写越来越多的快速代码。 在Twitter上关注Practo Engineering进行定期更新。 如果您喜欢这篇文章,请给我们鼓掌。 这将帮助其他中级用户找到它。 我们也在寻找kickass开发人员。 如果您有兴趣,请访问这里。

减少快速的应用程序构建时间和代码优化。

在处理基于大型产品的应用程序时,我发现应用程序需要花费更多时间来构建应用程序。 因此,我的下一个目标是减少构建以及代码优化。 就我而言,最初的目的是使用Build Time Analyzer for Xcode来识别并修复最耗时的区域。 如何为Xcode设置构建时间分析器。 转到此链接 ,下载或克隆项目。 之后,您只需要将该项目打开到xcode中,然后按CMD + B即可构建该项目。 构建完成后,您需要存档构建。 归档完成后,您需要导出此构建,并选择选项“ 导出为macOS App” 。 现在将其保存在您的位置并打开该文件夹并安装应用程序。 那个 现在最大的问题是此应用程序如何识别我们的应用程序并生成分析报告。 遵循此指示 我们在应用程序上添加自定义标志。 1.选择目标,然后转到Build Settings-> Swift Compiler-> Other Swift Flags并添加此代码-Xfrontend -debug-time-function-bodies。 确保将以下标志添加到目标的“构建设置”。 2.清理项目(CMD + Shift + K) 3.构建您的项目(CMD + B),然后等待它完成。 构建完成后,转到“ 构建时间分析器应用程序” ,然后单击您的应用程序。 现在,您可以查看Build Time Analyzer App生成的报告,并分析哪些功能和代码需要花费更多时间。 基于此,您可以优化代码并减少构建时间。 确保您遵循的是正确的快速语法格式。 另外,您需要使用耗时较少的功能。 例:- 使用if-else语句的保护瞬间。 谢谢 希望您今天学到了新东西。 请享用!! […]

XcodeのRun Scriptフェーズを无效にしてビルド时间を短缩する(スクリプト付き)

私が担当しているiOSアプリをXcodeでビルドすると,CarthageやCocoaPodsであわせて50が必要なくても49秒かかっていました。 RunのRun Scriptフェーズを実行しないようにして,ビルド时间が35秒短缩されました。 RunのRun Scriptフェーズは一度実行すればDerivedDataを削除したりフレームワークを追加・削除したりしない限り実行する必要はありません。ですのでそのフェーズを実行しないように设定することでビルド时间を短缩すること(CocoaPods1.2.0では代码签名をパラレルに実行できるようになるようなので,效果は小さくなると思いますが) 具体的には运行脚本フェーズの只有安装设定をオンにするとArchiveのときのみ実行されるようになります时才运行脚本。しかし常にオンにしておくとCIでの実行などで问题が発生します。また,手动でオン・オフを切り替えるのは面倒です。ですので切り替えるためのスクリプトを作成しました。 xcodeprojというGemが必要です。CocoaPodsをインストールしてある场合は既に入っています。 使い方はこのスクリプトに実行権限を与えて以下のように実行します。 change_run_only_installing.rb –only –project = MyProject.xcodeproj –target = MyTarget –phases =’迦太基复制框架’,'[CP]嵌入式容器框架’,'[CP]复制容器资源’ MyProject.xcodeproj,MyTarget,“迦太基复制框架”,“ [CP]嵌入荚框架”,“ [CP]复制荚资源”は自分の环境に合わせて変更してください。 – 只要 がオ指定すると仅在安装がオンになり,时运行脚本 -仅 を指定するとオフになります。 frのコマンドのエイリアスを作成したりAlfredから简単に実行するようにすると良いと思います。 をとgitフックを利用することでオフにすることが出来るかもしれませんが,それは试してません。 のスクリプトに问题を発见したら変更リクエストをお愿いします。

TestFlight公共Beta链接。

通过TestFlight,可以轻松邀请用户测试您的应用程序并收集有价值的反馈,然后再在App Store上发布您的应用程序。 仅使用他们的电子邮件地址或公共邀请链接,您最多可以邀请10,000名测试人员。 之前: 获取UUID,然后共享一个测试版 在iTunesConnect中将用户添加为测试者并共享邀请。 现在: TestFlight使它更简单,因此请使用它。 优点- 您可以使用单个网址将构建共享给任何iPhone用户 通过Beta版获得反馈。 随时禁用链接。 链接有效期为90天 。 登录到iTunes Connect 在以下URL的帮助下 https://itunesconnect.apple.com/login 2.转到MyApps部分 3.选择要与测试人员共享的应用程序。 4.现在转到TestFlight部分 5.现在您将看到所有测试人员,在那里您将找到2个选项。 !)测试仪 !!)建立 现在选择构建。 点击后,您将看到以下弹出窗口 只需选择构建并启用它即可。 添加构建以进行测试后。 现在,您只需要启用公共链接。 并随时随地共享该链接。 如果要禁用该链接,只需在同一位置将其禁用。 URL将变为无效,没有人可以利用URL下载该应用程序。 因此,用户将不再可以访问此链接。 就是这样。 请随时添加评论(如有)。 随时通过Twitter @ jitendradeore5与我联系

放大到界面生成器

嗨,我只是一个简单的问题,我有一个30英寸的显示器,当Xcode的IB部分打开的时候,iPhone屏幕上的矩形看起来很小,而且周围的空间被浪费了。没有真正使尺寸更大?

你可以有两个不同的目标同名的ViewController的实现?

(这是一个非常大的项目的简单描述) 我有一个有两个目标的XCode项目。 两个目标之间的唯一区别是每个目标都有一个不同的视图控制器实现。 视图控制器有一个xib,只是一个简单的视图,里面有一个UITextView。 我们称之为TextReportViewController。 实现“A”有打印,所以它有一个button,允许您打印UITextView的内容。 这是在一个名为“A”的组。 实现“B”有电子邮件,所以它有一个button,允许您通过电子邮件发送UITextView的内容。 它在一个叫“B”的小组里。 目标“A”在其“编译源”中包括来自组“A”的.m文件,并且“复制软件包资源”从组“A”获取xib。 目标“B”在其“编译源”中包括来自组“B”的.m文件,并且“复制软件包资源”从组“B”获取xib。 我在“A”之后加了“B”,也就是说,在我决定让另一个目标与“A”一起工作之前。 当我编辑“B”xib文件,并检查“文件的所有者”,并在身份检查员,我点击自定义类types的箭头去“A的”.m文件,而不是“B的”.m文件。 当我看着文件所有者的出口时,它是“A”和“B”的出口的组合。 我向“B's”xib添加了一个控件,并在助理编辑器中显示了“B's”.h文件,然后拖动一个button创build一个IBOutlet,并将其放入“A's”.h文件中。 我需要做些什么来确保目标A使用的是.h文件和xib文件,目标B是使用B的.h文件和xib文件。 请注意,当我添加目标“B”时,它创build了一个名为“B”的文件夹。 所以这些文件就像这样: 根: TextReport: TextReportViewController.m TextReportViewController.h TextReportViewController.xib B: TextReport: TextReportViewController.m TextReportViewController.h TextReportViewController.xib 另外,当我编辑“B”xib文件,并显示助手编辑器并select“自动”显示.h和.m文件时,它显示四个,两个.h文件和两个.m文件。

内部编译器错误:总线错误:10

我写了一个animation的代码,在屏幕上晃动一个UIImageView,但虽然语法看起来是正确的,但是在构build时,我却遇到了一个模糊的“ internal compiler error: Bus error: 10 ”。 任何想法为什么? -(IBAction)shakeCircle{ int d = 3; [UIView animateWithDuration:0.05 animations:^{myCircle.center = CGPointMake(myCircle.center.x+d, myCircle.center.yd);} completion:^(BOOL finished){ [UIView animateWithDuration:0.05 animations:^{myCircle.center = CGPointMake(myCircle.center.xd, myCircle.center.y+d);} completion:^(BOOL finished) { //but if I comment from here.. [UIView animateWithDuration:0.05 animations:^{myCircle.center = CGPointMake(myCircle.center.x+d, myCircle.center.yd);} completion:^(BOOL finished){ [UIView animateWithDuration:0.05 animations:^{myCircle.center = CGPointMake(myCircle.center.xd, myCircle.center.y+d);} ]; } ]; //… […]

自动布局约束的设备之间的间距不一致

蓝色button和屏幕右边缘之间的间距在iPhone 6(第一),iPhone 6 Plus(第二)和Interface builders表示之间都是不同的宽度。 他们都在小狗字以及电池图标上的不同位置。 打开全尺寸,看看更容易