nueijeel
[Android] 안드로이드 앱 구성 파일 본문
2023.06.02
안드로이드 프로젝트를 생성하면 app이라는 모듈이 자동 생성된다.
여기서 모듈은 하나의 앱이고, 프로젝트는 여러 모듈을 묶어 관리하는 개념이다.
app 모듈은 아래와 같이 구성되어 있다.
이번 포스팅에서는 모듈을 구성하는 대표적인 파일들을 간략히 소개하려 한다.
1. 빌드 설정 파일
안드로이드 앱을 빌드하는 데 필요한 설정들을 등록하는 빌드 설정 파일은 build.grade이다.
이 파일은 프로젝트 탐색 창에서 Gradle Scripts 하위에 위치하고 있는데, 여기에는 두 가지의 build.gradle 파일이 있다. 하나는 프로젝트 수준의 빌드 파일이고, 하나는 모듈(앱) 수준의 빌드파일이다.
대부분의 빌드 설정은 앱 수준에서 이루어지기 때문에 Module :app 이라고 분류된 build.gradle 파일에 빌드 설정 코드를 작성하면 된다. 그래들 파일는 자동적으로 플러그인, 컴파일 버전, 애플리케이션 식별자(ID), SDK 버전, 컴파일 옵션, 라이브러리 버전 등이 설정되어 있다.
2. 메인 환경 파일
안드로이드 앱의 메인 환경을 설정하는 파일은 AndroidManifest.xml 이다. 앱의 컴포넌트는 모두 매니페스트 파일에 등록하여 사용해야 한다.
파일 내부에 설정된 activity에 따라서 안드로이드 앱 아이콘을 클릭했을 때 실행될 화면이 결정된다.
여기서는 MainActivity라는 이름을 가진 클래스 파일이 액티비티로 등록되었다. 하나의 앱은 여러 액티비티를 가질 수 있기 때문에 매니페스트 파일에는 여러 액티비티가 등록될 수 있다. 등록된 액티비티 내부를 보면 <intent-filter> 태그가 선언되었고 그 안에 android.intent.action.MAIN이 action 태그의 name 값으로 선언되었다.
사용자가 안드로이드 앱 아이콘을 클릭하면 프로그램은 AndroidManifest.xml 파일에 기록된 activity 중 android.intent.action.MAIN 이름으로 설정된 intent filter가 있는 activity를 찾는다. 그 다음엔 등록된 클래스 파일의 객체를 생성하고 onCreate() 메서드를 호출한다. 메서드 안에서 해당 클래스에 연결한 레이아웃 리소스를 화면에 출력하면 사용자가 앱 실행 후 첫 화면을 확인하게 된다.
3. 메인 액티비티 파일
액티비티 파일은 화면 출력을 목적으로 하는 클래스이다.
클래스 파일들은 프로젝트 탐색 창에서 app > java > com.test.프로젝트명 의 패키지 하위에 위치하고 있다.
MainActivity 클래스는 onCreate 메서드를 오버라이딩 하는데, 객체가 생성되면 onCreate 메서드가 자동으로 호출되면서 내부 코드가 실행된다.
여기서 setContentView 메서드는 매개변수로 지정한 레이아웃을 액티비티 화면으로 출력한다. 매개변수로 작성된 R.layout.activity_main에서 R은 res 폴더를 의미하고, layout은 res 폴더 하위의 layout 폴더를 의미한다. activity_main은 layout 폴더 하위의 xml 파일 이름을 지칭한다.
4. 리소스 폴더
리소스 폴더는 app 폴더 하위에 res라는 이름으로 존재한다. 리소스 폴더는 앱에서 사용할 리소스 파일들을 등록해두기 위해 사용한다. 기본적으로 안드로이드 스튜디오에서 모듈이 만들어지면 res 폴더 하위에 다음과 같은 폴더들이 생긴다.
등록한 리소스 파일에는 'R.drawable.리소스명' 의 형태로 접근한다. 대표적으로 앞서 살펴본 것과 같이 클래스 파일에 레이아웃을 출력하기 위해 호출하는 R.layout.activity_main 이 있다.
5. 레이아웃 XML 파일
레이아웃 XML 파일에는 화면을 구성하는 요소들이 담겨있다. 설정된 레이아웃 형태에 따라 각기 다른 뷰들을 다양한 형태로 배치할 수 있다.
위와 같이 UI를 코드로도 작성할 수 있고, 화면으로 직접 구성할 수도 있다.
'Android > 개념' 카테고리의 다른 글
[Android] ImageView (0) | 2023.06.20 |
---|---|
[Android] ScrollView (0) | 2023.06.15 |
[Android] TextView와 EditText (0) | 2023.06.15 |
[Android] Layout 종류와 특징 (0) | 2023.06.10 |
[Android] View Binding과 예제 (0) | 2023.06.07 |