[Android] 안드로이드 소개
모바일 앱을 개발하고 싶은데, 어떤 플랫폼에서 개발해 볼까?
모바일 운영 체제는 스마트폰, 태블릿 등의 운영 체제이며 대표적으로 안드로이드와 IOS가 있다.
스마트폰 분야에서는 안드로이드 OS의 시장 점유율이 높고, 태블릿 분야는 IOS의 점유율이 높다.
IOS 개발자는 수요가 많지만 공급이 적어 상대적으로 구직이 쉬운 장점이 있고, 안드로이드 분야는 전체적으로 시장 점유율이 좀 더 높아 공부할 수 있는 요소들이 많다는 장점이 있다.
각 분야별로 장단점이 있으니 잘 비교해 보고 공부할 분야를 결정하는 것이 중요하다.
안드로이드 앱 개발은 Kotlin / Java / C / C++로 할 수 있고, Android 카테고리에서는 IntelliJ를 이용한 안드로이드 앱 프로그래밍에 대해 다룬다.
본격적으로 프로그래밍에 대해 배우기 전에 안드로이드에 대해 간단히 알아보자.
1. 안드로이드의 특징
* 자바 기반이다.
자바 플랫폼을 기반으로 하기 때문에 자바에서 사용할 수 있는 유용한 라이브러리를 사용할 수 있다.
* 오픈 소스이다.
* 완벽한 컴포넌트를 지원한다.
자바로 프로그램을 만들면 확장자명으로. java가 붙게 된다. 이 클래스 파일은 JVM에서 인터프리트 되고 실행되는데, 이점 때문에 자바는 다른 언어들에 비해 느리고, 모바일 환경에서는 적합하지 않다. 하지만 모바일 환경에서는 ART라는 가상 머신을 사용해 확장자명이. java인 파일을. dex 파일로 변환해 ART에서 바로 실행하게 함으로써 단점을 극복했다.
* 앱 간의 연동이 쉽다.
예시를 통해 알아보자.
어떤 앱을 만드는데 카메라 기능이 필요하다고 하면, 카메라 역할을 하는 앱을 연동시킴으로써 가져다 쓸 수 있다.
뒤에 나오는 컴포넌트와 인텐트 관련 내용을 통해 더 깊게 이해하자.
위에 언급한 ART에 대해 자세히 알아보자.
기존 모바일 환경에서는 JVM대신 달빅을 사용했다.
달빅은 위와 같은 문제점이 있었고, 현재는 달빅 대신 ART를 사용한다.
2. 안드로이드 앱의 구성요소
안드로이드 앱은 컴포넌트로 구성되며, 컴포넌트에는 총 4가지가 있다.
* 액티비티
사용자 인터페이스 화면을 가지는 하나의 작업이다.
앱에서 보는 화면이라고 이해하면 된다.
액티비티들이 모여서 애플리케이션을 이룬다.
문자메세지 앱을 예로 들면,
#1 문자메세지를 보내는 액티비티
#2 수신한 문자메세지를 확인하는 액티비티
등등.. 애플리케이션은 여러 가지 액티비티로 구성된다.
* 서비스
화면을 가지고 있지 않은, 백그라운드에서 실행되는 컴포넌트이다.
배경음악을 연주하는 걸 예시로 들 수 있다.
* 방송 수신자
어떤 이벤트가 발생했을 때, (배터리가 부족할 때, 화면이 꺼졌을 때 등) 그것에 대응하는 컴포넌트다.
* 컨텐츠 제공자
앱의 데이터를 제공한다.
데이터의 출처는 다양할 수 있다. (SQL , 파일 , 클라우드)
앱들은 컨텐츠 제공자를 통해서 데이터를 다룬다.
3. 인텐트
인텐트는 앱 간의 연동에서 사용된다.
공유하는 기능을 하는 앱이 필요하면, 인텐트는 공유하는 역할을 하는 앱들을 보여주고 사용할 수 있도록 한다.
위의 사진으로 인텐트가 언제 쓰이는지 알 수 있다.
4. 매니페스트 파일
앱들은 여러 가지 컴포넌트들로 구성돼있다.
그리고 그 앱이 어떤 컴포넌트들로 구성돼있는지 알려주는 것이 매니페스트이다.
매니페스트 파일은 XML 형식이다.
* XML
XML은 안드로이드에서 많이 사용된다.
HTML이 문서의 내용을 어떻게 보여줄지를 정의한다면,
XML은 기계가 문서의 내용을 처리할 수 있도록 표현돼있다.
위의 XML 파일은 앱이 어떤 컴포넌트들로 구성돼있는지 알려주고, 기계는 이걸 해석한다.
<activity>로 액티비티 요소 선언하고 나머지 요소들도 동일한 방식으로 선언한다.
XML에 대해 조금 더 설명하면,
마크업 언어이다.
한글이나 워드는 사람이 볼 때는 텍스트 파일이지만, 기계는 이 파일을 010101111010101101011 즉, binary로 해석한다.
XML 문서는 텍스트 파일이다. 기계의 플랫폼에 관계없이 처리할 수 있다.
안드로이드 앱의 화면을 담당하는 부분을 레이아웃이라고 하는데,
화면 배치가 쉽지가 않다. 생각해야 할 점이 참 많다.
'Mobile > Android' 카테고리의 다른 글
[Android] Java 코드와 XML 레이아웃 (0) | 2021.10.11 |
---|---|
[Android] 레이아웃 다루기 (0) | 2021.10.11 |
[Android] 정렬과 배치 (0) | 2021.10.03 |
[Android] 뷰 / 레이아웃 기초 2 (0) | 2021.10.03 |
[Android] 뷰 / 레이아웃 기초 1 (0) | 2021.09.28 |
댓글
이 글 공유하기
다른 글
-
[Android] 레이아웃 다루기
[Android] 레이아웃 다루기
2021.10.11 -
[Android] 정렬과 배치
[Android] 정렬과 배치
2021.10.03 -
[Android] 뷰 / 레이아웃 기초 2
[Android] 뷰 / 레이아웃 기초 2
2021.10.03 -
[Android] 뷰 / 레이아웃 기초 1
[Android] 뷰 / 레이아웃 기초 1
2021.09.28