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显示错误的行号时,通常只偏差一行。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或 是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。
选题、配图、成 文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪 等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
高分辨率纹理 3D 资产生成
Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。
一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。
3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。
最新AI工具、AI资讯
独家AI资源、AI项目落地