본문 바로가기
안드로이드

[안드로이드 #1] 안드로이드 시작 (상)

by algosketch 2021. 2. 21.

목차

  • 안드로이드 개발자 페이지
  • 안드로이드 4대 구성 요소
  • 프로젝트 만들기
  • 안드로이드 폴더 구조
  • Layout
  • View

 안드로이드 개인 과외는 문의 주세요...

 안드로이드 강의를 시작합니다. 본 글은 스터디 및 강의를 위해 제작했습니다. 예상 소요시간은 (2시간 * 9회)입니다. 안드로이드에 대한 깊은 이해를 원한다면 이 글의 내용이 다소 빈약할 수 있습니다. 제 목표는 안드로이드의 모든 내용을 다루는 것이 아닌 짧은 시간 안에 서비스 중인 앱에 자주 쓰이는 기술들을 다루는 것입니다. 사용하는 언어는 kotlin입니다. 그럼 시작합니다.

 

 - 안드로이드 개발자 페이지

 구글링하면 나오는 페이지는 다들 아시다시피 Stack Overflow가 가장 많이 나오고 유용합니다. 안드로이드는 참고할 만한 페이지가 하나 더 있습니다. 안드로이드 개발자 페이지입니다. 구글이 만든 페이지이고 한글 번역이 되어 있습니다. 많은 서적이나 강의들도 이 페이지의 내용을 바탕으로 작성됩니다. 하지만 이 페이지에서 공부하기가 부적합한 이유는 예제가 실행 가능한 전체 코드가 아닌 해당 부분만을 설명하는 부분 코드이기 때문에 초보에겐 이해하기 힘들 수 있습니다. 또 내용이 워낙 방대하기 때문에 다 공부하기 전에 포기할 확률이 높습니다.

 

 - 안드로이드 4대 구성 요소

 안드로이드에는 액티비티, 서비스, 브로드 캐스트 리시버, 컨텐츠 프로바이더가 있습니다. 간단히 설명하자면 다음과 같습니다.

액티비티 : 화면
서비스 : 백그라운드 실행 (ex. 음악 스트리밍 서비스)
브로드 캐스트 리시버 : 기기 상태에 따라 실행 (ex. 배터리가 적으면 화면 밝기를 자동으로 낮추는 것이 가능)
컨텐츠 프로바이더 : 앱간의 데이터 공유를 위해 사용 (자신의 앱을 카메라 앱과 연동 가능)

 이 강의에서는 액티비티 부분만 설명합니다. 다른 구성 요소들은 어떤 역할을 수행하는지만 알아두고 필요할 때 검색하시면 되겠습니다. 더 자세한 내용

 

애플리케이션 기본 항목  |  Android 개발자  |  Android Developers

Android 앱은 Kotlin, Java, C++ 언어를 사용하여 작성할 수 있습니다. Android SDK 도구는 모든 데이터 및 리소스 파일과 함께 코드를 컴파일하여 하나의 APK를 만듭니다. Android 패키지는 접미사가 .apk인 아

developer.android.com

 

 - 프로젝트 만들기

새 프로젝트 만들기 화면 1

 빈 화면으로 만들어 줍니다.

새 프로젝트 만들기 화면 2

 Name에 프로젝트 이름, Package name에 패키지 이름을 작성해 주시면 됩니다. 패키지 이름은 마음대로 지으셔도 되나 자동으로 생성되는 com.example.* 와 같은 패키지 이름으로는 앱 출시가 불가능합니다. 또한 출시하기 위한 패키지 이름은 유일해야합니다. 다른 앱과 패키지 이름이 겹쳐선 안 됩니다. 출시할 것이 아니라면 상관 없습니다.
 사용한 프로그래밍 언어 java or kotlin 을 선택하고 하위호환성을 결정해주면 됩니다. 아래의 Help me choose 링크를 눌러보면 버전별 호환율을 확인할 수 있습니다.

새 프로젝트 만들기 화면 3

 버전은 숫자와 이름, API Level로 불립니다. 8.0, 9.0으로도 부르지만 오레오나 파이라고도 부르죠.

새 프로젝트 만들기 화면 4

 저는 위와 같이 설정하고 마치겠습니다. API 26 으로 설정한 이유는 별거 없습니다. 앱을 처음 설치하면 "사용자의 위치 정보를 이용합니다." <허용, 거부> 이렇게 뜨는 게 API 26 부터이기 때문입니다.

 

 - 안드로이드 폴더 구조

폴더 구조 1

 가장 먼저 폴더 구조를 살펴봅시다. 파일은 소스와 리소스로 나눌 수 있습니다. res는 resource를 줄인 말입니다.

폴더 구조 2

 프로그래밍 소스 파일은 java 폴더에, 자원 파일은 res 폴더에 있습니다. res 폴더 안에도 여러 가지 폴더가 있습니다. 각각 drawable은 이미지, layout은 UI 화면 파일, mipmap은 아이콘, value는 배열이나 색깔, 문자열과 같은 정보들을 담습니다. 위의 보기 방식은 Android로 되어 있는데, 이는 실제 파일 구조와 다릅니다. 개발자가 다뤄야하는 파일들만 보이며 개발자가 보기 편한 방식으로 보여줍니다. 실제 폴더 구조를 보기 위해서는 Android를 Project로 바꿔주시면 됩니다.

폴더 구조 3

 하지만 개발자가 모든 파일을 다룰 필요는 없기 때문에 Android로 놓고 사용하시면 됩니다. 이제 이 프로젝트를 깃허브에 올리려고 합니다. git은 VCS(Version Control System)이고 깃허브는 git으로 관리되는 프로젝트들을 올릴 수 있는 원격 저장소입니다. 안드로이드 스튜디오에서는 다음과 같은 방식으로 깃허브를 지원합니다.

깃허브 1
깃허브 2

 위 메뉴를 선택하면 깃허브 리포지토리를 만드는 창이 나옵니다. 리포지토리 이름과 설명을 적을 수 있으면 딱히 건드리지 않아도 됩니다.

깃허브 3

 위 화면이 뜰 텐데 깃허브에 올릴 파일을 선택하는 것입니다. 기본으로 전부다 선택이 되어 있는데 그대로 Add 버튼 누르시면 됩니다. 참고로 .gitignore 파일은 깃허브에 올리지 않을 파일을 지정하는 파일입니다. github.com/HamBP/NewStudy 제 깃허브에 리포지토리가 생겼습니다. 처음엔 깃허브 로그인 화면이 뜰 수 있습니다.

 

 - Layout

 아까 안드로이드 폴더 구조를 살펴봤는데요, 일단 처음엔 안드로이드의 모든 파일을 신경쓰지 마시고 코틀린 소스가 있는 폴더와 layout 이 두 폴더에만 집중해 주세요. 그 중에서 우리는 화면을 만드는 layout 파일을 먼저 살펴볼 예정입니다.

layout 1

 안드로이드 스튜디오는 xml을 사용합니다. xml의 ml은 Markup Language의 약자로 html을 해보신 분이라면 어느정도 익숙하지 느껴질 것입니다. layout의 xml파일은 위와 같이 생겼습니다. 우측 상단을 보시면 Code, Split, Design 탭이 있는데, 저는 Split으로 놓고 작업합니다. 좌측이 코드, 우측이 렌더링된 화면입니다. 코드를 작성하면 오른쪽 화면에 띄워주는 구조입니다.

layout 2

 Design 탭을 열면 이런 화면이 뜨며, 왼쪽의 도구들을 드래그하며 화면을 채울 수도 있지만 우리는 코드로 작성하도록 하겠습니다. Design 화면에서는 코드를 자동으로 생성해 주지만 레이아웃을 정확히 이해하기 위해 저는 99% 이상 코드로 작성합니다.

layout 3

 상단의 드롭다운 메뉴에서 UI의 크기나 간격 등을 확인할 수 있는 파란 화면을 없앨 수 있습니다.

 일단 한 번 실행해 보겠습니다.

에뮬레이터 1

 저는 에뮬레이터라는 가상 기기를 사용해 화면을 띄웠지만, 실제 안드로이드 기기로도 가능합니다. 

에뮬레이터 2

 우측 상단의 코끼리 옆에 있는 AVD Manager 아이콘을 누르시면 위 화면이 나오고 여기서 새 가상 기기를 설치할 수 있습니다. 만약 컴퓨터에 가상화 기능이 꺼져있는 경우라면 컴퓨터를 재부팅하여 bios 화면에 들어가 가상화 기능을 켜 주셔야 합니다. bios 화면 구성이나 진입 방법은 메인보드 제조사마다 다릅니다.
 만약 에뮬레이터가 아닌 실제 기기로 실행시키고 싶다면 휴대폰 설정에서 개발자 옵션을 활성화시켜야 합니다.

기기 1

 아마 설정의 가장 아래에 있을 휴대전화 정보에 들어갑니다.

기기 2

 그리고 빌드번호를 10번 정도 터치하면 개발자 옵션이 활성화 됩니다. 저는 이미 활성화시켰기 때문에 그 과정은 생략됐습니다.

기기 3

 개발자 옵션에서 USB 디버깅 옵션을 켜 주시면 준비가 완료됩니다. 단, LG 휴대폰의 경우 수동으로 드라이버를 설치해 주셔야 컴퓨터가 제대로 인식할 수 있습니다.

에뮬레이터 1

 다시 이 화면으로 넘어와서... 아까 layout에서 미리보기로 확인했던 화면과는 다른 점이 몇 가지 있습니다. 실제로는 이렇게 상태바와 툴바가 있습니다. 상단의 화면을 일부 사용하기 때문에 디자인할 때 고려 대상이 됩니다. 두 개 모두 안 보이게 설정하는 것도 가능합니다.

 쓰다 지쳐서 이 내용을 (상)편으로 하고 이후 (하)편으로 돌아오겠습니다...