💎 들어가며

💡 Insights

개발자로서 개발 일을 하면서 한가지 중요한 사실을 깨닫게 되었습니다.

바로 언어, 플랫폼 무관 모든 애플리케이션은 프로그래밍 언어, 프레임워크만 다를 뿐, 구성이 같다는 점이죠. 모든 애플리케이션은 언어-Front-Back으로 구성되어있다는 점이었습니다.

  • Front - 화면

  • Back - 서비스 처리단


이 사실을 깨닫고 나니, 웹 개발자로서 어렵게만 느껴졌던 앱 개발에도 쉽게 접근할 수 있게 되었던 것 같습니다.

예전에 하이브리드 웹앱을 개발해본 경험이 있으나, 성능이 안좋다는 것을 깨닫고는 네이티브 엡 프로그래밍에 관심이 생겼었는데, 최근에 수익성 창출좋은 앱 아이디어가 떠올라서 앱 개발에 흥미와 열의를 느끼게 되었습니다.

현재 제 최대 관심사인 안드로이드 앱 개발을 크게 두가지 시리즈로 나누어 포스팅해볼까 합니다.

  • 앱을 공부하는 여정 (Do it Android!)
  • 실제 앱을 개발하는 여정 (제목 미정)

💡 Why Android?

사실 앱 개발이라고 하면 네이티브 앱의 시장이 파이론에 의해 좁아지고 있는 것은 사실입니다. 그 이유는 하나의 언어로 Android와 IOS를 커버할 수 있는 신기술멀티크로스 플랫폼 (React Native, Flutter, 등)의 등장 때문이죠.

이러한 장점때문에 React Native를 잠깐 공부해본 적이 있었는데, React라는 높은(?) 러닝커브와 화면은 RN으로 개발하더라도 순수 네이티브 앱 기능을 이용하거나 확장, 성능 최적화, 배포 등을 위해서는 순수 네이티브 앱 개발을 알아야 된다단점이 있었습니다.


정리하자면, 안드로이드를 선택한 이유는 다음과 같습니다.

  • 멀티크로스 플랫폼 개발은 모바일 시장을 완전히 대체할 수 없다.
  • 나는 갤럭시(안드로이드) 유저다. 앞으로도 그럴 생각이다.
    ⇒ 시뮬레이션이 편안하다.
    ⇒ 안드로이드 앱 개발만 해도 충분하다.
  • 구글 플레이 스토어 등록 비용은 매우 싸다.
    ⇒ 구글 플레이 스토어는 약 3만원 정도의 등록후 비용을 지불하지 않는다
    ⇒ 반면 애플은 매년 애플리케이션을 유지하기 위해 10만원이상의 비용을 지불해야된다.
  • IOS 개발을 위해서는 MacOS가 필요한데, 나는 MacOS를 살 생각이 (아직까지는) 없다.
    ⇒ IOS 개발은 힘들단 소리..

1. Android

1.1 Definition

안드로이드란 무엇일까?

제가 처음 스마트폰을 접하게 된 것은 갤럭시 S시리즈였는데요, 2010년 갤럭시 S1이 처음 출시되면서, 스마트폰을 사용할 수 있게 한 안드로이드 운영체제를 처음 접하게 되었고, 우리 사회는 스마트폰과 친숙해지면서 인터넷이 발달하고, 이 안드로이드 시장 또한 급격하게 성장하게 되었습니다.


안드로이드는 리눅스 기반 모바일 운영체제입니다.

이 운영체제를 개발한 회사는 우리가 흔히알고있는 구글입니다. 구글이 이만큼 성장할 수 있었던 것은 안드로이드 덕분이라해도 과언이 아닙니다. 자체 모바일OS를 사용하는 애플을 제외한 대부분의 스마트폰 회사들이 안드로이드 OS를 장착한 스마트폰을 판매하기 때문입니다.


1.2 Features

안드로이드의 주요 특징은 다음과 같습니다.

  • 오픈소스 리눅스 기반 운영체제
  • 안드로이드 앱은 자바나 코틀린 언어를 이용해 개발
  • 안드로이드 OS의 주요 부분과 라이브러리, 구글에서 만든 앱 등의 코드는 대부분 공개됭어 있음
  • 안드로이드 스마트폰은 구글뿐 아니라 여러 제조업체에서 만들 수 있음
  • 안드로이드 앱은 구글의 플레이 스토어 뿐만 아니라 다양한 방법으로 사용자에게 배포가능
  • 안드로이드 플랫폼에서는 모든 응용 프로그램이 평등하다는 사상을 바탕으로, 모바일에 기본으로 탑재된 앱과 개발자가 만든 앱이 똑같은 환경에서 똑같은 API를 이용함

