[ 이상선의 안드로이드 개발 10분 강의] 2. Android Mobile 알아봐요­

안녕하세요! 이상성입니다.오늘은 안드로이드 2회 강의입니다.약 3회까지는 조금 지루하지만 필수라고 생각하는 이론적인 지식을 설명하고 싶습니다.기본적인 것을 몰라서 틀에 박히지는 않아요. 꼭 알아야 할 사전 지식과 그에 따라 파생되는 지식을 융합해서 개발하는 것이 굉장히 중요하다고 생각합니다.공학적인 요소와 개발이라는 것은 절대 속성으로 단기간에 배울 수 있는 것이 아닙니다.오늘도 건강하게 자! 가볼까요?

>

여러분은 모바일이 뭐라고 생각하세요?모바일모바일입에서는말하면서그의미를생각해본적이 있나요?모바일은?=모바일은 특정 장소에 관계없이 인터넷이나 전화를 사용하는 것을 말한다.스마트폰, 웨어러블, 태블릿 등이 여기에 포함된다.어때요? 생각보다 어렵지 않죠? 장소를 가리지 않고 인터넷 또는 전화를 사용하는 것! 바로 세상이 많이 좋아졌다는 의미겠죠.모바일에도운영체제가있다면여러분은믿으시겠어요?하지만스마트폰이라는것자체가운영체제를갖추고소프트웨어를컨트롤할수있기때문에붙인이름이라는것!대표적으로가장많이들어본안드로id,IOS운영체제가모바일운영체제에속합니다.저는 개발하기 위해서 둘다 사용하고 있습니다만!다~ 나름의 장단점이 존재하네요! 자세한 것은 다른 チャ터에서 언급하겠습니다.모바일 플랫폼?=모바일 플랫폼은 개발 및 실행 환경을 의미합니다.쉽게 말해 구글의 안드로이드, 애플의 IOS가 모바일 플랫폼입니다.최근에는 OS 이름 자체가 모바일 플랫폼이라는 의미와 비슷한 해석을 하지만 실제로는 개발 언어, 정책, 스토어, 기반 브라우저 등 많은 요소들이 모바일 플랫폼이라는 단어에 속해 있습니다.안드로이드의 특징=여기서는 안드로이드에 대한 개발을 설명하기 위해 안드로이드 기준으로 설명합니다.안드로이드는 정책 자체가 매우 개방적입니다. 따라서 개발자 마음대로 개발하고 직접 구글 플레이스토어에 등록할 수 있는 시스템입니다. 무료/유료에 관계없이 발매할 수 있습니다.옛날에는 개발자 등록 비용이 좀 비쌌지만 요즘은 약 3만원 정도로 평생 개발자 계정을 만들 수 있습니다.필자도 이미 개인용 3개 팀에 2개도 개발자 계정이 있습니다!또 안드로이드는 그 뿌리가 리눅스입니다. 따라서 Linux 커널을 사용하여 각종 드라이버를 지원하고 메모리/프로세스를 관리하며 안정된 멀티 스레딩과 네트워킹을 자랑합니다.개발 언어=안드로이드 개발 언어는 주로 자바를 많이 사용해 왔습니다. 저도 자바를 주로 썼고, 지금도 그러고 있어요.하지만 최근에는 웹에서도 모바일 개발이 가능하고, 자마린, 리액트 등 많은 언어와 플랫폼, 툴이 안드로이드 개발을 지원하고 있습니다.(재미있게 다룬 결과 웹에서 모바일 개발하는 것도 꽤 재미있다) 그리고 코틀린이라는 언어를 안드로이드 공식언어로 채택하여 그 발전이 매우 빨라지고 있습니다.간단하게 모바일에 대해 알아보셨다면 정말 안드로이드 여행을 떠나볼까요?

>

