SuperAPI AI 工具集

ios-app-scaffold

编程与开发

查看项目

更新于 10-16 05:36

技能介绍

iOS App Scaffold 是一个用于快速创建 iOS 应用项目的脚手架工具,基于 Tuist、Swift 6 和分层架构。它通过脚本自动生成项目结构,帮助开发者跳过繁琐的初始配置,直接进入业务开发。

用途

该工具主要用于:(1) 创建新的 iOS 应用项目;(2) 设置 Tuist 项目结构。它适合希望采用分层架构(Domain、Infrastructure、App)并集成 SwiftData 持久化的 iOS 开发者。

主要能力

  • 通过 Python 脚本一键生成完整的 iOS 项目骨架。
  • 生成分层架构目录:Domain(业务逻辑,无依赖)、Infrastructure(SwiftData 持久化实现)、App(SwiftUI 视图与应用入口)。
  • 自动创建 Tuist 配置文件(Project.swift、Tuist.swift)、.gitignore 和 README.md。
  • 包含测试目录(DomainTests、InfrastructureTests)。
  • 提供 XCConfig 文件管理构建配置(shared、debug、release)。
  • 支持通过 Project.swift 添加远程 Swift Package 依赖。
  • 版本号通过 Project.swift 的构建设置管理,Info.plist 引用构建变量。

使用方式

运行脚手架脚本:

python3 scripts/scaffold.py <AppName> <output-directory> [--bundle-id <id>] [--team-id <id>]

示例:

python3 scripts/scaffold.py MyApp /Users/me/projects --bundle-id com.mycompany.myapp --team-id ABC123

然后生成并打开项目:

cd /Users/me/projects/MyApp
tuist generate
open MyApp.xcworkspace

生成的结构包括:

  • Sources/App/:SwiftUI 视图、应用入口、资源、XCConfig、Info.plist、AppNameApp.swift
  • Sources/Domain/:Models、Protocols(@Mockable 仓库接口)、Utils
  • Sources/Infrastructure/Local/:SwiftData 仓库实现
  • Tests/:DomainTests、InfrastructureTests
  • Project.swift、Tuist.swift、.gitignore、README.md

脚手架生成后,可替换示例文件(Example.swift、ExampleRepository.swift、LocalExampleRepository.swift),添加领域模型、定义协议、实现持久化、构建 UI。

添加依赖:编辑 Project.swift 的 packages 数组,例如:

packages: [
    .remote(url: "https://github.com/Kolos65/Mockable.git", requirement: .upToNextMajor(from: "0.5.0")),
],

然后在目标依赖中添加:

dependencies: [
    .package(product: "PackageName"),
]

版本管理:在 Project.swift 的构建设置中修改 MARKETING_VERSION 和 CURRENT_PROJECT_VERSION。

XCConfig:编辑 Sources/App/Resources/XCConfig/shared.xcconfig 可自定义 PRODUCT_BUNDLE_IDENTIFIER、DEVELOPMENT_TEAM、IPHONEOS_DEPLOYMENT_TARGET 等。

适用场景

  • 需要快速启动新的 iOS 应用项目。
  • 希望采用分层架构(Domain、Infrastructure、App)组织代码。
  • 使用 Tuist 管理 Xcode 项目。
  • 需要集成 SwiftData 进行本地持久化。
  • 希望使用 @Mockable 协议进行测试驱动开发。

限制

  • 资料中未提供对具体平台版本、系统要求或兼容性的详细说明。
  • 未提及收费、价格或授权信息。
  • 未提供除 Tuist、Swift 6、SwiftData 之外的其他技术栈支持说明。
  • 未说明脚本运行的环境依赖(如 Python 版本、Tuist 版本要求)。