개발자
로서 개발 일을 하면서 한가지 중요한 사실을 깨닫게 되었습니다.
바로 언어, 플랫폼 무관 모든 애플리케이션
은 프로그래밍 언어, 프레임워크만 다를 뿐, 구성이 같다는 점이죠. 모든 애플리케이션은 언어-Front-Back으로 구성되어있다는 점이었습니다.
Front - 화면
Back - 서비스 처리단
이 사실을 깨닫고 나니, 웹 개발자로서 어렵게만 느껴졌던 앱 개발에도 쉽게 접근할 수 있게 되었던 것 같습니다.
예전에 하이브리드 웹앱
을 개발해본 경험이 있으나, 성능이 안좋다는 것을 깨닫고는 네이티브 엡 프로그래밍
에 관심이 생겼었는데, 최근에 수익성 창출
과 좋은 앱 아이디어
가 떠올라서 앱 개발에 흥미와 열의를 느끼게 되었습니다.
현재 제 최대 관심사인 안드로이드 앱 개발을 크게 두가지 시리즈로 나누어 포스팅해볼까 합니다.
사실 앱 개발이라고 하면 네이티브 앱의 시장이 파이론에 의해 좁아지고 있는 것은 사실입니다. 그 이유는 하나의 언어로 Android와 IOS를 커버할 수 있는 신기술인 멀티크로스 플랫폼
(React Native, Flutter, 등)의 등장 때문이죠.
이러한 장점때문에 React Native를 잠깐 공부해본 적이 있었는데, React라는 높은(?) 러닝커브와 화면은 RN으로 개발하더라도 순수 네이티브 앱 기능을 이용하거나 확장, 성능 최적화, 배포 등을 위해서는 순수 네이티브 앱 개발을 알아야 된다는 단점이 있었습니다.
정리하자면, 안드로이드를 선택한 이유는 다음과 같습니다.
안드로이드
란 무엇일까?
제가 처음 스마트폰을 접하게 된 것은 갤럭시 S시리즈
였는데요, 2010년 갤럭시 S1이 처음 출시되면서, 스마트폰을 사용할 수 있게 한 안드로이드
운영체제를 처음 접하게 되었고, 우리 사회는 스마트폰과 친숙해지면서 인터넷이 발달하고, 이 안드로이드 시장 또한 급격하게 성장하게 되었습니다.
안드로이드
는 리눅스 기반 모바일 운영체제입니다.
이 운영체제를 개발한 회사는 우리가 흔히알고있는 구글입니다. 구글이 이만큼 성장할 수 있었던 것은 안드로이드 덕분이라해도 과언이 아닙니다. 자체 모바일OS를 사용하는 애플을 제외한 대부분의 스마트폰 회사들이 안드로이드 OS를 장착한 스마트폰을 판매하기 때문입니다.
안드로이드의 주요 특징은 다음과 같습니다.
안드로이드 운영체제를 도식화하면 다음과 같습니다.
안드로이드 앱이 실행되는 레이어(Layer)
를 정리하자면 아래와 같이 통신합니다.
리눅스 커널
⇔ 하드웨어 추상화 레이어
⇔ 안드로이드 런타임
⇔ 자바 API 프레임워크
⇔ 안드로이드 앱
안드로이드 앱은 안드로이드 런타임
위에서 동작하는데, 컴파일 과정은 아래와 같습니다.
안드로이드는 JVM 기반 언어(Java, Kotlin)로 개발하지만, 자바 바이트 코드를 런타임때 그대로 실행하지 않고, DEX 파일
로 컴파일 한뒤, ART(Android Runtime)
에서 실행합니다.
안드로이드가 무엇인지 어떤 특징이 있는지 알았으니, 본격적으로 안드로이드 앱 개발에 들어가보도록 하겠습니다.
우선, 개발에 앞서 개발환경을 세팅해야합니다. Android 애플리케이션 개발에 사용할 환경은 다음과 같습니다.
JDK
: 11버전 이상 (Kotlin
설정을 위해)IDE
: Android Studio
( JDK 설치는 생략하겠습니다. )
Android Studio
는 구글이 개발한 안드로이드 전용 앱을 개발하는 도구(IDE)입니다.
Android Studio 설치 링크에 들어가서 설치파일을 다운로드 받아 설치합니다.
설치 파일을 설치하고 실행하면 다음과 같은 설정 마법사 화면이 나타납니다.
이 마법사는 안드로이드 앱을 개발하는 데 필요한 여러 가지 설정과 컴포넌트, 도구 등을 추가로 설치합니다.
Standard
or Custom
Darcula
or Light
자신이 원하는 설치 유형과 테마를 선택해 다운로드 합니다.
Android Studio 설치를 완료하고 처음 실행했을 때 화면입니다.
Projects
> New Project
] 를 선택하여 새 프로젝트를 선택합니다.Phone and Tablet
> Empty Activity
] 를 선택하여 빈 프로젝트를 생성하고, 프로젝트 설정 값을 기술합니다.Name
: 프로젝트 명을 넣습니다.Pakcage Name
: 패키지 명이자, 앱을 식별할 수 있는 고유 아이디 입니다.Launguage
: 프로그래밍 언어를 선택합니다. Java
/Kotlin
중에서 선택할 수 있습니다.Minimum SDK
설정: 최소 실행 가능한 Android 버전을 선택합니다.실행
버튼을 클릭하면, 흔히 애뮬레이터(Emulator)
라고 부르는 가상 기기(AVD)
에서 현재 앱을 띄울수 있습니다.설정
> 휴대전화 정보
> 소프트웨어 정보
> 빌드번호
7회 클릭 > 개발자 모드
활성화]USB 디버깅
을 허용한다.설정
> 휴대전화 정보
> 개발자 옵션
> USB 디버깅
활성화]이번 포스팅에서는 앱 개발, 특히 왜 안드로이드를 선택하게 되었는지, 여러 인사이트 들을 정리해보았습니다. 외에도 Android의 정의, 특징 등 Android 이론적인 내용과 개발 환경을 세팅하는 시간을 갖게되었습니다.
다음 포스팅에서는 안드로이드 개발에 앞서 앱 개발에 사용할 프로그래밍 언어 kotlin의 사용법을 정리하겠습니다.