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数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。
一站式AI创作平台
提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作
AI办公助手,复杂任务高效处理
AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!
AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI小说写作助手 ,一站式润色、改写、扩写
蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时 语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号