Kotlin/Native 二進位選項
本頁列出了實用的 Kotlin/Native 二進位選項,您可以用它們來設定 Kotlin/Native 最終二進位檔,以及在您的專案中設定二進位選項的方式。
如何啟用
您可以在 gradle.properties
檔案、建置檔案中啟用二進位選項,或將其作為編譯器引數傳遞。
在 Gradle 屬性中
您可以使用 kotlin.native.binary
屬性在專案的 gradle.properties
檔案中設定二進位選項。例如:
none
kotlin.native.binary.gc=cms
kotlin.native.binary.latin1Strings=true
在您的建置檔案中
您可以在 build.gradle.kts
檔案中為您的專案設定二進位選項:
- 使用
binaryOption
屬性針對特定二進位檔。例如:
kotlin
kotlin {
iosArm64 {
binaries {
framework {
binaryOption("smallBinary", "true")
}
}
}
}
- 作為
freeCompilerArgs
屬性中的-Xbinary=$option=$value
編譯器選項。例如:
kotlin
kotlin {
iosArm64 {
compilations.configureEach {
compilerOptions.configure {
freeCompilerArgs.add("-Xbinary=smallBinary=true")
}
}
}
}
在命令列編譯器中
您可以在執行 Kotlin/Native 編譯器時,直接在命令列中將二進位選項作為 -Xbinary=$option=$value
傳遞。例如:
bash
kotlinc-native main.kt -Xbinary=enableSafepointSignposts=true
二進位選項
此表格並非所有現有選項的詳盡列表,僅列出最值得注意的選項。
選項 | 值 | 描述 | 狀態 |
smallBinary |
| 減少發行版二進位檔的大小。 | 從 2.2.20 起為實驗性功能 |
stackProtector |
| 啟用堆疊保護(stack canaries):`yes` 用於易受攻擊的函式,`all` 用於所有函式,`strong` 則使用更強的啟發式方法。 | 從 2.2.20 起可用 |
pagedAllocator |
| 控制分配的分頁(緩衝)。當 `false` 時,記憶體分配器會按物件保留記憶體。 | 從 2.2.0 起為實驗性功能 |
latin1Strings |
| 控制對 Latin-1 編碼字串的支援,以減少應用程式二進位檔大小並調整記憶體消耗。 | 從 2.2.0 起為實驗性功能 |
mmapTag | UInt | 控制記憶體標記,這對於 Apple 平台上的記憶體消耗追蹤是必需的。值 `240`-`255` 可用(預設為 `246`);`0` 禁用標記。 | 從 2.2.0 起可用 |
disableMmap |
| 控制預設的分配器。當 `true` 時,使用 `malloc` 記憶體分配器而不是 `mmap`。 | 從 2.2.0 起可用 |
gc | 控制垃圾回收行為:
| cms 從 2.0.20 起為實驗性功能 | |
gcMarkSingleThreaded |
| 禁用垃圾回收中標記階段的平行化。可能會增加大型堆積上的 GC 暫停時間。 | 從 1.7.20 起可用 |
enableSafepointSignposts |
| 啟用追蹤專案中與 GC 相關的暫停,以便在 Xcode Instruments 中進行除錯。 | 從 2.0.20 起可用 |
preCodegenInlineThreshold | UInt | 設定 Kotlin IR 編譯器中的內嵌優化傳遞,此傳遞在實際程式碼生成階段之前進行(預設為禁用)。 建議的令牌(編譯器解析的程式碼單元)數量為 40。 | 從 2.1.20 起為實驗性功能 |
objcDisposeOnMain |
| 控制 Swift/Objective-C 物件的解除初始化。當 `false` 時,解除初始化會在一個特殊的 GC 執行緒上進行,而不是在主執行緒上。 | 從 1.9.0 起可用 |
appStateTracking |
| 控制應用程式在背景執行時基於計時器的垃圾回收器調用。 當 `enabled` 時,GC 僅在記憶體消耗過高時才被調用。 | 從 1.7.20 起為實驗性功能 |
bundleId |
| 在 `Info.plst` 檔案中設定 bundle ID (`CFBundleIdentifier`)。 | 從 1.7.20 起可用 |
bundleShortVersionString |
| 在 `Info.plst` 檔案中設定簡短 bundle 版本 (`CFBundleShortVersionString`)。 | 從 1.7.20 起可用 |
bundleVersion |
| 在 `Info.plst` 檔案中設定 bundle 版本 (`CFBundleVersion`)。 | 從 1.7.20 起可用 |
sourceInfoType |
| 將檔案位置和行號添加到例外堆疊追蹤中。 `coresymbolication` 僅適用於 Apple 目標,並且在偵錯模式下預設為 macOS 和 Apple 模擬器啟用。 | 從 1.6.20 起為實驗性功能 |
有關穩定性等級的更多資訊,請參閱 文件。
接下來是什麼
了解如何 建置最終原生二進位檔。