코딩 공부
[안드로이드 개발 일지] 안드로이드 앱 배포(APK, AAB) 본문
앱 배포 방식에는 크게 2가지가 있다.
"APK 파일 배포"와 "앱 번들 배포"이다.
- APK 파일 배포
APK 파일이란,
APK는 "Android Package"의 약자로, 안드로이드 애플리케이션의 실행 가능한 파일 형식이다.
APK 파일은 애플리케이션의 코드, 리소스, 매니페스트 파일 등을 포함하고 있다.
APK 파일의 배포 방법은 다음과 같다.
1. 애플리케이션 개발 : 안드로이드 스튜디오 등의 개발 환경에서 애플리케이션을 개발한다.
2. APK 빌드 : 개발 완료된 애플리케이션을 APK 파일로 빌드한다. 이때 서명(Signing) 과정이 포함되어야 한다.
3. 서명 : APK 파일에 개발자의 디지털 서명을 추가해 APK의 무결성을 보장하고 사용자에게 신뢰성을 제공한다.
4. 배포 : APK 파일을 사용자 또는 앱 스토어에 업로드하여 배포한다.
- 앱 번들 배포
앱 번들이란,
앱 번들은 안드로이드 앱 번들(AAB, Android App Bundle)의 약자로, 다양한 화면 크기, 디바이스 유형에 대한 동적인 리소스를 관리할 수 있는 형태의 앱 배포 패키지이다.
AAB는 사용자가 앱을 설치할 때 필요한 리소스만을 포함해 앱 크기를 최소화하고 효율적인 배포를 가능하게 한다.
AAB의 배포 방법은 다음과 같다.
1. 애플리케이션 개발 : 안드로이드 스튜디오 등의 개발 환경에서 애플리케이션을 개발한다.
2. 앱 번들 빌드 : 앱 번들 형식으로 애플리케이션을 빌드한다. 이때, 각 디바이스에 대한 리소스가 자동으로 관리된다.
3. 서명 및 배포 : APK 파일과 마찬가지로 앱 번들도 서명을 추가한 후 사용자 또는 앱 스토어에 업로드해 배포한다.
참고로, Google Play 스토어는 앱 번들을 지원하며, 이를 통해 효율적인 앱 배포 및 업데이트가 가능하다.
위에서 설명하는 "서명"이라는 과정은 무엇일까?
안드로이드 애플리케이션을 서명한다는 것은 애플리케이션이 개발자에 의해 출시되었음을 증명하고, 애플리케이션의 무결성을 보장하는 중요한 단계이다. 서명은 개발자에 의해 제공된 디지털 키를 사용해 애플리케이션에 전자 서명을 추가하는 프로세스이다.
서명된 애플리케이션은 안전한 배포를 보장하며, 사용자가 해당 애플리케이션이 신뢰할 수 있는 출처에서 온 것임을 확인할 수 있다.
키에는 2가지 종류가 있다.
1. 개발자 키(Debug Key)
- 개발자가 애플리케이션을 개발 및 디버깅할 때 사용되는 키이다.
- 이 키는 기본적으로 안드로이드 스튜디오에서 제공하며, 애플리케이션을 로컬에서 실행하거나 에뮬레이터에서 테스트할 때 사용된다.
- Debug 빌드에서는 이 개발자 키를 사용해 서명이 이루어진다.
2. 릴리스 키(Release Key)
- 실제로 사용자에게 배포되는 애플리케이션에 사용되는 키이다.
- 개발자가 직접 생성하거나 안드로이드 스튜디오의 빌드 과정에서 자동으로 생성할 수 있다.
- Release 빌드에서는 이 릴리스 키를 사용하여 서명이 이뤄지며, Google Play 스토어 및 기타 앱 스토어에 업로드하기 전에 반드시 사용되어야 한다.
서명은 애플리케이션이 변경되지 않았음을 보장하고, 특정 개발자에 의해 배포된 것임을 인증하는 데 사용된다.
이는 애플리케이션이 중간에 변조되지 않았으며, 신뢰할 수 있는 소스에서 제공된 것임을 보장하는 데 중요하다.
APK 배포 방식은 파일 크기가 크다는 문제점이 있다. 그래서 이 문제를 해결하기 위해 2018년 구글 I/O에서 새롭게 제시한 방법이 AAB이다.
사용자가 앱을 사용하기 위해서는 개발자가 준비한 모든 리소스가 설치 파일에 포함되어야 할 것 같지만, 실제로는 사용자의 단말에서 모든 리소스가 필요하지 않다.
APK 파일은 동적으로 판단하지 않기에 개발자가 준비한 모든 리소스가 APK 파일에 포함되지만, AAB 방식은 실제 개발자가 준비한 모든 리소스를 포함하는 것이 아니라, 사용자의 단말에 필요한 리소스만 동적으로 구성해 제공하므로 배포 파일의 크기를 줄일 수 있다. 즉, 동적 전달(Dynamic Delivery) 기법을 이용해 개발자가 준비한 구성 중 실제 사용자에게 필요한 구성요소만을 포함시켜 배포한다.
AAB로 배포할 때 유의할 점은 "앱의 패키지명을 유일성이 확보된 문자열로 지정해야 한다는 것"이다.
예를 들어, 패키지명이 "com.example"이면 앱을 등록할 수 없다는 오류가 발생하게 된다.
그래서 안드로이드 스튜디오의 프로젝트 탐색 창에서 'Gradle Scripts' 그룹을 확장해 'build.gradle.kts(Module:app)'에 들어가보면,
defaultConfig에 applicationId = "com.example.xxx"와 같이 나와 있을텐데, 이때 이 "com.example"라는 단어가 들어가면 앱을 배포할 수 없다는 뜻이다.
AAB 파일을 사용자에게 배포하는 방법은 다양한데, 구글 Play 스토어나 이동통신사에서 제공하는 마켓을 이용할 수도 있고, AAB 파일을 사용자에게 직접 배포할 수도 있다.
구글 Play 스토어나 이동통신사에서 제공하는 마켓을 이용하기 위해서는 각 마켓의 정책에 맞게 개발자 등록을 해야한다.
'Android 공부' 카테고리의 다른 글
[안드로이드 개발 일지] 안드로이드 앱 개발 특징, 아키텍쳐 (2) | 2024.02.01 |
---|---|
[안드로이드 개발 일지] AVD, SDK (0) | 2024.01.31 |