LINE's Apple rules for Bazel 使用教程
1、项目介绍
rules_apple_line
是 LINE 公司为 Bazel 构建系统开发的一组扩展规则,专门用于打包和构建 Apple 平台的应用程序和框架。这些规则旨在解决 LINE iOS 应用中的一些特定需求,例如混合 Objective-C 和 Swift 模块的构建。它们可以作为官方 Apple 规则的替代品,并且在需要时可以轻松切换回官方规则。
2、项目快速启动
环境要求
- Bazel 4.0+
安装步骤
- 在
WORKSPACE
文件中添加以下内容,替换<commit>
和<sha256>
为相应的值:
RULES_APPLE_LINE_COMMIT = "<commit>"
http_archive(
name = "rules_apple_line",
sha256 = "<sha256>",
strip_prefix = "rules_apple_line-%s" % RULES_APPLE_LINE_COMMIT,
url = "https://github.com/line/rules_apple_line/archive/%s.zip" % RULES_APPLE_LINE_COMMIT,
)
load("@rules_apple_line//apple:repositories.bzl", "rules_apple_line_dependencies")
rules_apple_line_dependencies()
- 在
BUILD
文件中使用rules_apple_line
提供的规则,例如:
load("@rules_apple_line//apple:rules.bzl", "apple_library", "swift_static_framework")
apple_library(
name = "MyLibrary",
srcs = glob(["**/*.swift"]),
deps = [":OtherLibrary"],
)
swift_static_framework(
name = "MyFramework",
library = ":MyLibrary",
)
3、应用案例和最佳实践
混合语言模块构建
在 LINE iOS 应用中,经常需要处理混合 Objective-C 和 Swift 的模块。rules_apple_line
提供了 apple_library
规则,可以轻松处理这种情况:
apple_library(
name = "MixedLibrary",
srcs = glob(["**/*.swift", "**/*.m"]),
deps = [":OtherLibrary"],
)
静态框架打包
使用 swift_static_framework
规则可以方便地打包静态框架:
swift_static_framework(
name = "MyFramework",
library = ":MixedLibrary",
)
4、典型生态项目
Bazel 官方规则
rules_apple_line
可以作为 Bazel 官方 Apple 规则的替代品,官方规则地址:rules_apple
Swift 规则
rules_apple_line
依赖于 Bazel 的 Swift 规则,地址:rules_swift
LINE iOS 应用
rules_apple_line
最初是为 LINE iOS 应用开发的,LINE 应用地址:LINE iOS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考