全部配置 / KN-BINARY-CODESIZEOPT

-Xbinary=codesizeOpt

Xbinary=codesizeOpt · KN-BINARY-CODESIZEOPT · 编译器参数(Native)

重要:高 · 影响大 默认:默认开 场合:流水线专用 来源:CPF-KMP-CMP社区新增 · 缺文档

待解决问题。文档缺口:此项为 CPF-KMP-CMP社区新增,但尚未挂接社区文档。应补充专章或在既有手册中明确提及本配置后再挂链。

默认值:默认开。消费侧默认 true(拆分编译)。使用场合:流水线专用。流水线专用:拆分编译、发 runtime / stdlib 的构建流水线使用。

它是做什么的

用途。启用跨 klib 引用分析以削减导出符号,利于减小产物体积(拆分编译场景)。示例取值:`codesizeOpt=true`(削减跨 klib 导出)。

影响。主要影响包体;可能折中性能或可调试性。

适用场景。Release 或包体敏感场景评估;改后对比体积与性能。

约束与联动。上游无此 -Xbinary。社区新增:在模块化/拆分编译下做跨 klib 引用分析,减少导出符号以缩小包体;默认 true,常与 moduleIncludeOnly 等拆分管线联用。

取值说明

布尔 · 写法 -Xbinary=codesizeOpt=true|false

  • Enable cross-klib reference analysis to reduce exported symbols in split compilation mode.

可写。true / false

定义依据:konan/BinaryOptions.kt 在仓库中打开

怎么用

  1. 配置入口:build.gradle.kts → ohosArm64.binaries.all { freeCompilerArgs += "-Xbinary=codesizeOpt=true" }
  2. 示例
// 文件:build.gradle.kts(应用的 Kotlin 模块,例如 composeApp)
kotlin {
  ohosArm64 {  // 按实际 native target 调整
    binaries.all {
      freeCompilerArgs += "-Xbinary=codesizeOpt=true"  // 削减跨 klib 导出
    }
  }
}
  1. 生效:Sync 后执行该目标的 compile/link。
  2. 验证:编译日志出现 `-Xbinary=codesizeOpt=true`。
  3. 回滚:从 binaries.all 的 freeCompilerArgs 中删除该项后 Clean 并重编。
  4. 注意:实验项无稳定兼容保证;改前留可回滚配置。

默认行为 默认开

不写这个配置时,编译器会怎么处理?

此选项默认开启,不设置时即生效。若不需要,需显式关闭。

消费侧默认 true(拆分编译)。

相关文档

当前无 CPF 文档链接。补齐社区文档并挂链后,此缺口告警将消失。

溯源与对照

状态
实验(-X,兼容性不保证)
版本基线
2.2.21-1.0.0
定义位置类型
Native 二进制选项(BinaryOptions / -Xbinary)
源码路径
kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/BinaryOptions.kt 在仓库中打开
相对上游的改动
上游无此 -Xbinary。社区新增:在模块化/拆分编译下做跨 klib 引用分析,减少导出符号以缩小包体;默认 true,常与 moduleIncludeOnly 等拆分管线联用。