- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这种类型的问题多年前就出现过有关 Objective C 开发的问题,但我对 Swift 特别感兴趣。
目标:
使用 VIM 编写 Swift 源代码(使用 Swift 语法插件)并编译原生 cocoa App( bundle ),类似于从 Xcode 创建简单的 cocoa 应用程序。
动机:
通过相当慢且有时不可靠的互联网连接下载 8GB Xcode 应用程序,再加上“更新时无法打开 Xcode”消息,这意味着我有几天时间来享受无 Xcode 的体验。
次要动机:
有时 Xcode 似乎在幕后执行隐藏的“魔法”,我总是打算深入研究“Xcode 真正在做什么”与“应用程序中有多少是框架与 Xcode/编译器魔法”。其中有许多子主题,例如:当我从各种来源下载较旧的示例项目时,Xcode 说 - 该项目需要使用较旧版本的 Xcode 迁移到较新版本的 Swift您不再需要迁移它。然而,这些项目主要是源代码和资源,当我构建一个空项目并复制源代码和资源时,它们通常可以正常工作(一旦修复了一些语法错误),这让我很好奇这些破坏交易的不兼容性是什么确实是。
我决定调查此问题的一种方法是:
进展:
我创建了一个默认的 cocoa mac 应用程序,它显示一个空窗口。这将创建以下项目文件:
basicProject/basicProject/AppDelegate.swift
basicProject/basicProject/basicProject.entitlements
basicProject/basicProject/Info.plist
basicProject/basicProject/ViewController.swift
basicProject/basicProject/Assets.xcassets/Contents.json
basicProject/basicProject/Assets.xcassets/AppIcon.appiconset/Contents.json
basicProject/basicProject/Base.lproj/Main.storyboard
basicProject/basicProject.xcodeproj/project.pbxproj
basicProject/basicProject.xcodeproj/xcuserdata/username.xcuserdatad/xcschemes/xcschememanagement.plist
basicProject/basicProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata
basicProject/basicProject.xcodeproj/project.xcworkspace/xcuserdata/username.xcuserdatad/UserInterfaceState.xcuserstate
basicProject/basicProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
在构建目录的顶层,我有:
someXcodeWorkDirectory/scm.plist
someXcodeWorkDirectory/OpenQuickly-ReferencedFrameworks.index-v1
someXcodeWorkDirectory/Logs
someXcodeWorkDirectory/TextIndex
someXcodeWorkDirectory/Index
someXcodeWorkDirectory/Build
someXcodeWorkDirectory/info.plist
我没有全部列出,因为这个空窗口项目大约有 1,800 个文件。
一些例子是:
./Index/DataStore/v5/records/61/NSHTTPCookieStorage.h-SNU4K7QOIQ61
./Index/DataStore/v5/records/61/mach_voucher_types.h-ZENRRUWBXU61
./Index/DataStore/v5/records/XH/SCSITaskLib.h-2051VDYD45GXH
./Index/DataStore/v5/records/XH/SCSICmds_REPORT_LUNS_Definitions.h-2H7QJ9X9DMJXH
./Index/DataStore/v5/records/21/NSResponder.h-3G5XCM1YTXX21
./Index/DataStore/v5/records/4D/NSBezierPath.h-2W852T4P4GT4D
./Index/DataStore/v5/records/4D/IOHIDLibObsolete.h-38UUUALWPN94D
./Build/Intermediates.noindex/basicProject.build/Debug/basicProject.build/all-product-headers.yaml
./Build/Intermediates.noindex/basicProject.build/Debug/basicProject.build/basicProject-all-target-headers.hmap
./Build/Intermediates.noindex/basicProject.build/Debug/basicProject.build/basicProject.hmap
我在寻找什么:
最佳答案
一个好的资源是Building from the Command Line: Technical Note 2339 . Xcode 所做的一切都是在命令行上完成的,您可以通过“报告导航器”看到这一点。您应该首先遵循 Apple 的文档来使用 Xcode 构建应用程序,因为有很多东西需要学习,并且 Apple 是基于您将使用 Xcode 的假设来解释这一切的。然后您可以在报告导航器中检查 Xcode 的命令。例如,如果您不使用 Xcode 的自动签名,则 CodeSigning 会很复杂。这就是他们制作该功能的原因。如果您手动生成目标包,这将很棘手,您需要成为代码签名方面的专家才能正确生成。
我理解您对彻底性的渴望,但我建议您重新审视一下您的目标。例如,如果您想以编程方式生成 UI,那么只需通过您在 Xcode 项目中编写的代码即可完成此操作,但不要使用 UI 生成器。如果你这样做是因为你想留在你喜欢的开发环境中,而不是学习 XCode,那么我认为它不会起作用。我认为 Xcode 应用程序命令行开发的主要用例是 devops 和构建测试工作,您需要在预先存在的企业构建/测试工具中运行内容。
也许最简单的事情就是像其他人一样使用 Xcode,然后在您喜欢的编辑器中编辑 Swift/Objective-C/C/C++ 文件,然后使用 XCode 完成其余的工作?用于 Swift 开发的最新、最流行的 Vim 包似乎是 https://github.com/keith/swift.vim .还有一个插件可以让 Xcode 使用 Vim 键绑定(bind),https://github.com/XVimProject/XVim2 ,尽管它是真正的 Vim 开发的一个发育不良的替代品。
关于ios - 不使用 Xcode 制作 Cocoa 应用程序,例如 : using VIM for editing and the Swift compiler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58967181/
我正在通过 labrepl 工作,我看到了一些遵循此模式的代码: ;; Pattern (apply #(apply f %&) coll) ;; Concrete example user=> (a
我从未向应用商店提交过应用,但我会在不久的将来提交。 到目前为止,我对为 iPhone 而非 iPad 进行设计感到很自在。 我了解,通过将通用PAID 应用放到应用商店,客户只需支付一次就可以同时使
我有一个应用程序,它使用不同的 Facebook 应用程序(2 个不同的 AppID)在 Facebook 上发布并显示它是“通过 iPhone”/“通过 iPad”。 当 Facebook 应用程序
我有一个要求,我们必须通过将网站源文件保存在本地 iOS 应用程序中来在 iOS 应用程序 Webview 中运行网站。 Angular 需要服务器来运行应用程序,但由于我们将文件保存在本地,我们无法
所以我有一个单页客户端应用程序。 正常流程: 应用程序 -> OAuth2 服务器 -> 应用程序 我们有自己的 OAuth2 服务器,因此人们可以登录应用程序并获取与用户实体关联的 access_t
假设我有一个安装在用户设备上的 Android 应用程序 A,我的应用程序有一个 AppWidget,我们可以让其他 Android 开发人员在其中以每次安装成本为基础发布他们的应用程序推广广告。因此
Secrets of the JavaScript Ninja中有一个例子它提供了以下代码来绕过 JavaScript 的 Math.min() 函数,该函数需要一个可变长度列表。 Example:
当我分别将数组和对象传递给 function.apply() 时,我得到 NaN 的 o/p,但是当我传递对象和数组时,我得到一个数字。为什么会发生这种情况? 由于数组也被视为对象,为什么我无法使用它
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章ASP转换格林威治时间函数DateDiff()应用由作者收集整理,如果你
我正在将列表传递给 map并且想要返回一个带有合并名称的 data.frame 对象。 例如: library(tidyverse) library(broom) mtcars %>% spl
我有一个非常基本的问题,但我不知道如何实现它:我有一个返回数据框,其中每个工具的返回值是按行排列的: tmp<-as.data.frame(t(data.frame(a=rnorm(250,0,1)
我正在使用我的 FB 应用创建群组并邀请用户加入我的应用群组,第一次一切正常。当我尝试创建另一个组时,出现以下错误: {"(OAuthException - #4009) (#4009) 在有更多用户
我们正在开发一款类似于“会说话的本”应用程序的 child 应用程序。它包含大量用于交互式动画的 JPEG 图像序列。 问题是动画在 iPad Air 上播放正常,但在 iPad 2 上播放缓慢或滞后
我关注 clojure 一段时间了,它的一些功能非常令人兴奋(持久数据结构、函数式方法、不可变状态)。然而,由于我仍在学习,我想了解如何在实际场景中应用,证明其好处,然后演化并应用于更复杂的问题。即,
我开发了一个仅使用挪威语的应用程序。该应用程序不使用本地化,因为它应该仅以一种语言(挪威语)显示。但是,我已在 Info.plist 文件中将“本地化 native 开发区域”设置为“no”。我还使用
读完 Anthony's response 后上a style-related parser question ,我试图说服自己编写单体解析器仍然可以相当紧凑。 所以而不是 reference ::
multicore 库中是否有类似 sapply 的东西?还是我必须 unlist(mclapply(..)) 才能实现这一点? 如果它不存在:推理是什么? 提前致谢,如果这是一个愚蠢的问题,我们深表
我喜欢在窗口中弹出结果,以便更容易查看和查找(例如,它们不会随着控制台继续滚动而丢失)。一种方法是使用 sink() 和 file.show()。例如: y <- rnorm(100); x <- r
我有一个如下所示的 spring mvc Controller @RequestMapping(value="/new", method=RequestMethod.POST) public Stri
我正在阅读 StructureMap关于依赖注入(inject),首先有两部分初始化映射,具体类类型的接口(interface),另一部分只是实例化(请求实例)。 第一部分需要配置和设置,这是在 Bo
我是一名优秀的程序员,十分优秀!