规则
j2objc_library
查看规则源代码j2objc_library(name, deps, compatible_with, deprecation, distribs, entry_classes, features, jre_deps, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
此规则使用 J2ObjC 将 Java 源文件转换为 Objective-C,然后可将其用作 objc_library 和 objc_binary 规则的依赖项。如需详细了解 J2ObjC 本身,请访问 J2ObjC 网站
您可以在命令行中使用 build 标志 --j2objc_translation_flags
指定自定义 J2ObjC 转译标志。
请注意,包含在 j2objc_library 目标中的已翻译文件将使用默认编译配置进行编译,该配置与未在属性中指定编译选项的 objc_library 规则来源的配置相同。
此外,系统会在目标级别(而不是源代码级别)对生成的代码进行去重。如果您有两个包含相同 Java 源文件的不同 Java 目标,则可能会在链接时看到重复符号错误。解决此问题的正确方法是将共享 Java 源文件移动到可以依赖的单独公共目标中。
参数
属性 | |
---|---|
name |
名称(必需) 此目标的唯一名称。 |
deps
|
标签列表;默认值为 j2objc_library 、java_library 、java_import 和 java_proto_library 目标的列表,其中包含要转译为 Objective-C 的 Java 文件。
所有可通过 J2ObjC 转换的工作方式因传递闭包中包含的源 Java 源文件的类型而异。对于 用户可以在其代码中导入 J2ObjC 生成的头文件。这些文件的导入路径是原始 Java 工件的相对于根目录的路径。例如,
如果 proto_library 规则在此规则的传递闭包中,系统还会在二进制级生成、编译和链接 J2ObjC proto。对于 proto |
entry_classes
|
字符串列表;默认值为 --j2objc_dead_code_removal
标志处于启用状态,则此属性为必需属性。Java 类应在其规范名称(如 Java 语言规范中所定义)中指定。
如果指定了 --j2objc_dead_code_removal 标志,系统将以传递方式收集条目类列表,并将其用作入口点来执行无状态代码分析。
然后,未使用的类将从最终的 ObjC app bundle 中移除。
|
jre_deps
|
标签列表;默认值为 j2objc_library 规则转换的所有 Java 代码所需的其他 JRE 模拟库的列表。默认情况下,系统只会关联核心 JRE 功能。
|
objc_import
查看规则源代码objc_import(name, deps, hdrs, alwayslink, archives, compatible_with, deprecation, distribs, features, includes, licenses, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, visibility, weak_sdk_frameworks)
此规则以 .a
文件的形式封装已编译的静态库。它还允许使用 objc_library
支持的相同属性导出头文件和资源。
参数
属性 | |
---|---|
name |
名称(必需) 此目标的唯一名称。 |
deps
|
标签列表;默认值为 |
hdrs
|
标签列表;默认值为 这些标头描述了库的公共接口,并可供来源添加到此规则或依赖规则中。不应由此库的客户端包含的头文件应改为列在 srcs 属性中。 如果启用了模块,这些模块将与源代码文件分开编译。 |
alwayslink
|
布尔值;默认值为 srcs 和 non_arc_srcs 中列出的文件的所有对象文件中,即使其中一些文件不包含二进制文件引用的符号也是如此。
如果您的代码没有被二进制文件中的代码明确调用(例如,您的代码注册以接收某项服务提供的某种回调),那么这种做法非常有用。
|
archives
|
标签列表(必需) 提供给依赖于此目标的 Objective-C 目标的.a 文件的列表。
|
includes
|
字符串列表;默认值为 #include/#import 搜索路径的列表。
这是为了支持未在 #import/#include 语句中指定完整工作区路径的第三方和开源库。
这些路径相对于软件包目录进行解释,并且除了实际的客户端根目录之外,还包含 genfile 和 bin 根目录(例如 与 COPTS 不同,这些标志会为此规则以及依赖于它的每个规则添加。(注意:不是它依赖的规则!)请务必谨慎,因为这可能会产生深远影响。如果不确定,请改为向 COPTS 添加“-iquote”标志。 |
sdk_dylibs
|
字符串列表;默认值为 |
sdk_frameworks
|
字符串列表;默认值为 关联顶级 Apple 二进制文件时,系统会关联该二进制文件的传递依赖关系图中列出的所有 SDK 框架。 |
sdk_includes
|
字符串列表;默认值为 #include/#import 搜索路径的列表,其中每个路径都相对于 $(SDKROOT)/usr/include 。
|
textual_hdrs
|
标签列表;默认值为 |
weak_sdk_frameworks
|
字符串列表;默认值为 |
objc_library
查看规则来源objc_library(name, deps, srcs, data, hdrs, alwayslink, compatible_with, copts, defines, deprecation, distribs, enable_modules, exec_compatible_with, exec_properties, features, implementation_deps, includes, licenses, linkopts, module_map, module_name, non_arc_srcs, pch, restricted_to, sdk_dylibs, sdk_frameworks, sdk_includes, tags, target_compatible_with, testonly, textual_hdrs, toolchains, visibility, weak_sdk_frameworks)
此规则会根据给定的 Objective-C 源文件生成静态库。
参数
属性 | |
---|---|
name |
名称(必需) 此目标的唯一名称。 |
deps
|
标签列表;默认值为 |
srcs
|
标签列表;默认值为 |
hdrs
|
标签列表;默认值为 这些标头描述了库的公共接口,并可供来源添加到此规则或依赖规则中。不应由此库的客户端包含的头文件应改为列在 srcs 属性中。 如果启用了模块,这些模块将与源代码文件分开编译。 |
alwayslink
|
布尔值;默认值为 srcs 和 non_arc_srcs 中列出的文件的所有对象文件中,即使其中一些文件不包含二进制文件引用的符号也是如此。
如果二进制文件中的代码未明确调用您的代码(例如,您的代码注册接收某些服务提供的回调),此方法会很有用。
|
copts
|
字符串列表;默认值为 请注意,对于生成的 Xcode 项目,系统会解析在 copts 中使用“-I”标志指定的目录路径,如果这些路径是相对路径,则将带有“$(WORKSPACE_ROOT)/”前缀,并会添加到关联 Xcode 目标的标头搜索路径中。 |
defines
|
字符串列表;默认值为 -D 标志。它们应采用 KEY=VALUE 格式或直接采用 KEY 格式,并且不仅会传递到此目标的编译器(与 copts 一样),还会传递到此目标的所有 objc_ 依赖项。
会受到 “Make 变量”替换和 Bourne shell 令牌化的影响。
|
enable_modules
|
布尔值;默认值为 |
implementation_deps
|
标签列表;默认值为 deps 不同,这些库(及其所有传递依赖项)的头文件和包含路径仅用于编译此库,而非依赖于此库的库。使用 implementation_deps 指定的库仍会在依赖于此库的二进制文件目标中链接。
|
includes
|
字符串列表;默认值为 #include/#import 搜索路径的列表。
这是为了支持未在 #import/#include 语句中指定完整工作区路径的第三方和开源库。
这些路径相对于软件包目录进行解释,并且除了实际的客户端根目录之外,还包含 genfile 和 bin 根目录(例如 与 COPTS 不同,系统会为此规则以及依赖于它的每条规则添加这些标记。(注意:并非其所依赖的规则!)请务必小心,因为这可能会造成深远的影响。如果不确定,请改为向 COPTS 添加“-iquote”标志。 |
linkopts
|
字符串列表;默认值为 |
module_map
|
标签;默认值为 |
module_name
|
字符串;默认值为 |
non_arc_srcs
|
标签列表;默认值为 |
pch
|
标签;默认值为 |
sdk_dylibs
|
字符串列表;默认值为 |
sdk_frameworks
|
字符串列表;默认值为 关联顶级 Apple 二进制文件时,系统会关联该二进制文件的传递依赖关系图中列出的所有 SDK 框架。 |
sdk_includes
|
字符串列表;默认值为 #include/#import 搜索路径的列表,其中每个路径都相对于 $(SDKROOT)/usr/include 。
|
textual_hdrs
|
标签列表;默认值为 |
weak_sdk_frameworks
|
字符串列表;默认值为 |
available_xcodes
查看规则源代码available_xcodes(name, default, deprecation, distribs, features, licenses, tags, testonly, versions, visibility)
xcode_config
规则实例可以依赖此规则的两个目标来指示远程和本地可用的 Xcode 版本。这允许从集合可用的 Xcode 中选择官方 XCode 版本。
参数
属性 | |
---|---|
name |
名称;必需 此目标的唯一名称。 |
default
|
此平台的默认 Xcode 版本。 |
versions
|
此平台上提供的 Xcode 版本。 |
xcode_config
查看规则源代码xcode_config(name, default, deprecation, distribs, features, licenses, local_versions, remote_versions, tags, testonly, versions, visibility)
--xcode_version_config
build 标志可以引用此规则的单个目标,以将 --xcode_version
标志转换为接受的官方 xcode 版本。这样,您就可以从多个已注册的别名中选择官方 Xcode 版本。
参数
属性 | |
---|---|
name |
名称(必需) 此目标的唯一名称。 |
default
|
要使用的默认官方 Xcode 版本。
如果未指定 xcode_version build 标志,则使用所提供的 xcode_version 目标指定的版本。如果设置了任何 versions ,则此字段为必填字段。如果设置了 remote_versions 或 local_versions ,则无法设置此字段。
|
local_versions
|
本地可用的 xcode_version 目标。
这些变量与 local_versions 一起使用,用于选择共同可用的版本。如果设置了 versions ,则无法设置此字段。
|
remote_versions
|
可远程访问的 xcode_version 目标。
这些变量与 remote_versions 一起使用,用于选择共同可用的版本。如果设置了 versions ,则无法设置此字段。
|
versions
|
可接受的 xcode_version 目标。
如果 xcode_version build 标志的值与给定 xcode_version 目标的别名或版本号之一匹配,则系统将使用匹配的目标。如果设置了 remote_versions 或 local_versions ,则不得设置此值。
|
xcode_version
查看规则源代码xcode_version(name, default_ios_sdk_version, default_macos_sdk_version, default_tvos_sdk_version, default_visionos_sdk_version, default_watchos_sdk_version, deprecation, distribs, features, licenses, tags, testonly, version, visibility)
表示具有该 Xcode 版本可接受的别名的单个官方 Xcode 版本。请参阅 xcode_config
规则。
参数
属性 | |
---|---|
name |
名称;必需 此目标的唯一名称。 |
default_ios_sdk_version
|
字符串;不可配置;默认值为 ios_sdk_version 构建标志将替换此处指定的值。
|
default_macos_sdk_version
|
字符串;不可配置;默认值为 macos_sdk_version 构建标志将替换此处指定的值。
|
default_tvos_sdk_version
|
字符串;不可配置;默认值为 tvos_sdk_version build 标志将替换此处指定的值。
|
default_visionos_sdk_version
|
字符串;不可配置;默认值为 visionos_sdk_version build 标志将替换此处指定的值。
|
default_watchos_sdk_version
|
字符串;不可配置;默认值为 watchos_sdk_version 构建标志将替换此处指定的值。
|
version
|
Xcode 版本的官方版本号。 |