Skip 是一种使用 Swift 创建双平台移动应用的技术。阅读这篇介绍以了解更多关于 Skip 的信息。
这个仓库托管了 Skip 开发工具链,也称为 SkipStone。它还托管了 Skip 论坛,用于一般讨论以及特定的问题和错误报告。
Skip 需要一台安装了 Xcode 15、Android Studio 2023 和 Homebrew 的 macOS 13 开发机器。
通过运行以下终端命令安装 Skip:
brew install skiptools/skip/skip
这将下载并安装 skip 工具本身,以及构建和测试应用程序 Kotlin/Android 端所需的 gradle 和 JDK 依赖项。注意:如果 你的机器上还没有安装兼容的 JDK+,你可能需要输入管理员密码来完成安装。
通过运行以下命令确保满足开发先决条件:
<img alt="终端 skip checkup 命令输出的截图" src="https://yellow-cdn.veclightyear.com/835a84d5/05fc05fc-c22d-4041-8b3a-edd201169017.png" style="width: 100%;" />skip checkup
如果检查通过,你就可以开始使用 Skip 进行开发了!
使用以下命令创建新的应用项目:
skip init --open-xcode --appid=bundle.id project-name AppName
例如:
skip init --open-xcode --appid=com.xyz.HelloSkip hello-skip HelloSkip
这将创建一个 hello-skip/ 文件夹,其中包含一个新的 SwiftPM 包,包含一个名为 HelloSkip 的单一模块,以及名为 Darwin 和 Android 的文件夹和共享的 Skip.env 应用配置文件。Darwin 文件夹将包含一个带有 HelloSkip 目标的 HelloSkip.xcodeproj 项目,可以在 Xcode 中打开。
Xcode 将打开新项目,但在你可以构建和启动转译后的应用之前,需要运行一个 Android 模拟器。启动 Android Studio.app 并从欢迎对话框的省略号菜单中打开 Virtual Device Manager。从那里,Create Device(例如,"Pixel 6"),然后 Launch 模拟器。
一旦 Android 模拟器运行,在 Xcode 中选择并运行 HelloSkip 目标。第一次构建将花费一些时间来编译 Skip 库,你可能会看到一个对话框,确认你信任 Skip 插件。一旦构建和运行操作完成,SwiftUI 应用将在选定的 iOS 模拟器中打开,同时转译后的应用将在当前运行的 Android 模拟器中启动。
浏览到 ContentView.swift 文件,做一些小的修改并重新运行目标:应用将在两个平台上同时重新构建和重新运行,包含你的更改。
查看产品文档以获取有关使用 Skip 开发的更多信息。祝你使用 Skip 愉快!
Skip 设计用于适应和鼓励使用多模块项目。默认的 skip init 命令为简单起见创建单模块应用,但你可以通过在命令末尾指定额外的模块名称来创建模块化项目。例如:
skip init --open-xcode --appid=com.xyz.HelloSkip multi-project HelloSkip HelloModel HelloCore
这个命令将创建一个包含三个模块的 SwiftPM 项目:HelloSkip、HelloModel 和 HelloCore。这种模块创建的规则是,所有模块都依赖于其后续的对等模块,第一个模块(HelloSkip)最初依赖于 SkipUI,第二个模块依赖于 SkipModel,链中的最后一个模块依赖于 SkipFoundation。可以手动编辑 Package.swift 文件来重新安排依赖关系,或添加对外部 Skip 框架的新依赖,如新兴的 SkipSQL 或 SkipXML 库。
Skip 框架项目是封装通用功能的纯 SwiftPM 包。它们比应用项目更简单,因为它们不需要 Darwin/ 和 Android/ 文件夹。
每个核心 Skip 兼容性框架(skip-lib、skip-unit、skip-foundation 和 skip-ui)都是 Skip 框架项目。其他常用项目包括 skip-sql、skip-script 和 skip-zip。
可以使用以下命令创建并打开新的框架项目:
skip init --build --test lib-name ModuleName
这将创建一个新的 lib-name 文件夹,其中包含一个带有 ModuleName 和 ModuleNameTests 目标的 Package.swift。
可以在 Xcode.app 中打开这个项目,你可以用它来构建和运行单元测试。从终端运行 swift build 和 swift test 也可以用于作为持续集成过程的一部分进行无头测试。
Skip 框架的结构与任何其他 SPM 包完全相同:
lib-name ├── Package.resolved ├── Package.swift ├── README.md ├── Sources │ └── ModuleName │ ├── ModuleName.swift │ ├── Resources │ │ └── Localizable.xcstrings │ └── Skip │ └── skip.yml └── Tests └── ModuleNameTests ├── ModuleNameTests.swift ├── Resources │ └── TestData.json ├── Skip │ └── skip.yml └── XCSkipTests.swift
Skip 框架使用标准的 Package.swift 文件,但增加了对 skip 的依赖和使用 skipstone 插件进行转译:
// swift-tools-version: 5.8 import PackageDescription let package = Package( name: "lib-name", defaultLocalization: "en", platforms: [.iOS(.v16), .macOS(.v13), .tvOS(.v16), .watchOS(.v9), .macCatalyst(.v16)], products: [ .library(name: "ModuleName", targets: ["ModuleName"]), ], dependencies: [ .package(url: "https://source.skip.tools/skip.git", from: "1.0.4"), .package(url: "https://source.skip.tools/skip-foundation.git", from: "0.0.0"), ], targets: [ .target(name: "ModuleName", plugins: [.plugin(name: "skipstone", package: "skip")]), .testTarget(name: "ModuleNameTests", dependencies: ["ModuleName"], plugins: [.plugin(name: "skipstone", package: "skip")]), ] )
skip init 参考zap /tmp % skip init --help 概述: 初始化一个新的Skip项目 用法: skip init [<选项>] <项目名称> <模块名称> ... 参数: <项目名称> 项目文件夹名称 <模块名称> 要创建的模块名称 输出选项: -o, --output <路径> 将输出发送到指定文件(stdout: -) -E, --message-errout 将消息输出到输出而不是stderr -v, --verbose 是否显示详细消息 -q, --quiet 安静模式:禁止输出 -J, --json 以格式化JSON输出 -j, --json-compact 以紧凑JSON输出 -M, --message-plain 以纯文本而非JSON显示控制台消息 -A, --json-array 将JSON输出包装并分隔为数组 --plain/--no-plain 不显示颜色或进度动画(默认:--no-plain) 创建选项: --id <id> 应用程序标识符(默认:net.example.MyApp) -d, --dir <目录> 项目创建的基础文件夹 -c, --configuration <c> 配置调试/发布(默认:调试) -t, --template <id> 新项目的模板名称/ID(默认:skipapp) -h, --template-host <主机> 模板仓库的主机名(默认:https://github.com) -f, --template-file <zip> 要使用的模板zip文件路径 --resource-path <资源路径> 资源文件夹名称(默认:Resources) --chain/--no-chain 在模块间创建库依赖(默认:--chain) --zero/--no-zero 在Package.swift中添加SKIP_ZERO环境检查(默认:--zero) --git-repo/--no-git-repo 为应用创建本地git仓库(默认:--no-git-repo) --free 以免费模式创建包 --show-tree/--no-show-tree 显示新文件的文件系统树摘要(默认:--no-show-tree) --module-tests/--no-module-tests 是否创建测试模块(默认:--module-tests) --validate-package/--no-validate-package 验证生成的Package.swift文件(默认:--validate-package) 工具选项: --xcodebuild <路径> Xcode命令路径 --swift <路径> Swift命令路径 --gradle <路径> Gradle命令路径 --adb <路径> ADB命令路径 --emulator <路径> Android模拟器路径 --android-home <路径> Android SDK路径(ANDROID_HOME) 构建选项: --build/--no-build 运行项目构建(默认:--build) --test/--no-test 运行项目测试(默认:--no-test) --verify/--no-verify 验证项目输出(默认:--verify) 选项: --appid <appid> 将库嵌入具有给定包ID的应用 --icon-color <RGB> 图标背景的RGB十六进制颜色(默认:4994EC) --version <版本> 将初始版本设置为给定值 --open-xcode 打开生成的Xcode项目 --open-gradle 打开生成的Gradle项目 -h, --help 显示帮助信息。
Skip的架构依赖于Xcode 15和Swift Package Manager 5.9使用的插件系统的最新进展。当出现意外问题时,通常最好的第一步是清理Xcode构建("产品"→"清理构建文件夹")并重置包("文件"→"包"→"重置包缓存")。有时需要重启Xcode,甚至可能需要删除本地的"DerivedData/"文件夹。
下面列出了具体的已知错误情况。请搜索文档、问题和讨论以获取更多信息并报告问题。
Xcode有时会报告如下错误消息:
Internal inconsistency error (didStartTask): targetID (174) not found in _activeTargets. Internal inconsistency error (didEndTask): '12' missing from _activeTasks.
当这些错误发生时,构建似乎成功完成,但更改未被应用。不幸的是,这是Xcode的一个错误。我们发现以下解决方法:
你可以在Swift.org论坛上阅读更多关于这个Xcode错误的信息。
Skip可能会在构建错误中高亮显示错误的行。当Skip显示错误的行号时,通常只偏差一行。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构 ,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是 留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。


选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提 升开发效率的理想工具。


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号