안녕하세요! 이상선입니다.
오늘은 안드로이드 2회차 강의입니다.
대략 3회차까지는 조금 지루하지만 필수라고 생각하는 이론적인 지식을 설명해 드릴까 합니다.
기본적인 것을 모르고 틀이 잡히는 경우는 없습니다. 반드시 알아야 될 사전 지식과 이와 더불어 파생되는 지식을
같이 잘 융합하여 개발하는 것이 매우 중요하다고 생각합니다.
공학적인 요소와 개발이라는 것은 절대 속성으로 단기간에 배울 수 있는 것이 아닙니다.
오늘도 힘차게 자! 가볼까요?
이상선의 안드로이드 개발 10분 강의
Mobile
여러분은 모바일이라는 것이 무엇이라고 생각하시나요?
혹시 모바일 모바일 입으로는 말하면서 그 의미에 대해 생각해 보신 적이 있나요?
모바일이란?
= 모바일은 특정 장소에 구애 받지 않고 인터넷이나 전화를 사용하는 것을 말한다.
스마트폰, 웨어러블, 테블릿 PC 등이 여기에 포함된다.
어떤가요? 생각보다 어렵지 않으시죠? 장소에 구애 받지 않고 인터넷 또는 전화를 사용하는 것!
바로 세상이 매우 좋아졌음을 의미하는 것이겠죠.
이 모바일에도 운영체제가 있다면 여러분은 믿으시겠어요?
하지만 스마트(똑똑한)폰 이라는 것 자체가 운영체제가 들어가 소프트웨어를 컨트롤할 수 있기 때문에
붙여진 이름이라는 것!
대표적으로 제일 많이 들어본 안드로이드, IOS 운영체제가 모바일 운영체제에 속합니다.
저는 개발을 하느라 둘다 사용하고 있는데요!
다~ 나름대로의 장단점이 존재하더군요! 자세한건 다른 챕터에서 언급하겠습니다.
모바일 플랫폼?
= 모바일 플랫폼은 개발 및 실행 환경을 의미합니다.
쉽게 말씀드리면 구글의 안드로이드, 애플의 IOS가 바로 모바일 플랫폼인 것이죠.
요즘엔 운영체제 이름 자체가 모바일 플랫폼이라는 의미랑 비슷하게 해석이 되지만,
사실 개발 언어, 정책, 스토어, 기반 브라우저 등 많은 요소가 모바일 플랫폼이라는 단어에 속해 있습니다.
안드로이드 특징
= 여기에선 안드로이드에 대한 개발을 설명하므로 안드로이드 기준으로 설명 드리겠습니다.
안드로이드는 정책 자체가 매우 개방적입니다. 따라서 개발자가 마음대로 개발하여 직접 구글 플레이 스토어에 등록이
가능한 시스템이죠. 무료/유료 상관없이 출시 가능합니다.
옛날에는 개발자 등록 비용이 조금 높았지만, 요즘엔 약 3만원 정도에 평생 개발자 계정을 만들 수 있습니다.
필자도 이미 개인용 3개, 팀용 2개나 개발자 계정이 있죠!
또한 안드로이드는 그 뿌리가 리눅스입니다. 따라서 리눅스 커널을 사용하여 각종 드라이버를 지원하고
메모리/프로세스를 관리하며, 안정적인 멀티스레딩과 네트워킹을 자랑합니다.
개발언어
= 안드로이드 개발 언어는 주로 자바를 많이 사용해 왔습니다. 저도 자바를 주로 사용하였고 지금도 그러고 있습니다.
하지만, 요즘엔 웹으로도 모바일 개발이 가능하여 자마린, 리액트 등 많은 언어와 플랫폼, 툴이 안드로이드 개발을 지원하고 있습니다.
(재미있게 다뤄본 결과 웹으로 모바일 개발하는 것도 상당히 재미있음)
그리고 코틀린이라는 언어를 안드로이드 공식 언어로 채택하여 그 발전이 매우 빠르게 이루어지고 있죠.
간단히 모바일에 대해서 알아봤다면, 이제 진짜로 안드로이드 여행을 떠나볼까요?
안드로이드 아키텍처
이해가 어려운 분들을 위해 쉽게 설명드리겠습니다. 위 그림은 안드로이드 아키텍처의 모습입니다.
가장 하단에 리눅스 커널이 지탱하고 있죠, 주로 각종 드라이버가 내장되어 있습니다.
또한 바로 위에 DB라던지 OpenGl. 즉, 각종 라이브러리가 있습니다. 우측에 안드로이드 실행환경에
코어 라이브러리와 달빅 가상머신이 있는데, 현재는 달빅이 아닌 art라는 친구로 바뀌었습니다.
그 위에는 바로 어플리케이션 프레임워크 층이 존재하는데, 많이 본 친구들이 있습니다.
패키지 매니저라던지 리소스 매니저, 액티비티 매니저 등 주로 자원관리나 화면에 관련된 요소들이 있네요.
맨 윗층은 바로 우리가 사용하는 어플리케이션 층입니다.
실제 홈 화면, 연락처, 브라우저 등 눈에 보이는 요소들이 여기에 있습니다.
맨 윗층은 너무 쉽죠?
안드로이드 버전/코드네임
안드로이드는 a부터 z까지 버전을 진행 중입니다. 현재는 P (Pie, 9.0)까지 나왔습니다.
a부터 z까지 버전 업그레이가 진행되면서 새로 생기거나 추가된 요소가 매우 많아졌습니다.
그리고 연간 1회 정도는 항상 버전 업을 했던 것 같습니다(개발자 입장에서는 죽어남)
베터리 소요라던지 UI/UX 구성 / 디자인 요소 등에 대해서 많이 바뀌고 있습니다.
아! 이 a부터 z까지 이름을 딴 친구들이 디저트 이름이라는 것은 알고 계셨나요?
그렇습니다. 안드로이드 버전네임은 디저트 이름을 따서 짓고 있습니다.
Q는 과연 무엇일까요? 후후 맞춰 보시길~~
안드로이드 프로젝트 구성
좌측에 보시면 안드로이드 프로젝트(Project) 구성을 확인하실 수 있습니다.
처음 어플리케이션을 생성하고 딱 이 화면을 만났을 때 멘붕이 오셨을거라 예상합니다.
아니 이게뭐야?
심지어 저도 그랬지요~ 이클립스 환경에서 개발하다가 넘어온 저로서는 도저히 이 화면에 적응하기가 힘들었습니다.
하지만 지금은 오히려 이클립스 툴이 훨씬 힘들어졌죠!
Project는 작업 공간의 개념입니다. 여러 어플리케이션을 관리하는 곳이며
프로젝트 추가시 안드로이드 스튜디오 창이 하나 더 생성됩니다.
Gradle
사진이 마땅치 않아 죄송합니다. 빨간색으로 표시 된 곳 말고 아래 bulid.gradle을 확인해주세요.
Gradle은 안드로이드 빌드 시스템입니다.
그렇다면 빌드라는 것은 무엇인가? 혹시 다들 알고 계신가요?
빌드란?
= 하나의 설치 가능한 바이너리(2진수) 형태의 파일을 만들어 주는 과정.
그렇습니다. 2진수 형태의 파일을 만들어 주는 과정입니다. 즉, 소스를 작성하고
컴파일 과정을 거친 후 빌드하여 파일을 만드는 것이죠!
그렇다면 Gradle은 무엇인가요?
= Gradle은 빌드 자동화 시스템입니다. 안드로이드 스튜디오의 공식 빌드 시스템이죠.
안드로이드 앱 개발의 공식 언어인 자바를 포함하여 파이썬, C/C++등 많은 언어를 지원합니다.
체계적인 빌드 구성을 제공하고 효율적인 멀티 프로젝트 빌드를 구성하는 친구입니다.
오늘은 여기까지
첫 시간때 기분좋게 툴을 설치했던 것과 달리 지루한 이론 강의가 이어져서 실망하셨을 것입니다.
저도 당연히 그랬지요~ 하지만 이 또한 지나가리라.
참고 참고 참으면 어느새 코드가 보이겠지요?
저야말로 빠르게 코드를 리뷰해드리고 싶네요.
저도 그게 편하거든요!!
하지만 우리 모두 파이팅합시다! 열공!
※ 강의를 몇일 주기로 올릴 수 있을지 모르겠지만,
C, JAVA, C#, DB, 안드로이드 등 많은 영역에 대하여 쉽게 풀어서 강의를 업로드 할 예정입니다.
많은 응원과 관심 부탁드립니다. 감사합니다.
좋은 내용 감사합니다!
안녕하세요^^ 방문 대단히 감사합니다.