웹/모바일 안드로이드 기초

1.3 처음 만드는 안드로이드 앱

개발 프로세스

안드로이드 앱 개발은 일반적인 소프트웨어 개발과 유사한 프로세스로 진행됩니다.

[그림: 안드로이드 개발 프로세스], 출처: https://developer.google.com
  1. 프로젝트 생성: 안드로이드 스튜디오를 사용해 안드로이드 프로젝트를 생성합니다.
  2. 레이아웃 정의: 화면의 구조를 정의하고 다양한 구성요소로 디자인합니다.
  3. 코드 작성: 화면과 상호작용하는 코드를 작성합니다.
  4. 빌드/실행: 소스코드와 리소스등을 통합해 빌드하고 에뮬레이터를 이용해 실행합니다.
  5. 테스트/디버깅: 테스트를 수행하고 3~5 과정을 반복하면서 프로그램을 완성합니다.
  6. 패키징과 배포: 만들어진 앱을 다른 사람들이 사용할 수 있도록 패키지로 만들고 플레이 스토어등을 통해 배포합니다.

빌드

안드로이드 프로젝트는 매우 많은 프로그램 소스와 라이브러리, 의존성, 각종 리소스등을 통합해 컴파일이 이루어집니다. 또한 이를 에뮬레이터에 전송해 실행하고 하는 일련의 과정은 사실 매우 복잡합니다.

보통 이러한 작업을 수행하는 프로그램을 빌드 도구라고 하는데 대표적으로 mavengradle 이 있습니다. 안드로이드 스튜디오에서는 gradle 을 기본으로 사용하고 있으며 .gradle 파일을 통해 빌드 관련 설정이 관리 됩니다.

소스관리

프로그램 개발에 있어 소스관리는 매우 중요하며 특히, 협업을 하는 경우에는 더더욱 중요합니다. 가장 유명한 소스 관리 도구는 git이며 안드로이드 스튜디오도 기본적으로 git을 사용하고 있습니다. 물론 github와도 연동이 가능하며 사용법은 일반적인 git/github 와 다르지 않습니다.

지금 당장은 git/github 를 몰라도 되지만 언젠가는 반드시 사용하게 될 것입니다. 추가적인 학습을 원하면 아래 자료를 참고하기 바랍니다.



프로젝트 템플릿

안드로이드 프로젝트를 생성할 때 제일 먼저 선택 해야 하는 것이 프로젝트 템플릿 입니다. 템플릿은 몇몇 앱의 기본구조를 미리 만들어둔 것으로 이해할 수 있습니다.

처음 안드로이드 개발을 시작할 때는 모든 코드를 처음부터 만드는 것 보다는 기본 템플릿을 사용하는 것이 좋습니다. 어느정도 익숙해 지면 자신의 개발 취향이나 스타일등에 따라 스스로 템플릿 코드를 만들어 활용할 수 있을 것입니다.

[그림: 프로젝트 템플릿 선택]


API 레벨 설정

프로젝트 생성시 앱 호환성을 위해 Target API LevelMinimum API Level 을 설정해야 합니다. 이전 강좌에서 언급한것 처럼 여기서는 SDK 10.0 을 사용하며 최소 요구 API는 7.0을 사용할 것입니다. 만일 여러분이 개발하는 앱이 보다 많은 스마트폰에서 실행되어야 한다면 해당 레벨을 낮춰야 합니다.

[그림: 안드로이드 API별 사용자 분포]

2020.3월 현재 4.1 Jelly Bean 이상의 기기가 약 99.6% 이며 7.0(Nougat)은 약 37.1% 정도의 기기와 호환성을 가지게 됩니다. 일반인들에게 배포하는 앱이라면 호환성을 유지하는 것이 좋지만 학습 과정에서는 가급적 최신 버전중심으로 배우는 것이 새로운 기능 혹은 프로그램 구조에 익숙해지기 쉽습니다. 또한 빌드 속도를 개선하기 위해서도 지나치게 낮은 버전을 선택하지 않도록 합니다.

