Skip to main content

안드로이드 앱 개발의 전체 그림 이해하기

Views 93약 9분생성형 AI 활용
Summary

앱 개발은 화면을 만드는 일만이 아니다

안드로이드 앱을 처음 배울 때 가장 먼저 떠올리는 것은 버튼, 글자, 목록 같은 화면입니다. 물론 화면은 중요합니다. 사용자는 화면을 통해 앱을 보고, 입력하고, 결과를 확인합니다. 하지만 실제 앱 개발은 화면 제작보다 넓은 일입니다.

앱은 사용자의 입력을 받고, 데이터를 저장하고, 서버와 통신하고, 알림을 보내고, 카메라나 위치 같은 기기 기능을 사용합니다. 때로는 앱이 화면에 보이지 않을 때도 필요한 작업을 이어 가야 합니다. 이런 일을 안전하게 처리하려면 안드로이드 운영체제, 개발 도구, 앱 구조, 빌드 과정, 배포 흐름을 함께 이해해야 합니다.

이 장의 목표는 세부 문법을 외우는 것이 아닙니다. 앞으로 배울 내용이 어디에 놓이는지 큰 지도를 갖는 것입니다. 지도가 있으면 새로운 용어가 나와도 길을 잃지 않습니다.

안드로이드 앱 개발의 전체 그림 이해하기AI 생성 이미지

안드로이드 위에서 앱이 실행되는 방식

안드로이드는 스마트폰, 태블릿, TV, 자동차, 웨어러블 기기 등에서 실행되는 운영체제입니다. 운영체제는 앱과 기기 사이에 있습니다. 앱이 화면을 그리거나, 파일을 저장하거나, 인터넷에 접속하거나, 카메라를 사용할 때 안드로이드 시스템이 중간에서 규칙을 관리합니다.

앱은 혼자 모든 것을 직접 제어하지 않습니다. 예를 들어 카메라 앱을 만들고 싶다고 해서 카메라 하드웨어를 마음대로 열 수 있는 것은 아닙니다. 먼저 앱이 카메라 기능을 사용하겠다고 선언해야 하고, 필요한 경우 사용자에게 권한을 요청해야 합니다. 사용자가 거부하면 앱은 다른 흐름을 준비해야 합니다.

이 구조는 불편해 보일 수 있지만 매우 중요합니다. 사용자의 사진, 위치, 마이크, 연락처 같은 정보는 민감합니다. 안드로이드는 앱이 필요한 기능만 사용하도록 제한하고, 사용자가 통제할 수 있게 만듭니다.

안드로이드 앱은 여러 구성 요소로 이루어집니다. 대표적으로 다음 요소가 있습니다.

  • 액티비티(Activity): 사용자가 보는 화면의 입구입니다. 예전에는 화면 하나마다 액티비티를 여러 개 만들기도 했고, 현대 앱에서는 하나의 액티비티 안에서 여러 Compose 화면을 전환하는 방식도 자주 사용합니다.

  • 서비스(Service): 화면에 직접 보이지 않아도 필요한 작업을 처리하는 구성 요소입니다. 음악 재생, 위치 추적, 긴 업로드 같은 작업에서 등장합니다.

  • 브로드캐스트 리시버(Broadcast Receiver): 시스템이나 다른 앱에서 발생한 이벤트를 받는 구성 요소입니다.

  • 콘텐츠 프로바이더(Content Provider): 앱 사이에서 데이터를 안전하게 공유할 때 사용하는 구성 요소입니다.

처음부터 이 모든 것을 깊게 알 필요는 없습니다. 다만 앱은 단순한 코드 파일 하나가 아니라, 안드로이드 시스템의 규칙 안에서 여러 구성 요소와 API가 연결되어 실행된다는 점을 기억하면 됩니다.

Android Studio는 개발의 중심 도구다

