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
속성을 사용하여 특정 바이너리에 대해 설정할 수 있습니다. 예를 들어:kotlinkotlin { iosArm64 { binaries { framework { binaryOption("smallBinary", "true") } } } }
freeCompilerArgs
속성에서-Xbinary=$option=$value
컴파일러 옵션으로 설정할 수 있습니다. 예를 들어:kotlinkotlin { 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 |
| 스택 카나리(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 인 경우, 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 객체의 초기화 해제(deinitialization)를 제어합니다. 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부터 실험적 |
안정성 수준에 대한 자세한 내용은 문서를 참조하십시오.
다음 단계
최종 네이티브 바이너리를 빌드하는 방법을 알아보세요.