이해하기 어려운 분들을 위해 쉽게 설명해드리겠습니다. 위 그림은 안드로이드 아키텍처의 모습입니다.가장 아래에 리눅스 커널이 받치고 있지요, 주로 각종 드라이버가 내장되어 있습니다.또 바로 위에 DB나 OpenGl, 즉 각종 라이브러리가 있습니다. 오른쪽에 안드로이드 실행환경에 코어 라이브러리와 달빅 가상머신이 있는데 현재는 달빅이 아니라 art라는 친구로 바뀌었습니다.그 위에는 어플리케이션 프레임워크 층이 있는데, 자주 본 친구가 있습니다.패키지 매니저나 자원 매니저, 액티비티 매니저 등 주로 자원 관리나 화면과 관련된 요소가 있습니다.맨 위층은 우리가 사용하는 어플리케이션 층입니다.실제홈화면,연락처,브라우저등눈에보이는요소들이여기있습니다.제일 위층은 아주 간단하죠?

안드로이드는 a부터 z까지 버전을 진행중입니다. 현재는 P(Pie, 9.0)까지 나왔습니다.a부터 z까지 버전 업그레이드가 이루어졌으며, 새롭게 발생하거나 추가된 요소가 매우 많아졌습니다.그리고 연간 1회 정도는 항상 버전 업을 한 것 같습니다(개발자의 입장에서는 죽는다)배터리 필요나 UI/UX구성/디자인 요소 등에 대해서 많이 변했습니다.아! 이 a부터 z까지 이름을 딴 친구가 디저트이름인거 알고계셨나요? 그렇습니다.안드로이드 버전 네임은 디저트 이름을 따서 만들고 있습니다.Q는 과연 무엇일까요? 나중에 맞춰보세요.

>

왼쪽을 보시면 안드로이드 프로젝트(Project) 구성을 확인하실 수 있습니다.처음 어플리케이션을 만들고 마침 이 화면을 만났을 때 멘붕이 온 것 같습니다.아니 이게 뭐야? 심지어 저도 그랬어요. 이클립스의 환경에서 개발해서 전송된 저로서는 굉장히 이 화면에 적응하기가 힘들었습니다.하지만 지금은 오히려 이클립스 툴이 더 힘들어졌어요! Project는 작업 공간의 개념이에요. 다양한 어플리케이션을 관리하는 곳으로 프로젝트를 추가하면 안드로이드 스튜디오 창이 하나 더 생성이 됩니다.

>

사진이 없어서 죄송합니다. 빨간색으로 표시된 곳이 아니라 아래의 bulid.gradle을 확인하여 주세요.Gradle은 Android 빌드 시스템입니다.그럼 빌드란 무엇인가? 혹시 여러분 아시나요?빌드는?=하나의 설치 가능한 바이너리(2진수)형태의 파일을 만든다.그렇습니다. 2진수 형식의 파일을 만들어 주는 과정입니다. 즉, 소스를 작성하고 컴파일 과정을 거친 후에 빌드해서 파일을 만드는 겁니다! 그럼 Gradle은 무엇입니까? Gradle은 빌드 자동화 시스템입니다. 안드로이드 스튜디오의 공식 빌드 시스템입니다.안드로이드 앱 개발 공식 언어인 자바를 포함하여 PiSun, C/C++ 등 많은 언어를 지원합니다.체계적인 빌드 구성을 제공하며 효율적인 멀티 프로젝트 빌드를 구성하는 친구입니다.

첫 시간에 기분 좋게 툴을 설치한 것과는 달리 지루한 이론 강의가 계속되어 실망하셨을 겁니다.저도 당연히 그랬죠.하지만 이 또한 지나갈 것이다.참고 참으면 어느새 코드가 보이잖아요.저야말로 빨리 코드를 리뷰하고 싶네요.저도 그게 편해요!! 하지만, 모두 힘내요! 열심히 공부! 강의를 며칠 주기로 올릴 수 있을지 모르겠지만 C, JAVA, C#, DB, Android 등 많은 영역에 대해 간단히 풀어 강의를 업로드 할 예정입니다.많은 응원과 관심 부탁드립니다. 감사합니다

>