안드로이드 앱을 만들 때 가장 많이 사용하는 도구는 Android Studio입니다. Android Studio는 코드를 작성하는 편집기이면서, 앱을 실행하고 오류를 확인하고 배포 파일을 만드는 통합 개발 환경입니다.

초보자가 직접 모든 도구를 따로 설치하고 연결하기는 어렵습니다. Android Studio는 Android SDK, 에뮬레이터, 디버깅 도구, Gradle 빌드 환경을 한곳에서 사용할 수 있게 해 줍니다. Android SDK는 안드로이드 앱을 만들기 위한 API와 도구 모음입니다. Android Studio에서는 이 SDK와 라이브러리를 사용해 코드를 작성하고, Gradle로 앱을 빌드하며, 에뮬레이터나 실제 기기에서 실행하고 디버깅할 수 있습니다1.

앞으로 자주 만나게 될 작업 흐름은 다음과 같습니다.

  1. Android Studio에서 프로젝트를 만든다.

  2. Kotlin 코드와 화면 코드를 작성한다.

  3. 필요한 라이브러리를 Gradle에 추가한다.

  4. 에뮬레이터나 실제 기기에서 실행한다.

  5. Logcat과 디버거로 오류를 확인한다.

  6. 수정한 뒤 다시 실행한다.

  7. 출시용 빌드를 만들어 배포한다.

처음에는 이 과정이 복잡해 보입니다. 하지만 결국 반복되는 흐름은 단순합니다. 코드를 바꾸고, 빌드하고, 실행하고, 확인하고, 다시 고칩니다.

Kotlin을 중심으로 배우는 이유

안드로이드 앱은 Kotlin과 Java로 개발할 수 있습니다. Java는 오랫동안 안드로이드 개발에 사용된 언어입니다. 오래된 예제와 라이브러리 문서에서 Java 코드를 많이 볼 수 있습니다. Kotlin은 더 현대적인 문법을 제공하며, 현재 안드로이드 개발에서 널리 사용됩니다. Android Studio도 프로젝트를 만들 때 Java와 Kotlin을 선택할 수 있습니다1.

이 책은 Kotlin을 중심으로 진행합니다. 이유는 세 가지입니다.

첫째, Kotlin은 안드로이드 공식 개발 흐름과 잘 맞습니다. Jetpack Compose, 코루틴, Flow, ViewModel 같은 현대 안드로이드 기술을 배울 때 Kotlin 문법이 자연스럽게 쓰입니다.

둘째, Kotlin은 null 안전성을 언어 차원에서 지원합니다. null은 값이 없다는 뜻입니다. 앱에서는 서버 응답이 비어 있거나, 사용자가 값을 입력하지 않았거나, 파일을 찾지 못하는 일이 자주 발생합니다. Kotlin은 이런 상황을 코드에서 명확히 다루게 해 앱 충돌을 줄이는 데 도움이 됩니다.

셋째, Kotlin은 간결합니다. 같은 기능을 더 적은 코드로 표현할 수 있어 초보자가 핵심 흐름을 이해하기 좋습니다.

물론 Java를 몰라도 된다는 뜻은 아닙니다. 기존 프로젝트나 오래된 문서를 읽을 때 Java를 만날 수 있습니다. 하지만 처음부터 두 언어를 동시에 깊게 배우려고 하면 부담이 커집니다. 이 책에서는 Kotlin으로 앱 개발의 기본기를 먼저 다집니다.

Gradle, APK, AAB, Jetpack의 역할

앱을 작성한 코드 그대로 사용자에게 전달할 수는 없습니다. 앱은 빌드 과정을 거쳐 설치 가능한 형태로 만들어져야 합니다. 이때 중요한 도구가 Gradle입니다.

