Kotlin/Native 바이너리 옵션
이 페이지에서는 Kotlin/Native 최종 바이너리를 구성하는 데 사용할 수 있는 유용한 Kotlin/Native 바이너리 옵션 목록과 프로젝트에서 바이너리 옵션을 설정하는 방법을 설명합니다.
활성화 방법
gradle.properties 파일, 빌드 파일에서 바이너리 옵션을 활성화하거나 컴파일러 인수로 전달할 수 있습니다.
Gradle 속성에서 설정
프로젝트의 gradle.properties 파일에서 kotlin.native.binary 속성을 사용하여 바이너리 옵션을 설정할 수 있습니다. 예를 들면 다음과 같습니다:
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바이너리 옵션
아래 표는 기존의 모든 옵션을 나열한 것이 아니며, 가장 주목할 만한 옵션들만 포함하고 있습니다.
| 옵션 | 값 | 설명 | 상태 |
objcExportBlockExplicitParameterNames |
| 내보낸 Objective-C 헤더의 함수 타입에 명시적인 파라미터 이름을 추가합니다. | 2.2.20부터 실험적(Experimental) |
smallBinary |
| 릴리스 바이너리의 크기를 줄입니다. | 2.2.20부터 실험적(Experimental) |
stackProtector |
| 스택 카나리(stack canary)를 활성화합니다: 취약한 함수에는 yes, 모든 함수에는 all을 사용하며, 더 강력한 휴리스틱을 사용하려면 strong을 사용합니다. | 2.2.20부터 사용 가능 |
pagedAllocator |
| 할당 페이징(버퍼링)을 제어합니다. false인 경우 메모리 할당자는 객체별로 메모리를 예약합니다. | 2.2.0부터 실험적(Experimental) |
latin1Strings |
| 애플리케이션 바이너리 크기를 줄이고 메모리 소비를 조정하기 위해 Latin-1 인코딩 문자열에 대한 지원을 제어합니다. | 2.2.0부터 실험적(Experimental) |
mmapTag | UInt | Apple 플랫폼에서 메모리 소비 추적에 필요한 메모리 태깅을 제어합니다. 240-255 값을 사용할 수 있으며(기본값 246), 0은 태깅을 비활성화합니다. | 2.2.0부터 사용 가능 |
disableMmap |
| 기본 할당자를 제어합니다. true인 경우 mmap 대신 malloc 메모리 할당자를 사용합니다. | 2.2.0부터 사용 가능 |
gc |
| 가비지 컬렉션 동작을 제어합니다:
| cms는 2.4.0부터 기본값 |
gcMarkSingleThreaded |
| 가비지 컬렉션의 마크(mark) 단계 병렬화를 비활성화합니다. 힙이 큰 경우 GC 일시 중단 시간이 늘어날 수 있습니다. | 1.7.20부터 사용 가능 |
enableSafepointSignposts |
| Xcode Instruments에서 디버깅하기 위해 프로젝트의 GC 관련 일시 중단 추적을 활성화합니다. | 2.0.20부터 사용 가능 |
preCodegenInlineThreshold | UInt | 실제 코드 생성 단계 이전에 수행되는 Kotlin IR 컴파일러의 인라인 최적화 패스를 구성합니다(기본적으로 비활성화됨). 권장되는 토큰(컴파일러가 파싱하는 코드 단위) 수는 40입니다. | 2.1.20부터 실험적(Experimental) |
objcDisposeOnMain |
| Swift/Objective-C 객체의 역초기화(deinitialization)를 제어합니다. false인 경우 역초기화는 메인 스레드가 아닌 특별한 GC 스레드에서 발생합니다. | 1.9.0부터 사용 가능 |
appStateTracking |
| 애플리케이션이 백그라운드에서 실행될 때 타이머 기반의 가비지 컬렉터 호출을 제어합니다.
| 1.7.20부터 실험적(Experimental) |
bundleId |
| Info.plist 파일의 번들 ID(CFBundleIdentifier)를 설정합니다. | 1.7.20부터 사용 가능 |
bundleShortVersionString |
| Info.plist 파일의 단축 번들 버전(CFBundleShortVersionString)을 설정합니다. | 1.7.20부터 사용 가능 |
bundleVersion |
| Info.plist 파일의 번들 버전(CFBundleVersion)을 설정합니다. | 1.7.20부터 사용 가능 |
sourceInfoType |
| 예외 스택 트레이스에 파일 위치와 라인 번호를 추가합니다.
| 1.6.20부터 실험적(Experimental) |
안정성 수준에 대한 자세한 내용은 문서를 참조하세요.
다음 단계
최종 네이티브 바이너리 빌드 방법을 알아보세요.
