1/2
Java 에서 @Keep 어노테이션은 주로 빌드 최적화 과정에서 특정 코드를 삭제하거나 이름을 바꾸지 말 것 을 지시하는 마커이다.
용도
Java 빌드 도구인 ProGuard 나 R8 은, 앱 용량을 줄이기 위해 사용하지 않는 코드를 삭제(Shrinking) 하고, 보안을 위해 이름을 난독화(Obfuscation) 한다. 하지만, 이런 경우들에서는 최적화 도구가 코드를 미사용으로 잘못 판단할 수 있는데..
이때 @Keep 을 붙이면 해당 요소는 최적화 대상에서 제외되어 안전하게 유지된다.
리플렉션(Reflection) : 런타임에 클래스나 메서드 이름을 문자열로 찾아 호출하는 경우.
JNI(Native 메서드) : C/C++ 등 네이티브 코드에서 Java 메서드를 호출하는 경우.
JSON 라이브러리 : GSON 이나 Jackson 이 데이터를 매핑할 때 필드 이름을 그대로 유지해야 하는 경우.
사용을 위해서는, andoidx.annotation.Kepp 라이브러리를 import 하고, 클래스나 메서드 위에 선언한다.
안드로이드 환경이 아닌 순수 Java 환경에서 이를 사용하려면, ProGuard 설정을 통해 커스텀 @Keep 어노테이션을 인식하도록 구성해야 한다.
'언어 > Java' 카테고리의 다른 글
| final / @override (0) | 2025.12.22 |
|---|---|
| Maven (0) | 2025.12.13 |
| JNI (0) | 2025.12.12 |