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から実験的 |
安定性レベルの詳細については、ドキュメントを参照してください。
次のステップ
最終ネイティブバイナリをビルドする方法を学びましょう。