Gradle은 앱의 Kotlin 코드, 리소스, 라이브러리, 설정 파일을 모아 빌드합니다. 그리고 개발 중 실행할 수 있는 앱 파일이나 배포용 산출물을 만듭니다. Android에서 대표적인 산출물은 APK와 AAB입니다.

  • APK(Android Package): 안드로이드 기기에 설치할 수 있는 앱 패키지입니다.

  • AAB(Android App Bundle): Google Play 배포에 주로 사용하는 형식입니다. Google Play가 사용자 기기에 맞는 APK를 생성해 제공합니다.

Gradle은 빌드만 담당하지 않습니다. 어떤 Android 버전을 기준으로 컴파일할지, 앱의 고유 ID는 무엇인지, 어떤 라이브러리를 사용할지, 출시 버전 번호는 무엇인지도 관리합니다.

또 하나 중요한 이름은 Jetpack입니다. Jetpack은 안드로이드 앱 개발에서 반복적으로 발생하는 문제를 해결하기 위한 공식 라이브러리 묶음입니다. 화면 상태를 관리하는 ViewModel, 화면 이동을 돕는 Navigation, 로컬 데이터베이스를 쉽게 다루는 Room, 백그라운드 작업을 예약하는 WorkManager, 현대적인 UI를 만드는 Compose 등이 Jetpack 생태계에 포함됩니다.

즉, Android Studio는 작업 공간이고, Kotlin은 앱 동작을 쓰는 언어이며, Gradle은 앱을 빌드하는 도구이고, Jetpack은 앱을 더 안정적으로 만들기 위한 공식 도구 상자라고 이해하면 됩니다.

XML UI와 Jetpack Compose UI

안드로이드 화면을 만드는 방식은 크게 두 흐름으로 볼 수 있습니다.

전통적인 방식은 XML 레이아웃입니다. XML 파일에 버튼, 텍스트, 입력창 같은 UI 요소를 배치하고, Kotlin 또는 Java 코드에서 그 요소를 찾아 동작을 연결합니다. 예를 들어 XML은 "화면에 버튼이 있다"를 정의하고, Kotlin 코드는 "버튼을 누르면 글자를 바꾼다"를 처리합니다. 많은 기존 앱과 오래된 예제는 이 방식을 사용합니다.

현대적인 방식은 Jetpack Compose입니다. Compose는 XML 대신 Kotlin 함수로 화면을 만듭니다. Text, Button, Column 같은 UI 함수를 조합해 화면을 구성합니다. 중요한 차이는 화면을 직접 하나씩 바꾸는 방식보다, 현재 상태에 따라 화면이 어떻게 보여야 하는지를 선언한다는 점입니다.

예를 들어 로그인 화면에서 이메일 입력값이 비어 있으면 버튼을 비활성화하고, 올바른 형식이면 버튼을 활성화할 수 있습니다. Compose에서는 입력값이라는 상태가 바뀌면 그 상태를 읽는 화면이 다시 계산되어 새로운 UI가 표시됩니다.

두 방식의 차이를 간단히 정리하면 다음과 같습니다.

구분XML 기반 UIJetpack Compose
화면 작성 위치XML 파일 중심Kotlin 코드 중심
동작 연결Kotlin/Java 코드에서 UI 요소를 찾아 연결상태와 이벤트를 함수로 연결
화면 갱신 방식UI 요소를 직접 변경하는 코드가 많음상태가 바뀌면 화면이 다시 구성됨
학습 방향기존 프로젝트 이해에 유용현대 안드로이드 개발에 적합

이 책은 Jetpack Compose를 중심으로 화면을 만듭니다. 다만 XML이 무엇인지도 알아야 합니다. 실무에서는 오래된 코드와 새 코드가 함께 존재하는 경우가 많기 때문입니다.

앱 개발의 전체 흐름

앱 개발은 "좋은 아이디어가 떠올랐다"에서 끝나지 않습니다. 아이디어를 실제 앱으로 만들려면 단계가 필요합니다.

첫 번째는 요구사항 정리입니다. 만들고 싶은 기능을 사용자 행동 중심으로 적습니다. "Room을 사용한다"는 요구사항이 아닙니다. "사용자가 학습 항목을 추가하고 완료 표시를 할 수 있다"가 요구사항입니다.

