6.3.6 Kotlin/Native 二进制选项
3 分钟阅读
原文链接: https://kotlinlang.org/docs/native-binary-options.html
6.3.6 Kotlin/Native 二进制选项
本页列出有用的 Kotlin/Native 二进制选项,你可以用它们配置 Kotlin/Native 最终二进制文件,以及在项目中设置二进制选项的方式。
如何启用
你可以在 gradle.properties 文件、构建文件中启用二进制选项,也可以把它们作为编译器参数传入。
在 Gradle 属性中
你可以使用 kotlin.native.binary 属性在项目的 gradle.properties 文件中设置二进制选项。例如:
kotlin.native.binary.latin1Strings=true
在你的构建文件中
你可以在 build.gradle.kts 文件中为项目设置二进制选项:
- 使用
binaryOption属性为特定二进制文件设置。例如:
| |
- 在
freeCompilerArgs属性中作为-Xbinary=$option=$value编译器选项设置。例如:
| |
在命令行编译器中
在执行 Kotlin/Native 编译器时,你可以直接在命令行中把二进制选项作为 -Xbinary=$option=$value 传入。例如:
| |
二进制选项
注意: 这张表并不是所有现有选项的完整列表,只列出了最值得注意的那些。
| 选项 | 取值 | 说明 | 状态 |
|---|---|---|---|
enableReleaseBinaryCache | true false(默认) | 让编译器在发布模式下使用缓存,以牺牲部分编译器优化为代价加快构建。 | 自 2.4.20 起为实验性 |
objcExportBlockExplicitParameterNames | true false(默认) | 为导出的 Objective-C 头文件中的函数类型添加显式参数名。 | 自 2.2.20 起为实验性 |
smallBinary | true false(默认) | 减小发布版二进制文件的体积。 | 自 2.2.20 起为实验性 |
stackProtector | yes strong all no(默认) | 启用栈金丝雀:对易受攻击的函数使用 yes,对所有函数使用 all,使用 strong 则采用更强的启发式规则。 | 自 2.2.20 起可用 |
pagedAllocator | true(默认) false | 控制分配的分页(缓冲)。当为 false 时,内存分配器按对象逐个预留内存。 | 自 2.2.0 起为实验性 |
latin1Strings | true false(默认) | 控制对 Latin-1 编码字符串的支持,以减小应用二进制体积并调整内存消耗。 | 自 2.2.0 起为实验性 |
mmapTag | UInt | 控制内存标记,这是 Apple 平台上跟踪内存消耗所必需的。可用取值为 240-255(默认是 246);0 表示禁用标记。 | 自 2.2.0 起可用 |
disableMmap | true false(默认) | 控制默认分配器。当为 true 时,使用 malloc 内存分配器而不是 mmap。 | 自 2.2.0 起可用 |
gc | cms(默认) pmcs stwms noop | 控制垃圾回收行为: cms 使用并发标记清除 pmcs 使用并行标记并发清除 stwms 使用简单的停止世界标记清除 noop 禁用垃圾回收 | 自 2.4.0 起 cms 为默认值 |
gcMarkSingleThreaded | true false(默认) | 禁用垃圾回收标记阶段的并行化。在大堆上可能增加 GC 暂停时间。 | 自 1.7.20 起可用 |
enableSafepointSignposts | true false(默认) | 在项目中启用对 GC 相关暂停的跟踪,以便在 Xcode Instruments 中调试。 | 自 2.0.20 起可用 |
preCodegenInlineThreshold | UInt | 配置 Kotlin IR 编译器中的内联优化过程,该过程发生在实际代码生成阶段之前(默认禁用)。 推荐的 token 数(编译器解析的代码单元)是 40。 | 自 2.1.20 起为实验性 |
objcDisposeOnMain | true(默认) false | 控制 Swift/Objective-C 对象的反初始化。当为 false 时,反初始化发生在专门的 GC 线程上而不是主线程。 | 自 1.9.0 起可用 |
appStateTracking | enabled disabled(默认) | 控制应用在后台运行时基于定时器调用垃圾回收器的行为。 当为 enabled 时,只有在内存消耗过高时才会调用 GC。 | 自 1.7.20 起为实验性 |
bundleId | String | 在 Info.plst 文件中设置 bundle ID(CFBundleIdentifier)。 | 自 1.7.20 起可用 |
bundleShortVersionString | String | 在 Info.plst 文件中设置短的 bundle 版本(CFBundleShortVersionString)。 | 自 1.7.20 起可用 |
bundleVersion | String | 在 Info.plst 文件中设置 bundle 版本(CFBundleVersion)。 | 自 1.7.20 起可用 |
sourceInfoType | libbacktrace coresymbolication(Apple 目标) noop(默认) | 为异常堆栈轨迹添加文件位置和行号。 coresymbolication 仅适用于 Apple 目标,并且在 macOS 和 Apple 模拟器的调试模式下默认启用。 | 自 1.6.20 起为实验性 |
提示: 关于稳定性级别的更多信息,请参阅稳定性级别。
接下来学什么
了解如何构建最终的 native 二进制文件。