1. APK와 AAB란 무엇일까?
안드로이드 앱 개발자라면 사용자에게 서비스를 하기위해 안드로이드 App을 개발하고 스토어에 등록하는 배포 과정을 거치게 되는데 이 개발된 App을 배포하기 위한 파일 형식이 APK, AAB 입니다.
1-1. APK란
Andorid Application Package의 약자로 안드로이드에서 프로그램 형태로 배포되는 형식의 확장자입니다.
iOS의 ipa 파일은 디바이스 해킹을 하지 않는 한 Apple App Store에서 지원하는 App 외에는 설치가 불가능하지만 APK 파일은 Google Play Store를 통해 다운로드 받지 않더라도 사용자가 다운로드 받아 사용이 가능하다는 차이점이 있습니다.
App을 APK 파일로 직접 설치하는 일은 보안 관점에서 매우 위험한데, Google에서 검수 후에 Google Play Store에 등록되는 App과 달리 스마트 폰을 해킹하기 위해 제작된 App들의 APK파일을 스미싱 문자 또는 몸캠 피싱 등의 사용자가 의도치 않은 경로를 통해 다운받게 될 수 있습니다.
APK 생성 과정
1. ***.java, ***.xml 등의 파일을 ***.class 파일로 컴파일
2. class 파일을 JAR 파일로 변환
3. 안드로이드 가상 머신인 Dalvik이 인식할 수 있도록 dex tool을 통해 JAR 파일을 ***.dex 파일로 변환
4. dex 파일과 리소스를 묶어 키로 서명
APK를 통한 App 설치 과정
APK 파일은 모두 "com.google.android.gms"와 같이 실제 보이는 앱 이름과 다른 패키지 이름을 가지고 있고 보통 안드로이드에서 APK 파일이 설치된다면 기본적으로 아래와 같이 데이터 파일과 APK 파일 위치가 복사됩니다.
/data/app |
/data/data/<패키지명> |
/storage/emulated/0/Android/data |
/storage/emulated/0/Android/obb |
APK를 위에서 설명한 경로의 패키지명으로 압축 해제합니다.
dex 파일은 data/dalvik-cache에 위치하고 실질적인 실행 파일인 dex 파일이 안드로이드 가상 머신인 Dalvik에 의해 실행됩니다.
기존에는 APK를 배포 파일 형식으로 사용했지만 2018년 구글 I/O에서 새롭게 발표한 배포 파일 형식이 AAB입니다.
1-2. AAB란
Android App Bundle의 약자로 기기에 직접 설치할 수 있는 파일이 아니라 Google Play를 통해 배포되는 형식이며, 실제 기기에 설치되는 과정에서 APK 파일로 변환됩니다.
APK는 App을 실행하는데 필요한 모든 파일과 리소스 등이 포함된 파일있기 때문에 파일의 크기가 커질 수 밖에 없습니다. 하지만 ABB는 기존 APK의 용량 문제를 해결하기 위해서 개발되어 APK와 비슷하지만 모든 코드, 리소스, CPU 아키텍처, 메타데이터를 압축한 zip 파일으로 Google Play는 AAB에서 사용자의 기기에 맞는 언어, 리소스, CPU 아키텍처에 맞는 부분만 빌드하여 APK를 생성하기 때문에 사용자가 다운로드 받는 APK 용량을 줄일 수 있습니다.
2. APK 대신 AAB를 사용하는 이유
APK는 App을 실행하는데 필요한 모든 파일과 모든 기기에 대응할 수 있도록 각 언어별 문자열, 디바이스 해상도별 이미지 등의 리소스 등이 포함된 파일이기 때문에 파일의 크기가 커질 수 밖에 없습니다. 하지만 ABB는 Google Play가 AAB에서 사용자의 기기에 맞는 언어, 리소스, CPU 아키텍처에 맞는 부분만 빌드하여 APK를 생성해 사용자의 기기에 앱을 설치하기 때문에 APK 용량을 줄일 수 있습니다.
3. AAB 생성 방법
앱을 게시할 준비가 되었다면 앱에 서명하고 Google Play와 같은 앱 스토어에 업로드해야 합니다.
AAB 생성을 위해선 앱 서명을 위한 Upload Key가 필요합니다. Key가 있는 경우엔 4, 5번 작업을 건너뛰면 됩니다. (한번 서명된 앱은 해당 키를 통해서만 업데이트 가능합니다.)
1. 안드로이드 스튜디오 좌측 상단 메뉴 - Build 클릭
2. Generate Signed Bundle 클릭
3. Android App Bundle radioButton 활성화 -> Next 클릭
4. Create new... 클릭(Key Store가 없는 경우)
5. Upload Key 및 Key Store 생성
Key Store(키 저장소)
- Key Store Path : 키 저장소를 생성할 위치(파일 명은 fileName.jks 확장자로 작성)
- Password : 키 저장소에 사용할 보안 비밀번호를 생성
- Confirm : 키 저장소에 사용할 보안 비밀번호인 Password 확인을 위한 비밀번호 입력란
Key(키)
- Alias : 키를 식별할 수 있는 이름
- Password : 키에 사용할 보안 비밀번호를 생성하고 확인합니다. 해당 비밀번호는 Key Store(키 저장소) 비밀번호와 동일해야 합니다.
- Validity (years) : 키가 유효하게 유지되는 기간(년)을 설정합니다. 키가 최소 25년 동안 유효하게 유지되어야 앱 수명 동안 같은 키로 앱 업데이트에 서명할 수 있습니다.
- Certificate : 인증서에 사용할 본인 관련 정보를 입력합니다. 해당 정보들은 앱에 표시되지 않지만 APK의 일부로 인증서에 포함됩니다.
6. Upload Key를 이용해 앱을 Build하고 서명하는 작업을 시작할 수 있습니다.
앱이 이미 기존 앱 서명 키로 서명되어 Google Play 스토어에 게시되어 4, 5번 작업을 건너뛰었다면 기존 키에 대한 정보를 입력하고 앱 서명 작업을 합니다.
Upload Key가 없어 4, 5번 작업을 통해 신규 Key를 생성했다면 생성한 키에 대한 정보를 입력하고 앱 서명 작업을 합니다.
Key store password 및 Key password 입력 -> Next 클릭
7. Destination Folder 경로 선택 -> release 선택 -> Finish
- Desination Folder : AAB 파일이 생성될 위치
8. 앱 등록을 위한 AAB 파일 생성 작업이 완료되었습니다.
Google Play Console에서 앱 등록 시 필요한 AAB 파일을 Destination Folder의 경로에서 선택해 추가하면 됩니다.
'Android > Android의 모든 것' 카테고리의 다른 글
👋Android의 모든 것 : 1️⃣App Components (0) | 2022.11.13 |
---|---|
👋Android의 모든 것 (0) | 2022.11.06 |
👋Android의 모든 것 : 1️⃣DialogFragment (0) | 2022.05.11 |
👋Android의 모든 것 : 1️⃣MVVM을 위한 Databinding, LiveData 개념과 예제 (0) | 2022.04.26 |
👋Android의 모든 것 : 1️⃣ AAC ViewModel과 MVVM ViewModel에 대하여 (0) | 2022.04.18 |