두 번째는 화면 설계입니다. 홈 화면, 상세 화면, 추가 화면, 설정 화면처럼 사용자가 이동할 화면을 나눕니다. 각 화면에서 보여 줄 정보와 사용자가 할 수 있는 행동을 정합니다.

세 번째는 데이터 설계입니다. 앱이 어떤 데이터를 기억해야 하는지 정합니다. 예를 들어 학습 관리 앱이라면 제목, 설명, 완료 여부, 목표 날짜, 알림 시간 같은 값이 필요할 수 있습니다.

네 번째는 구현입니다. Compose로 화면을 만들고, ViewModel로 상태를 관리하고, Repository로 데이터 흐름을 정리합니다. 필요하면 Room으로 로컬 저장소를 만들고, Retrofit으로 서버 API와 통신합니다.

다섯 번째는 실행과 테스트입니다. Android Studio의 에뮬레이터나 실제 기기에서 앱을 실행합니다. 화면이 잘 보이는지, 버튼이 기대대로 동작하는지, 오류 상황에서 앱이 멈추지 않는지 확인합니다.

여섯 번째는 디버깅과 품질 개선입니다. 크래시가 발생하면 Logcat으로 원인을 찾습니다. 느린 화면은 성능을 측정하고, 접근성이 부족한 화면은 TalkBack이나 글자 크기 변경 상황에서 확인합니다.

마지막은 빌드와 배포입니다. 출시용 앱을 만들고 서명한 뒤 Google Play에 등록합니다. 배포 후에는 리뷰, 크래시 리포트, 사용자 피드백을 보며 앱을 개선합니다.

처음에는 작게 만들고 넓혀 간다

안드로이드에는 배울 것이 많습니다. Kotlin, Compose, 상태 관리, Navigation, Room, 네트워크, 코루틴, 아키텍처, 권한, 알림, 테스트, 배포까지 이어집니다. 처음부터 모든 것을 완벽히 이해하려고 하면 금방 지칩니다.

가장 좋은 방법은 작은 앱을 만들며 하나씩 붙이는 것입니다. 처음에는 글자와 버튼이 있는 화면을 만듭니다. 다음에는 입력값을 상태로 관리합니다. 그다음 화면 이동을 추가하고, 데이터를 저장하고, 서버와 통신하고, 알림을 붙입니다. 작은 성공을 쌓으면 큰 앱의 구조도 자연스럽게 보입니다.

이 책의 흐름도 그렇게 구성됩니다. 먼저 개발 환경을 준비하고 첫 앱을 실행합니다. 그다음 Kotlin 기초와 프로젝트 구조를 이해합니다. 이후 Compose 화면, 상태 관리, 화면 이동, 디자인, 데이터 저장, 네트워크, 코루틴, 아키텍처로 확장합니다. 마지막에는 테스트와 배포를 거쳐 실전 프로젝트로 전체 흐름을 연결합니다.

안드로이드 앱 개발은 많은 기술을 한 번에 외우는 일이 아닙니다. 사용자의 문제를 작은 기능으로 나누고, 안드로이드의 규칙 안에서 안정적으로 연결하는 과정입니다. 이 큰 그림을 기억하면 앞으로 만날 세부 기술들이 서로 떨어진 조각이 아니라 하나의 앱을 완성하는 부품으로 보일 것입니다.

참고

1A guide to Android app development for complete beginners in 5 easy steps

책 목록

처음부터 출시까지 배우는 안드로이드 앱 개발

전체 목차 보기

이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.

틸노트는 사용자가 AI를 활용해 노트를 쉽게 작성하거나 편집할 수 있는 서비스입니다.

AI 스퀘어 단톡방에 함께해요

AI 활용과 틸노트 사용 팁을 나누는 오픈채팅방입니다. 입장 비밀번호는 tilnote입니다.

참여하기