从 iOS 应用生成 Xcode 项目

Generate Xcode Project from iOS App

有没有一种方法可以创建一个应用程序来生成一个 Xcode 项目,开发人员可以在 Xcode 中 运行。有点像代码生成器。我试图在网上寻找答案,但无济于事。我也不确定从哪里开始。基本上,该应用程序将生成 Xcode 兼容代码,开发人员可以使用这些代码打开 Xcode.

AppStore 中提供的具有相同功能的示例应用程序是 iOS 的界面。 Link: https://itunes.apple.com/en/app/interface/id360543182?mt=8

另一个例子是 Dapp the App Creator: https://itunes.apple.com/au/app/dapp-app-creator-make-learn/id370888555?mt=8

来自他们的应用说明:

Xcode 导出,将您的模型变成实时代码 我们基于云的免费 Xcode 导出服务只需轻轻一按即可将您的整个项目转换为 Xcode 项目。

Dapp 为您创建完整的 Xcode 项目 - 包括代码、图像、视频和 Xcode 故事板!

更新:我正在考虑在应用程序中包含示例 Xcode 项目模板文件的 zip 文件,该文件将生成模板项目将使用的代码,在模板项目中编辑或添加它们、压缩并通过 iTunes 文件共享导出到文档文件夹。

您发布的 link 应用仅用于创建模型。它不会生成代码。

不可能制作一个应用程序来生成稍后可以以某种方式导入 xcode 和 运行 的代码。

  1. 打开 Xcode,创建一个新项目,选择单视图应用程序(或最适合您要生成的项目)单击创建。

  2. 转到创建此项目的目录,将其压缩并将其包含在将执行生成的应用程序的项目中。

  3. 当需要生成代码时,第一步是创建一个工作目录并将项目解压到其中。

  4. 生成您的 类 等并将它们放入 AppDelegate.h 和从单视图应用程序模板为您生成的其他文件所在的目录中。

  5. 打开xcodeproj包,根目录下会有一个文件叫project.pbxproj,读入内存

  6. 修改 project.pbxproj 以包含生成的代码文件,将有一个名为 PBXFileReference 的部分,您可以在其中执行此操作。

这是我手头的一个项目中的示例 PBXFileReference 部分:

    /* Begin PBXFileReference section */
        DB6C03BA1B148F56007554E7 /* UIAlertController.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = UIAlertController.app; sourceTree = BUILT_PRODUCTS_DIR; };
        DB6C03BE1B148F56007554E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
        DB6C03BF1B148F56007554E7 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
        DB6C03C11B148F56007554E7 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
        DB6C03C21B148F56007554E7 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
        DB6C03C41B148F56007554E7 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
        DB6C03C51B148F56007554E7 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
        DB6C03C81B148F56007554E7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
        DB6C03CA1B148F56007554E7 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
        DB6C03CD1B148F56007554E7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
        DB6C03D31B148F56007554E7 /* UIAlertControllerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UIAlertControllerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
        DB6C03D81B148F56007554E7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
        DB6C03D91B148F56007554E7 /* UIAlertControllerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UIAlertControllerTests.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
  1. 将您的更改写入 project.pbxproj(我想可能不仅仅是 PBXFileReference,具体取决于您要实现的目标的复杂性)。

  2. 将项目的工作目录内容压缩并通过电子邮件或 UIDocumentInteractionController 将它们发送给用户。

这是一篇关于 pbxproj 文件的好文章:http://danwright.info/blog/2010/10/xcode-pbxproject-files/