skip

skip

Swift驱动的iOS和Android应用开发框架

Skip是一个基于Swift的开源框架,支持同时开发iOS和Android应用。它提供完整的开发工具链,支持模块化项目结构,并集成Xcode工作流。Skip能帮助开发者快速构建双平台应用,提高开发效率。该框架拥有详细文档和活跃的社区支持,适合各类移动应用开发需求。

Skip移动应用开发Swift跨平台开源项目Github

Skip

Skip 是一种使用 Swift 创建双平台移动应用的技术。阅读这篇介绍以了解更多关于 Skip 的信息。

这个仓库托管了 Skip 开发工具链,也称为 SkipStone。它还托管了 Skip 论坛,用于一般讨论以及特定的问题和错误报告

入门

系统要求

Skip 需要一台安装了 Xcode 15Android Studio 2023Homebrew 的 macOS 13 开发机器。

安装

通过运行以下终端命令安装 Skip:

brew install skiptools/skip/skip

这将下载并安装 skip 工具本身,以及构建和测试应用程序 Kotlin/Android 端所需的 gradle 和 JDK 依赖项。注意:如果你的机器上还没有安装兼容的 JDK+,你可能需要输入管理员密码来完成安装。

通过运行以下命令确保满足开发先决条件:

skip checkup
<img alt="终端 skip checkup 命令输出的截图" src="https://yellow-cdn.veclightyear.com/835a84d5/05fc05fc-c22d-4041-8b3a-edd201169017.png" style="width: 100%;" />

如果检查通过,你就可以开始使用 Skip 进行开发了!

创建应用 {#app_development}

使用以下命令创建新的应用项目:

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 的单一模块,以及名为 DarwinAndroid 的文件夹和共享的 Skip.env 应用配置文件。Darwin 文件夹将包含一个带有 HelloSkip 目标的 HelloSkip.xcodeproj 项目,可以在 Xcode 中打开。

Xcode 将打开新项目,但在你可以构建和启动转译后的应用之前,需要运行一个 Android 模拟器。启动 Android Studio.app 并从欢迎对话框的省略号菜单中打开 Virtual Device Manager。从那里,Create Device(例如,"Pixel 6"),然后 Launch 模拟器。

<img alt="Android Studio 设备管理器的截图" src="https://yellow-cdn.veclightyear.com/835a84d5/67aacf71-43e8-44f1-9e0d-638565dfd0bd.png" style="width: 100%;" />

一旦 Android 模拟器运行,在 Xcode 中选择并运行 HelloSkip 目标。第一次构建将花费一些时间来编译 Skip 库,你可能会看到一个对话框,确认你信任 Skip 插件。一旦构建和运行操作完成,SwiftUI 应用将在选定的 iOS 模拟器中打开,同时转译后的应用将在当前运行的 Android 模拟器中启动。

<img alt="Skip 在 iOS 模拟器和 Android 模拟器中运行的截图" src="https://yellow-cdn.veclightyear.com/835a84d5/36163710-dc26-4534-b3d8-9c8b5debb20b.png" style="width: 100%;" />

浏览到 ContentView.swift 文件,做一些小的修改并重新运行目标:应用将在两个平台上同时重新构建和重新运行,包含你的更改。

查看产品文档以获取有关使用 Skip 开发的更多信息。祝你使用 Skip 愉快!

创建多模块应用

Skip 设计用于适应和鼓励使用多模块项目。默认的 skip init 命令为简单起见创建单模块应用,但你可以通过在命令末尾指定额外的模块名称来创建模块化项目。例如:

skip init --open-xcode --appid=com.xyz.HelloSkip multi-project HelloSkip HelloModel HelloCore

这个命令将创建一个包含三个模块的 SwiftPM 项目:HelloSkipHelloModelHelloCore。这种模块创建的规则是,所有模块都依赖于其后续的对等模块,第一个模块(HelloSkip)最初依赖于 SkipUI,第二个模块依赖于 SkipModel,链中的最后一个模块依赖于 SkipFoundation。可以手动编辑 Package.swift 文件来重新安排依赖关系,或添加对外部 Skip 框架的新依赖,如新兴的 SkipSQLSkipXML 库。

创建双平台框架 {#framework_development}

Skip 框架项目是封装通用功能的纯 SwiftPM 包。它们比应用项目更简单,因为它们不需要 Darwin/Android/ 文件夹。

每个核心 Skip 兼容性框架(skip-libskip-unitskip-foundationskip-ui)都是 Skip 框架项目。其他常用项目包括 skip-sqlskip-scriptskip-zip

可以使用以下命令创建并打开新的框架项目:

skip init --build --test lib-name ModuleName

这将创建一个新的 lib-name 文件夹,其中包含一个带有 ModuleNameModuleNameTests 目标的 Package.swift

可以在 Xcode.app 中打开这个项目,你可以用它来构建和运行单元测试。从终端运行 swift buildswift test 也可以用于作为持续集成过程的一部分进行无头测试。

Skip 框架结构

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的一个错误。我们发现以下解决方法:

    • 继续重试构建。最终Xcode可能会成功完成,尽管错误通常会变得越来越频繁,直到你被迫采用下面的其他解决方案。
    • 构建不同的目标然后重新构建你的应用目标可能会清除错误。
    • 重启Xcode。
    • 清理并重新构建。

    你可以在Swift.org论坛上阅读更多关于这个Xcode错误的信息。

  • Skip可能会在构建错误中高亮显示错误的行。当Skip显示错误的行号时,通常只偏差一行。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

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

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多