返回首页

Swift 6.3:Android SDK 和 @c 属性

Swift 6.3 引入了 Android 的官方 SDK、用于导出到 C 的 @c 属性、模块选择器和新的编译器优化。此更新提升了高级开发者的跨平台能力和性能。

Swift 6.3 正式支持 Android,并带有 C 互操作
Advertisement 728x90

Swift 6.3:Android 官方 SDK 和全新导出属性

Swift 6.3 于 2026 年 3 月底发布。源代码在 GitHub 上以 Apache 2.0 许可提供。先前的稳定版本是 2025 年 10 月的 Swift 6.2,而支持 Debian、Fedora 和 Ubuntu 24.04 的 Swift 6.0 则于 2024 年 9 月发布。官方构建分发至 Linux、Windows 和 macOS。

此次更新重点扩展跨平台能力和编译器工具。Swift 语言融入了 C 和 Objective-C 的特性,同时保持与 Objective-C 运行时的兼容性。Swift 代码可与 C 和 Objective-C 互操作,使用 ARC 进行内存管理,并防止缓冲区溢出、访问未初始化内存以及使用后释放错误。

Swift 支持泛型、闭包、lambda、元组、字典类型、高效集合和函数式构造。通过 LLVM 编译成机器码,性能比 Objective-C 高出 30%。Swift Package Manager 处理依赖关系、构建和链接。

Google AdInline article slot

Android 的 Swift SDK:正式发布

第一个关键变化是 Android 的官方 Swift SDK。现在,中高级开发者可以完全使用 Swift 构建原生 Android 应用,或将 Swift 组件集成到现有的 Java/Kotlin 项目中。

该 SDK 得益于 Android 工作组和社区的贡献,已从实验状态正式毕业。这简化了跨平台开发,最大限度减少了 iOS/macOS 和 Android 生态系统之间的障碍。

// Example integration Swift in Android project
import Foundation

@objc public class SwiftBridge: NSObject {
    @objc public func greet(name: String) -> String {
        return "Hello, \(name)! From Swift on Android."
    }
}

此代码演示了基本的互操作性:该类被导出以供 JNI 使用。

Google AdInline article slot

@c 属性和 C 导出

新的 @c 属性将 Swift 函数和枚举导出至 C。编译器会生成包含声明的头文件(.h)。

@c
public enum ErrorCode: Int32 {
    case none = 0
    case invalidInput = 1
    case networkFailure = 2
}

@c
public func processData(_ data: UnsafePointer<UInt8>, length: Int) -> ErrorCode {
    // Obrabotka data
    return .none
}

生成的 module.h

enum ErrorCode : int32_t {
  ErrorCode_none = 0,
  ErrorCode_invalidInput = 1,
  ErrorCode_networkFailure = 2
};

enum ErrorCode processData(const uint8_t *data, int length);

这对于系统编程中的 FFI 以及将 Swift 嵌入基于 C 的项目至关重要。

Google AdInline article slot

模块选择器和冲突解决

引入了模块选择器,用于解决从多个模块导入同名 API 时的歧义。

import ModuleA.SomeType
using module(ModuleB) SomeType  // Yavno from ModuleB

let a: ModuleA.SomeType = ...
let b: ModuleB.SomeType = ...

using module(ModuleB) 选择器指定了来源,从而避免大型项目中因依赖重叠导致的链接器错误。

新的编译器优化属性

优化属性得到扩展,用于精细性能调优:

  • @specialize:为热门类型(例如 Array<Int>)生成泛型的单态化特化版本。
  • @inline:强制函数内联,减少调用开销。
  • @export(implementation):将 ABI 稳定的实现导出至库中。
@specialize(Array<Int>)
public func sum<T: Numeric>(_ array: [T]) -> T {
    return array.reduce(0, +)
}

@inline(never)
public func debugLog(_ msg: String) {
    print("DEBUG: \(msg)")
}

SwiftPM 中的 Swift Build 集成

Swift Build 的早期实现已集成至 Swift Package Manager。这能加速增量构建,尤其适用于拥有数千个包的单仓库项目。

关键点:

  • Android 的官方 Swift SDK:支持与 Java/Kotlin 的完整开发和集成。
  • @c 属性:自动生成 C 头文件以支持 FFI。
  • 模块选择器:无需重命名即可解决命名冲突。
  • 优化属性:@specialize@inline@export(implementation) 用于性能调优。
  • SwiftPM 中的 Swift Build:提升构建性能。

此次更新体现了社区贡献,特别是 Android 组的努力。Swift 6.3 进一步巩固了该语言在多平台开发中的地位,特别适用于高级专家。

— Editorial Team

Advertisement 728x90

继续阅读