안녕하세요! 오랜만에 글을 쓰네요... 

 

이번 포스팅은 미리 Android studio가 깔려있다는 가정 하에 시작합니다.

제 버전은 Android Studio Arctic Fox | 2020.3.1 Patch 3 입니다.

 


1. 프로젝트 생성

 

새로운 프로젝트를 생성해줍니다. 프로젝트 템플릿에는 여러 가지가 있는데요, 이 Activity 중 필요한 Activity를 고르면 됩니다.

 

여기서, Activity란

사용자와 상호 작용하는 가장 기본적인 요소로서, 어플리케이션에서 사용자에게 보여지는 화면을 의미합니다.

 

저는 현재 Hello World!만 출력하는 애플리케이션을 만들 것이기 때문에,  Empty Activity를 사용했습니다.

Empty Activity란, 심플 텍스트 컨텐츠가 있는 단일 레이아웃 파일과, 빈 Activity를 생성하는 템플릿입니다. 

또한 생성 시에 위에서 언급한 심플 텍스트에 Hello World!가 이미 들어있어서 사실 템플릿만 만들면 됩니다ㅎㅎ... 

 

Name: 애플리케이션의 이름

Package name: 앱의 고유 ID처럼 사용되는, 패키지 이름 (고유 ID처럼 사용되기 때문에 막 설정 x)

Minimum SDK: 애플리케이션이 지원하는 가장 낮은 레벨의 SDK(개발 도구) 

 

Minimum SDK 설정이 중요한데, 너무 낮아도 지원 안 하는 서비스가 있을 수 있고 너무 높으면 지원할 수 있는 기기가 적어서 잘 설정해야 한다고 합니다. 저는 일단 사진에서와 같은 SDK로 설정했습니다. 

 

SDK는 다 아시겠지만 개발 도구 모음으로, 저게 있어야 개발이 됩니다. 저도 자세히 찾아본 적은 없는데.. 라이브러리도 있고 디버거도 있고 여러 파일들이 있는 걸로 압니다. 

 

2. Virtual Device 생성

 

상단 Tools-AVD Manager

AVD Manager로 가상 에뮬레이터를 생성할 수 있습니다.

하단의 create Virtual Device를 누르면 Virtual Device Configuration 창이 뜹니다. 

여기서 원하는 기기를 선택하면 됩니다.

저는 Nexus 5X를 선택했습니다.

 

가상 장치를 생성하는 화면에서 여러 프리셋 중 하나를 골라야 합니다.

안드로이드 가상 장치를 사용하기 위해서는 이러한 이미지들이 필요하기 때문에 각자 따로 다운을 받아줘야 합니다. 

저는 Nougat 버전, Android 7.1.1을 다운로드 받았습니다.

 

이후 화면 설정이나... 그런 것들은 기본 설정으로 해줬습니다. 

대신 Startup orientation은 portrait로 설정해줬습니다.

=> 시작 시, 화면이 정방향으로 보이도록 

 

 

3. 기타 문제들

이후 빌드를 했을 때,

성공적으로 실행이 안됐습니다 ㅠㅠ

build fail의 이유를 보면 license for package android sdk build-tools 30.0.2 not accepted라고 되어있습니다.

sdk 다운 받을 때 뭐가 안 받아졌던 것 같습니다.

빠르게 받아주도록 하겠습니다.

File-settings

 

지금은 제가 다 받아놨는데 원래 Licensing Library, google Play services 등이 받아져있지 않아서

체크하고 다 받아줬습니다. 

 

이후 run 했을 때,

성공적으로 실행되는 것을 볼 수 있습니다. 화면을 켰는데 바로 앱부터 나오는 이유는, 이유가 있습니다.

밑에서 구조 설명 시에 설명하겠습니다. 

 


4. 프로젝트의 구조 

 

기본적으로 프로젝트를 생성하면 manifests, java, res 파일이 존재하게 됩니다. 

 

java 파일에서는 아까 설정한 패키지가 세 개나 있습니다. 이는 java언어로 작성은 하지만, 안드로이드가 JVM에서 돌아가는 것이 아니기 때문에 java에 환경 이외에도 안드로이드 영역에서 돌아가는지 확인하기 위한, test 부분이 존재하는 것입니다. 

 

<Main Activity>

여기서  MainActivity 클래스를 정의합니다. 이는 AppCompatActivity를 상속한다고 하는데,

몰라도 될 것 같고요 (아직까지는...) 이 코드는 프로젝트를 생성하면 자동적으로 만들어지는 코드입니다.

여기서 알아두어야 할 것은 setContectview(R.layout.activity_main); 입니다. 

 

activity_main.xml 파일에서 UI를 담당하는 레이아웃을 관리하기 때문입니다. 

activity_main 파일은 res(resources)에 있습니다. 

layout은 code, design, split 과 같이 여러 방법으로 작성할 수 있습니다.

 

위에서 Hello World! 를 설정하지 않아도 기본적으로 나온다고 했는데,

activity_main.xml 파일에 기본적으로 정의되어 있기 때문입니다.

 

res 구조를 이해하기 위해서는 layout, mipmap, values 를 알아야 합니다. 

layout: 위의 activity_main.xml과 같이 화면 UI 담당하는 레이아웃 리소스

mipmap: 아이콘과 같은 이미지

values: 문자열, 정수, 컬러와 같은 값을 포함하는 xml 파일 

 

일단 layout, mipmap, values 모두 프로젝트 진행 시에 필요한 리소스라는 것만 알면 될 것 같습니다.

 

strings.xml 파일을 보면,

app_name을 정의해주고 있습니다. 저는 Hello Android로 정의했습니다.

그래서 위에 에뮬레이터에서 앱 이름이 Hello Android로 출력되었던 것입니다. 

이와 같이 저는, 파라미터를 정의하는 파일처럼 받아들였습니다. 

(아닐 수도 있음...)

 


5. Manifest 파일

 

저는 지금 Activity가 두개라서 조금 심란해 보일 수도 있는데,

<activity></activity> 사이에 android:name =".MainActivity" 인 부분만 보면,

<intent-filter>형식이 있습니다.

 

제가 위에서, 휴대폰을 켜자마자 기본 바탕화면이 보이지 않고 앱이 실행되었다고 했는데, 이 부분 때문입니다. 

1. <action android:name="android.intent.action.MAIN" />

2. <category android:name="android.intent.category.LAUNCHER" />

 

.MainActivity가 1. 시작점이 될 수 있고 2. 런처에 표시될 수 있음 을 나타냅니다. 

(런처란, 설치된 어플리케이션 목록) 

 

그래서 실행 시에, 해당 Activity가 바로 실행된 것입니다. 

 

여기서 시작점이란? 

c, c++, java에서는 모두 main 메소드에서 시작을 합니다.

이들은 모두 main 메소드가 시작점으로 설정된 것입니다.

하지만 안드로이드에서는 main과 같이 고정된 시작점이 없습니다.

시작점을 주입해줘야 한다는 것입니다. 

 

 

시작점 대신 사용할 수 있는 4가지 컴포넌트 
Activity
Service
BroadCast Receiver
content Provider

 

 

4가지 컴포넌트로 진입이 가능합니다.

해당 진입점을 manifest 파일에 적어둡니다. 

 

이외에도, 많은 정보를 가져야 합니다.

앱에서 사용되는 컴포넌트, 권한, 패키지 이름 등등이 선언되어 있어야 합니다. 

현재 프로젝트에서는 Activity 컴포넌트만 사용되었기 때문에 매니페스트 파일에 Activity만 정의되어 있습니다.

 

 

+ Recent posts