본문 바로가기
언어/Java

@Keep

by svcbn 2026. 1. 12.

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