Kotlin/Nativeバイナリオプション
このページでは、Kotlin/Nativeの最終バイナリを設定するために使用できる、役立つKotlin/Nativeバイナリオプションと、プロジェクトでバイナリオプションを設定する方法を一覧表示します。
有効化する方法
バイナリオプションは、gradle.propertiesファイル、ビルドファイルで有効にするか、コンパイラ引数として渡すことができます。
Gradleプロパティでの設定
プロジェクトのgradle.propertiesファイルで、kotlin.native.binaryプロパティを使用してバイナリオプションを設定できます。例:
kotlin.native.binary.gc=cms
kotlin.native.binary.latin1Strings=trueビルドファイルでの設定
プロジェクトのbuild.gradle.ktsファイルでバイナリオプションを設定できます。
binaryOption属性を使用して特定のバイナリに設定する場合。例:
kotlin {
iosArm64 {
binaries {
framework {
binaryOption("smallBinary", "true")
}
}
}
}freeCompilerArgs属性に-Xbinary=$option=$valueコンパイラオプションとして設定する場合。例:
kotlin {
iosArm64 {
compilations.configureEach {
compilerOptions.configure {
freeCompilerArgs.add("-Xbinary=smallBinary=true")
}
}
}
}コマンドラインコンパイラでの設定
Kotlin/Nativeコンパイラを実行する際に、コマンドラインで直接-Xbinary=$option=$valueとしてバイナリオプションを渡すことができます。例:
kotlinc-native main.kt -Xbinary=enableSafepointSignposts=trueバイナリオプション
この表は、既存のすべてのオプションを網羅したものではなく、特に注目すべきもののみを記載しています。
| オプション | 値 | 説明 | ステータス |
smallBinary |
| リリースバイナリのサイズを縮小します。 | 2.2.20から実験的 |
stackProtector |
| スタックカナリアを有効にします。脆弱な関数には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の場合、mmapではなくmallocメモリアロケーターを使用します。 | 2.2.0から利用可能 |
gc | ガベージコレクションの動作を制御します。
| cmsは2.0.20から実験的 | |
gcMarkSingleThreaded |
| ガベージコレクションのマークフェーズの並列化を無効にします。大規模なヒープではGCの一時停止時間が増加する可能性があります。 | 1.7.20から利用可能 |
enableSafepointSignposts |
| Xcode Instrumentsでのデバッグのために、プロジェクト内のGC関連の一時停止の追跡を有効にします。 | 2.0.20から利用可能 |
preCodegenInlineThreshold | UInt | Kotlin IRコンパイラにおけるインライン化最適化パスを設定します。これは実際のコード生成フェーズの前に実行されます(デフォルトでは無効)。 推奨されるトークン数(コンパイラによって解析されるコード単位)は40です。 | 2.1.20から実験的 |
objcDisposeOnMain |
| Swift/Objective-Cオブジェクトのデアロケーションを制御します。falseの場合、デアロケーションはメインスレッドではなく、特別なGCスレッドで発生します。 | 1.9.0から利用可能 |
appStateTracking |
| アプリケーションがバックグラウンドで実行されている場合の、タイマーベースのガベージコレクタ呼び出しを制御します。
| 1.7.20から実験的 |
bundleId |
| Info.plstファイルにバンドルID(CFBundleIdentifier)を設定します。 | 1.7.20から利用可能 |
bundleShortVersionString |
| Info.plstファイルに短いバンドルバージョン(CFBundleShortVersionString)を設定します。 | 1.7.20から利用可能 |
bundleVersion |
| Info.plstファイルにバンドルバージョン(CFBundleVersion)を設定します。 | 1.7.20から利用可能 |
sourceInfoType |
| 例外のスタックトレースにファイルの位置と行番号を追加します。
| 1.6.20から実験的 |
安定性レベルの詳細については、ドキュメントを参照してください。
次のステップ
最終ネイティブバイナリをビルドする方法を学びましょう。
