12/11
.jar 과 .aar 은 둘 다 Java 및 Android 플랫폼에서 코드를 패키징하고 배포하는 데 사용되는 아카이브 파일 형식이다. 그럼 둘이 뭐가 다른건가.. 하면 포함할 수 있는 콘텐츠 유형과 사용되는 환경이 다른데,
.jar
jar 은 Java ARchive 의 약자로, 자바 애플리케이션 및 라이브러리 배포를 위해 사용한다. 내부에는 컴파일된 Java 클래스(.class), 메타데이터, 리소스 파일 등 순수 자바 관련 파일만 존재하며, 모든 자바 플랫폼에서 사용할 수 있다.
JAR 파일은 여러 Java 클래스 파일과 관련 리소스를 단일 압축 파일로 묶어 효율적인 배포를 가능하게 하는 표준 Java 패키지 형식. 순수 자바 코드로만 구성된 유틸리티 라이브러리 등에서 주로 사용된다.
.aar
aar 은 Android ARchive 의 약자로, 안드로이드 라이브러리 프로젝트 배포에 사용한다. 컴파일된 Java/Kotlin 코드 외에도 Android 리소스 인 레이아웃 XML, 이미지, AndroidManifest.xml, C/C++ 네이티브 코드 등 다양한 리소스 파일을 하나의 패키지로 번들링할 수 있도록 설계되었다. AAR 파일은 UI 를 포함하는 라이브러리 등에서 필수적.
정리하자면, 순수 Java 코드만 공유할 때는 .jar 을 사용하고, 안드로이드 리소스가 포함된 라이브러리를 공유할 때는 .aar 을 사용하는 것이 효율적이다.
이걸 정리하게 된 이유는, 내가 손댄 적 없는 AndroidManifest 파일이 어디선가 자동머지 되면서 충돌을 일으켰기 때문. 분명 제어 가능한 매니페스트 파일들에는 존재하지 않는 파트라서 어쩌다 문제가 생겼나 했더니, AAR 파일에 jniLibs 폴더, assets 폴더, 매니페스트 파일들이 존재해 중복된 클래스나 구문으로 충돌을 일으켰던 것.
그래서 보면 웃긴게, AAR 파일을 .zip 파일로 바꿔서 압축을 해제하면, JAR 파일과 다른 리소스로 분리할 수도 있다. 각 라이브러리의 요구사항이나 필요에 맞게 선택해서 사용하는 것을 권장.
'공부 > Android' 카테고리의 다른 글
| Intent / Activity / Service (1) | 2025.12.28 |
|---|---|
| SHA-256 서명 (0) | 2025.12.24 |
| AndroidManifest (0) | 2025.12.11 |
| APK 서명 체계 v3 (1) | 2025.12.10 |
| Android Studio 입문 (1) | 2025.12.09 |