코딩 완료 후 앱 빌딩하는 법

플러터(Flutter)로 화면 UI를 그리고 기능을 다 구현했다고 해서 작업이 끝난 것은 아닙니다. 작성한 다트(Dart) 코드를 스마트폰이 직접 실행할 수 있는 바이너리 설치 파일로 묶어내는 빌드(Build) 과정과, 스토어에 등록하기 위한 식별자 설정 및 배포 절차를 거쳐야 합니다. 그래야 서비스가 완성됩니다.

앱을 만들면 두 가지 목적으로 사용할 수 있습니다. 첫째, 그냥 내 스마트폰에 설치해 개인적으로 사용하거나 혹은 지인들에게 사용을 권유할 수 있습니다. 이럴 때는 복잡한 절차 없이 APK (Android Package)파일을 만들어서 사용하면 됩니다.

둘째, 우리가 즐겨 사용하는 구글 플레이스포어에 정식 업드로를 해서 대중적으로 배포하는 겁니다. 이 과정은 복잡하며 이때는 AAB 파일을 만들어야 합니다.

먼저 apk파일을 만들려면 VS-code나 Cursor 같은 경우 터미널에 flutter build apk –-release 명령어를 입력하면 된다. apk파일은 [자신이 작업한 프로젝트 폴더] /build/app/outputs/flutter-apk/경로를 거처 app-release.apk라는 이름으로 저장된다.이 app-release.apk 파일을 스마트폰에 설치해 사용하면 됩니다.

그 다음에 구글 플레이스토어에 정식 업로드하가 위해서는AAB(Android App Bundle) 파일을 빌드해야 한다. 빌드 명령어는 flutter build appbundle –release이다. 작업 중인 프로젝트 폴더의 디렉토리에서 터미널에 입력하면 된다. 생성된 파일은 [작업중인 프로젝트 폴더]/build/app/outputs/bundle/release/의 경로로 app-release.aab 형식으로 저장된다.
이 파일이 구글 플레이스토어에서 개인의 스마트폰으로 다운로드 되는 방식은 좀 흥미로워서 약간 자세히 설명을 해 보겠다.

구글 플레이스토어 서버에 AAB를 올리면, 구글 시스템이 사용자의 폰 모델(예: 갤럭시 S24, 갤럭시탭 등)을 감지하여 해당 기기에 딱 맞는 맞춤형 APK를 실시간으로 생성해 다운로드해 줍니다. 이것을 동적 배포(Dynamic Delivery) 라고 한다.구글 플레이의 핵심 기술입니다.

비유를 들자면, 예전 방식(APK)이 “모든 부품과 설명서가 다 들어있는 거대한 종합 공구함”을 통째로 다운로드받는 것이었다면, AAB 방식은 “내 집에 필요한 드라이버 딱 하나만 골라서 배송받는 맞춤 주문”과 같습니다.

구체적으로 어떤 원리로 작동하는지 3단계로 나누어 설명해 보겠습니다.

  1. AAB 안에는 무엇이 들어있나? (부품 모음집)

개발자가 구글에 제출하는 AAB(Android App Bundle) 파일은 완성된 단일 앱이 아니라, 앱을 구성하는 모든 부품(모듈)이 잘게 쪼개져 정리된 상자입니다. 예를 들면 아래와 같이 구성되어 있습니다.

  • 화면 해상도별 이미지: 저화질(mdpi), 고화질(hdpi), 초고화질(xxxhdpi) 이미지
  • CPU 두뇌 규격: 64비트 최신 칩(arm64-v8a), 구형 32비트 칩(armeabi-v7a), PC 에뮬레이터용(x86_64)
  • 언어 팩: 한국어, 영어, 일본어, 스페인어 등 번역 리소스
 
  1. 구글 플레이스토어가 실시간으로 하는 일 (기기 감지 및 맞춤 조립)

사용자가 플레이스토어에서 [설치] 버튼을 누르는 순간, 구글 서버는 1초도 안 되는 찰나에 다음 과정을 처리합니다.

  • 기기 스캔: 다운로드를 요청한 스마트폰의 기종 정보를 읽어옵니다.
    • “이 폰은 갤럭시 S24네? CPU는 arm64-v8a이고, 디스플레이는 초고화질(xxxhdpi)이며, 시스템 언어는 ‘한국어’로 설정되어 있군.”
    •  
  • 불필요한 부품 제거:
    • 구형 32비트 CPU 코드 삭제
    • 저화질/중화질 이미지 삭제
    • 영어, 일본어, 아랍어 등 쓰지 않는 언어 파일 삭제
    •  
  • 맞춤형 Split APK 실시간 조립:
    • 갤럭시 S24에 꼭 필요한 부품만 묶어서 해당 기기 전용 맞춤형 APK를 즉석에서 생성합니다.
  • 전송: 이 가벼워진 전용 APK를 사용자 스마트폰으로 쏴줍니다.
 
  1. 이런 방식을 쓰는 이유 (사용자와 개발자의 이점)
  • 다운로드 용량 획기적 절감 (평균 15~35% 감소):

내 스마트폰에서 절대 쓸 일 없는 외국어 파일이나 다른 기종의 그래픽 리소스를 다운로드받느라 데이터 요금과 저장 공간을 낭비할 필요가 없습니다.

  • 앱 다운로드 및 설치 속도 향상:

파일 크기가 50MB에서 15~20MB 수준으로 줄어들기 때문에 5G/Wi-Fi 환경에서 훨씬 빠르게 설치가 끝납니다.

  • 설치율 증가:

용량이 가벼울수록 사용자가 설치 도중 취소하거나 용량 부족으로 설치를 포기하는 비율이 크게 줄어듭니다.

즉, 개발자는 “모든 기기용 부품을 AAB 하나에 담아 구글에 넘기기만 하면”, 구글 서버가 알아서 전 세계 수천 가지 종류의 안드로이드 기기에 맞춰 “가장 날씬한 맞춤형 파일로 바꿔서 배달해 주는 구조”입니다.

Picture of 이진호

이진호