1.3 Android OS

안드로이드 운영체제를 도식화하면 다음과 같습니다.

안드로이드 앱이 실행되는 레이어(Layer)를 정리하자면 아래와 같이 통신합니다.

  • 리눅스 커널하드웨어 추상화 레이어안드로이드 런타임자바 API 프레임워크안드로이드 앱

1.4 Android App Compile

안드로이드 앱은 안드로이드 런타임 위에서 동작하는데, 컴파일 과정은 아래와 같습니다.

안드로이드는 JVM 기반 언어(Java, Kotlin)로 개발하지만, 자바 바이트 코드를 런타임때 그대로 실행하지 않고, DEX 파일로 컴파일 한뒤, ART(Android Runtime)에서 실행합니다.



2. 개발환경 준비하기

안드로이드가 무엇인지 어떤 특징이 있는지 알았으니, 본격적으로 안드로이드 앱 개발에 들어가보도록 하겠습니다.

우선, 개발에 앞서 개발환경을 세팅해야합니다. Android 애플리케이션 개발에 사용할 환경은 다음과 같습니다.

  • JDK: 11버전 이상 (Kotlin 설정을 위해)
  • IDE: Android Studio

( JDK 설치는 생략하겠습니다. )

2.1 Android Studio

Android Studio는 구글이 개발한 안드로이드 전용 앱을 개발하는 도구(IDE)입니다.

Android Studio 설치 링크에 들어가서 설치파일을 다운로드 받아 설치합니다.


Settings & Configuration

설치 파일을 설치하고 실행하면 다음과 같은 설정 마법사 화면이 나타납니다.

이 마법사는 안드로이드 앱을 개발하는 데 필요한 여러 가지 설정과 컴포넌트, 도구 등을 추가로 설치합니다.

  • 설치 유형: Standard or Custom
  • UI Theme: Darcula or Light

자신이 원하는 설치 유형과 테마를 선택해 다운로드 합니다.


2.2 First Application

Create New Project

Android Studio 설치를 완료하고 처음 실행했을 때 화면입니다.

  1. [Projects > New Project] 를 선택하여 새 프로젝트를 선택합니다.

  1. [Phone and Tablet > Empty Activity] 를 선택하여 빈 프로젝트를 생성하고, 프로젝트 설정 값을 기술합니다.
  • Name: 프로젝트 명을 넣습니다.
  • Pakcage Name: 패키지 명이자, 앱을 식별할 수 있는 고유 아이디 입니다.
  • Launguage: 프로그래밍 언어를 선택합니다. Java/Kotlin 중에서 선택할 수 있습니다.
  • Minimum SDK 설정: 최소 실행 가능한 Android 버전을 선택합니다.
    ⇒ 이 때, 너무 낮게 잡으면 최신 기능을 이용하지 못하고, 너무 높게 잡으면 호환성이 떨어질 수 있으니 적정한 선을 잡는 것이 좋습니다.

Run Project

  1. 프로젝트 생성후, 실행되는 IDE 화면입니다.
  2. 실행 버튼을 클릭하면, 흔히 애뮬레이터(Emulator)라고 부르는 가상 기기(AVD)에서 현재 앱을 띄울수 있습니다.

실제 스마트폰에서 실행

  1. 윈도우용 USB 드라이버 설치: 링크에서 자신의 스마트폰과 맞는 드라이버 설치
  2. 스마트폰의 USB 디버깅 허용
  3. 스마트폰과 컴퓨터 연결후, 디바이스 선택후 실행한다.

  • 개발자 모드를 활성화한다.
    [설정 > 휴대전화 정보 > 소프트웨어 정보 > 빌드번호 7회 클릭 > 개발자 모드 활성화]
  • USB 디버깅을 허용한다.
    [설정 > 휴대전화 정보 > 개발자 옵션 > USB 디버깅 활성화]

💎 References

  • [Book] 깡샘의 안드로이드 앱 프로그래밍 with 코틀린, 강성윤, 이지스퍼블리싱

💎 마치며

이번 포스팅에서는 앱 개발, 특히 왜 안드로이드를 선택하게 되었는지, 여러 인사이트 들을 정리해보았습니다. 외에도 Android의 정의, 특징 등 Android 이론적인 내용과 개발 환경을 세팅하는 시간을 갖게되었습니다.

다음 포스팅에서는 안드로이드 개발에 앞서 앱 개발에 사용할 프로그래밍 언어 kotlin의 사용법을 정리하겠습니다.

profile
Java, Spring 기반 풀스택 개발자의 개발 블로그입니다.

0개의 댓글