애플의 경우 단일 제조사인 관계로 최신OS 지원이 꾸준하게 제공되는 편이라 최신 OS로 개발하는 것이 보다 용이 합니다. 현재 iOS13 버전의 경우 약 80% 정도 배포된 것으로 알려져 있고 안드로이드와는 큰 차이가 있는 부분 입니다.

실습 및 참고자료

실습: Hello Android 앱 개발

기본 템플릿을 이용해 간단한 메시지를 출력하는 앱을 개발해 봅니다. 프로젝트 생성에서 부터 AVD를 이용한 실행과정에 익숙해 지도록 합니다. 진행 과정을 먼저 살펴본 이후 실습 하단에 있는 동영상 강좌를 보고 따라해 봅니다.

프로젝트 생성

  1. 안드로이드 시작화면서 Start a new Android Studio project 를 선택하거나 File -> New -> New Project 를 선택합니다.

  2. 템플릿 유형중 Empty Activity 를 선택 합니다.

  3. 프로젝트 정보

[그림: 프로젝트 설정 화면]

Finish 버튼을 누르면 프로젝트가 생성 됩니다. 프로젝트 기본 구조가 생성된 이후에는 빌드에 필요한 구성요소를 추가로 다운로드 하는 과정이 진행되기 때문에 컴퓨터가 다소 느려질 수 있으며 네트워크에 연결되어 있어야 하니 주의 합니다. 안드로이드 스튜디오 하단부의 진행상태를 확인하고 모든 과정이 끝난다음에 코드 작성을 시작하도록 합니다.

프로젝트 구성요소

안드로이드 개발을 위한 프로젝트에는 여러 폴더와 파일들이 있습니다. 개발자가 직접 작성하는 자바혹은 코틀린 코드 파일 이외에도 자동 생성된 파일들이 많이 있습니다. 이들 구성요소에 대해서는 다음장에서 보다 자세히 살펴보게 됩니다. 여기서는 간단하게만 살펴봅니다.

app > java > com.example.helloapp > MainActivity

Activity는 안드로이드 앱의 기본 구성요소 입니다. 하나의 앱은 여러 Activity로 구성될 수 있으며 MainActivity는 시작점이 됩니다.

app > res > layout > activity_main.xml

Activity의 화면 구성을 정의하는 XML 파일입니다. 이미지, 버튼, 텍스트등 화면 구성요소들을 프로그램 코드로 정의하는 것이 아니라 xml 파일로 정의하는 방식으로 직접 파일 수정 혹은 레이아웃 디자인 도구를 사용해 시각적으로 작성하는 방법도 제공 됩니다.

app > manifests > AndroidManifest.xml

manifest 파일은 앱의 기본 특성을 정의하고 intent 등 앱의 각 구성요소를 등록합니다. 앱의 뼈대를 구성하는 메인 설정 파일이라고 보면 됩니다.

Gradle Scripts > build.gradle

프로젝트를 빌드하기 위한 스크립트 입니다. 당장은 직접 사용할 일이 없으며 추후 라이브러리 추가등 빌드 작업에 필요한 항목들을 정의할 수 있습니다. 대규모 프로젝트에서 gradle을 잘 사용하기 위해서는 별도의 학습이 필요 하지만 기초 학습 과정에서는 크게 수정할 일이 없습니다.

동일한 이름으로 두개의 파일이 있습니다. 하나는 프로젝트용으로 ‘Project: Hello App’이고 다른 하나는 앱 모듈용 ‘Module: app’입니다. 만일 프로젝트가 여러 모듈로 구성된다면 각각의 모듈에 build.gradle 파일이 존재 합니다.

실행

오른쪽 상단의 Run app 버튼을 이용해 실행 합니다. 빌드가 진행되고 AVD가 구동되는데 다소 시간이 소요 됩니다. 일단 AVVD가 구동되고 나면 이후 AVD종료시 스냅샷 형태로 저장되기 때문에 다음에 시작할때는 좀 더 빠르게 사용할 수 있습니다.

참고자료