카테고리에 안드로이드 스터디 메뉴를 오픈한 후 첫 게시물을 써본다.
일단 초보자들 눈높이로 모든 포스팅을 작성할 예정이다.
그러기 위해서 아주 기본적인 것도 디테일하게 작성하는 노가다가 필요하다. 또륵...
스터디 포스팅에서 기본으로 하는 교재로는 '그림으로 쉽게 설명하는 안드로이드 프로그래밍'을 사용한다.
초심자 입장에서 접근하기 쉽게 구성되어 있는 것 같다.
요렇게 생긴 교재다.
내용은 이 책의 내용을 기반으로 작성할 예정.
그럼 이제부터 시작~!
1. 안드로이드 어플리케이션의 구성
어플리케이션 컴포넌트
흔히 4대 컴포넌트라고 불린다.
각 컴포넌트들은 하나의 독립된 엔티티로 존재하며 정해진 역할을 수행한다.
앱을 만들 때 필요한 일종의 블럭이라고 생각하면 된다.
다음의 4가지 컴포넌트가 있다.
- 액티비티(Activity)
액티비티는 사용자 인터페이스 화면을 가지고 하나의 작업을 담당하는 컴포넌트다.
하나의 어플리케이션은 여러 개의 액티비티를 가질 수 있다.
쉽게 생각해서 하나의 화면이 하나의 액티비티라고 생각하면 된다. - 서비스(Service)
서비스는 백그라운드에서 실행되는 컴포넌트로 오랫동안 실행되는 작업이나 원격 프로세스를 위한 작업에 사용된다.
서비스는 UI 화면을 갖지 않는다. - 방송수신자(BroadcastReceiver)
방송수신자는 방송을 받고 반응하는 컴포넌트이다.
배터리가 낮은 상태라든지, 사진 촬영, 블루투스 연결 등을 알리기 위해 방송을 사용한다.
일반적으로 UI 화면을 갖지 않는다. - 콘텐츠 수신자(ContentProvider)
콘텐츠 제공자는 데이터를 관리하고 다른 어플리케이션에 데이터를 제공하는 컴포넌트이다.
데이터는 파일 시스템이나 SQLite 데이터베이스, 웹상에 저장될 수도 있다.
콘텐츠 제공자를 통하여 다른 어플리케이션은 데이터를 쿼리하거나 변경할 수 있다.
안드로이드 어플리케이션은 다른 어플리케이션 컴포넌트를 실행할 수 있다.
예를 들어서 사진촬영 기능이 들어간 어플리케이션을 개발한다고 할 때, 이 앱에서 카메라 어플리케이션의 컴포넌트를 불러와서 사용할 수 있다.
어플리케이션에서 자신이 원하는 컴포넌트를 사용하기 위해서 인텐트(Intent)를 사용한다.
한 가지 알아갈 점으로, 앱을 개발할 때 4대 컴포넌트를 모두 사용할 필요는 없다.
2. 앱의 구성 및 작성 절차
안드로이드 앱은 자바파일과 XML 파일, 이미지나 사운드 파일로 구성된다.
자바 소스 파일은 앱의 로직을 구현하고, XML 파일은 UI를 담당한다.
여기에 이미지나 사운드 파일같은 리소스가 추가된다.
일반적으로 안드로이드 앱을 작성하는 순서는 다음과 같다.
1. UI 작성
2. 자바 코드 작성
3. 매니페스트 파일 작성
이 3가지가 합쳐져서 하나의 어플리케이션이 완성된다.
3. 첫 프로젝트 분석
프로젝트 뷰
화면 왼쪽의 1번 박스의 프로젝트 뷰는 앱을 생성하는데 필요한 파일과 폴더들을 확인할 수 있다.
프로젝트 뷰의 각 폴더와 파일의 간단한 설명을 하자면 다음과 같다.
- java
자바 소스 파일들이 들어있는 폴더로 com.minsuuuus.test는 패키지 이름이다. - Gradle Script
빌드 시에 필요한 스크립트이다. - res
각종 리소스를 포함한 폴더로 drawable은 그림 및 아이콘 파일, layout은 화면의 구성, values는 문자열과 색상 정의 등과 같은 리소스를 저장한다. - manifest
xml 파일로 앱의 전반적인 정보 즉 앱의 이름이나 컴포넌트 구성과 같은 정보를 갖고있다.
자바 코드
그림 오른쪽 2번 박스는 자바코드를 나타낸다.
실질적으로 앱의 동작과 관련된 내용들을 구현한다.
- MainActivity
첫 프로젝트 생성 시 자동으로 만들어지는 클래스로 AppCompatActivity를 상속한다.
실행했을 때 액티비티가 정상적으로 작동하게 하기 위해서는 Manifest에 추가해야한다. - @Override
현재 메서드가 부모클래스의 메서드를 재정의(오버라이드) 하였다는 것을 명확하게 컴파일러에 전달한다. - onCreate() 메서드
액티비티가 생성되는 순간 딱 한 번만 호출되는 메서드.
모든 초기화와 UI설정은 여기서 이루어져야 한다. - super.onCreate(savedInstanceState);
AppCompatActivity 클래스의 onCreate() 메서드를 호출하는 문장이다.
super는 상속관계에서 부모클래스를 나타내는 키워드다. - setContentView(R.layout.activity_main);
액티비티의 화면 레이아웃을 설정하는 함수이다.
R.layout.activity_main을 액티비티의 화면으로 하겠다는 의미이다.
XML 소스코드
안드로이드 스튜디오 화면의 프로젝트 뷰에서 res 폴더의 layout 폴더를 확인해보면 activity_main.xml이라는 파일이 생성되어 있는 것을 볼 수 있다.
프로젝트 생성 시 자동으로 만들어지는 지긋지긋한 Hello World! 화면이다ㅋㅋ
파일을 열어서 확인해보면 다음과 같다.
그림 왼쪽의 1번 박스는 xml 코드를 나타낸다.
그림 오른쪽의 2번 박스는 xml 코드에 따라 보여지는 실제 화면을 확인할 수 있다.
보통 작업할 때 오른쪽 상단에 보이는 Split으로 선택하여 코드와 화면을 동시에 확인하면서 작업을 한다.
4. Gradle
Gradle은 안드로이드 앱의 빌드 도구이다.
실행파일을 만들이기 위해 사용하는 도구라고 보면 된다.
앱에서 필요한 각종 라이브러리를 추가할 때 build.gradle 파일을 열어 추가하면 된다.
build.gradle은 Project단과 Module단이 있다.
build.gradle(Project)는 전체 프로젝트에 대한 빌드 설정을 해주는 부분으로 딱히 손댈일이 없다.
build.gradle(Module)은 앱을 빌드하는데 필요한 중요 설정들을 관리한다.
실질적으로 build.gradle(Module)의 내용이 중요하다고 보면 된다.
5. 리소스
레이아웃
그림은 XML 파일과 실제 화면을 나타낸 것이다.
왼쪽이 XML 파일, 오른쪽이 실제 앱을 실행하여 나온 화면이다.
ConstraintLayout은 상대적 배치관리자를 나타내는 문장이다.
TextView는 화면에 텍스트를 표시하는 위젯을 나타낸다.
아이콘 리소스
어플리케이션을 나타내는 아이콘 이미지를 말한다.
/res/drawable 폴더에 저장하여 필요한 경우 불러와서 사용한다.
문자열 리소스
안드로이드에서는 문자열도 리소스로 정의하여 사용한다.
values폴더의 strings.xml 파일에 필요한 문자열들을 추가하여 사용한다.
6. 매니페스트 파일
- <manifest> ... </manifest>
어플리케이션 안에 적재된 목록을 시작한다.
<manifest> 요소의 속성으로 패키지 이름, 버전 코드, 버전 이름 등이 선언되어 있다. - <application> ... </application>
어플리케이션의 아이콘, 레이블 등이 속성으로 선언되어 있다. - <activity> ... </activity>
현재 어플리케이션은 하나의 액티비티로 이루어져 있다.
액티비티의 속성들로 이름과 레이블이 선언되어 있다. - <intent-filter> ... </intent-filter>
인텐트 필터는 액티비티로 들어오는 인텐트를 걸러내는 것이다.
<action> 태그에 android.intent.action.MAIN이 있는데, 이 액티비티를 시작 액티비티로 실행한다는 것이다.
7. 로그캣
안드로이드 스튜디오 화면의 하단에 Logcat이라는 메뉴가 있다.
어플리케이션이 실행되면서 출력하는 여러 정보들이 표시되는 창이다.
오류가 발생하는 경우에 로그캣 창을 잘 살펴보아야 한다.
Log.v("MY_TAG", "App Start!");
소스코드에 이와 같은 코드를 포함시키면 에뮬레이터가 로그캣 창에 출력해준다.
8. 정리
- 어플리케이션은 컴포넌트들의 조합으로 만들어진다.
액티비티, 서비스, 컨테츠 제공자 등도 모두 컴포넌트이며 화면을 구성하는 요소들도 모두 컴포넌트이다. - 코드와 리소스는 철처하게 분리된다. 즉 화면 구성과 코드는 분리된다는 말이다.
문자열 정의도 코드에 들어가지 않고 외부 리소스 파일에서 정의된다.
프로젝트 규모가 커질수록 분리 효과가 크게 나타난다. - 코드와 리소스는 개발 도구에 의해 자동으로 생성되는 R.java에 의해 서로 연결된다.
'Android > Android Basic' 카테고리의 다른 글
안드로이드 자바코드 레이아웃 구현 (0) | 2023.01.09 |
---|---|
안드로이드 기본 레이아웃 LinearLayout, RelativeLayout, FrameLayout (0) | 2023.01.06 |
안드로이드 기본 위젯 TextView, Button, EditText, ImageView (0) | 2023.01.05 |
안드로이드 사용자 인터페이스 살펴보기 (1) | 2023.01.04 |
안드로이드 스튜디오 설치(2021.05.24. 기준) (0) | 2023.01.02 |
댓글