AppKid

Platforms License Test

AppKid 是一个开源应用程序开发框架,深受 Apple 的 AppKit 和 UIKit 的启发。它的初衷是为启用 X11 的 GNU/Linux 环境提供一个便捷的 SDK,用于构建 UI 应用程序。该框架完全使用 Swift 编写,使用 Vulkan 作为渲染后端,并依赖 X11 进行窗口管理和用户输入事件。

Hello World with AppKid

import AppKid
import Foundation

class RootViewController: ViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let label = Label(frame: CGRect(x: 0.0, y: 0.0, width: 320.0, height: 44.0))
        label.text = "Hello World"
        view.addSubview(label)
        label.center = CGPoint(x: 160.0, y: 120.0)
    }
}

@main
final class AppDelegate: ApplicationDelegate {
    func application(_: Application, didFinishLaunchingWithOptions _: [Application.LaunchOptionsKey: Any]? = nil) -> Bool {
        let window = Window(contentRect: CGRect(x: 0.0, y: 0.0, width: 320.0, height: 240.0))
        window.title = "Hello World"
        window.rootViewController = RootViewController()
        return true
    }
}

在您的项目中开始使用 AppKid

AppKid 依赖于多个开源项目。以下是在基于 Debian 的 Linux 发行版上设置这些项目的说明。基于 RPM 的说明将在稍后添加。

在设置必要的依赖项后,只需将此软件包添加到您的 SwiftPM 清单文件中作为依赖项,并将 AppKid 产品作为依赖项添加到您的目标

// swift-tools-version: 5.8
import PackageDescription

let package = Package(
  name: "MyApp",
  dependencies: [
    .package(
	  url: "https://github.com/smumriak/AppKid", 
	  branch: "main"
	),
  ],
  targets: [
    .executableTarget(
      name: "MyApp",
      dependencies: [
        .product(name: "AppKid", package: "AppKid")
      ])
  ]
)

贡献

非常欢迎贡献。在您深入之前,建议设置您的本地开发环境

您可以使用提供的示例应用程序 AppKidDemo,它位于此仓库中,是产品之一。 AppKidDemo 用 swift 编写,并为 AppKid 开发提供示例环境。

appkiddemo_2.mp4
appkiddemo.mp4

开发

在直接开始编写代码之前,需要进行一些开发设置。以下是如何为基于 Debian 的 Linux 或 macOS 设置开发环境的说明

基于 Debian 的 Linux

macOS

构建和运行

此仓库中的所有项目都专门使用 Swift Package Manager。这意味着构建顶级产品就像这样简单

注意: 由于目前这是一个包含多个项目的 monorepo,因此建议通过向 swift 命令添加 --build-path 参数来使用专用构建目录

警告: 在 macOS 上无法运行使用 AppKid 构建的应用程序,并且没有计划这样做

swift build --product AppKid

运行也是如此

swift run --product AppKid

Utilities 目录下有其他脚本,其中包含预定义的构建、运行、清理和其他命令。

警告: 由于在纯 swift 项目中使用 vulkan-sdk 作为 C 库的问题,目前在 macOS 上构建已损坏

IDE

在 Linux 上,推荐的编写代码方式是使用 VSCodeVSCodium IDE。这样您将获得预配置的 LLDB 配置以构建和运行 AppKidDemo,与 Swift SourceKit LSP 的完全集成,以实现语法高亮、符号导航、自动完成,就像在 Xcode 中一样等等。这非常方便。

在 macOS 上,您可以在 VSCode/VSCodiumXcode 之间进行选择。我建议通过 swift package generate-xcodeproj 生成 Xcode 项目并打开它,因为索引和构建目标生成速度更快,但您也可以在 Xcode 中打开 Packge.swift,用户体验几乎相同。

swift package manager 中的 generate-xcodeproj 已弃用。它不再接收更新,并且在 Package.swift 文件中遇到插件定义时会抛出致命错误。打开 Package.swift 本身也不再真正有效,因为它只是没有在 Xcode 源代码树中显示任何本地子模块。

在 reporisotory 的根目录中提供了一个精心制作的 VSCode/VSCoium 配置,包括启动配置和许多任务,例如从 Vulkan 规范重新生成 Vulkan 实体接口一致性或重建 ContentAnimation 着色器。为了在 VSCode/VSCodium 中获得最佳体验,强烈建议安装以下扩展

许可证

本仓库中的代码根据 Apache-2.0 许可证分发。在创建拉取请求之前,请查看贡献

致谢

AppKid 正在使用以下开源项目