[Android Study] 앱 구성 파일 분석
* 프로젝트를 구성하는 폴더와 파일에 대해 알아볼 예정이다.
- 안드로이드 앱 프로젝트를 만들면 많은 폴더와 파일이 생성된다. 여기서 우리가 관심둬야 할 파일은 프로젝트 폴더에서
[모듈명 -> src -> main] 안에 있다.
- 안드로이드 스튜디오의 프로젝트 탐색 창은 윈도우 파일 탐색기처럼 모든 폴더와 파일을 보여주진 않고 개발자가
분석하거나 작성해야하는 폴더와 파일만 보여준다.
- 프로젝트를 만들면 app이라는 모듈이 자동으로 생성된다. 모듈 하나가 앱이며 프로젝트는 여러 모듈을 묶어서 관리하는 개념이다.
새로운 모듈을 추가한다는 것은 새로운 앱을 개발한다는 것과 같다.
* 모듈의 폴더 구성
1. 빌드 설정 파일(build.gradle)
- 그래들은 안드로이드 앱의 빌드 도구이다. 그래들 파일은 안드로이드 스튜디오의 탐색 창에서 코끼리 모양의 아이콘이 있는
[Gradle Scripts]에서 찾을 수 있다.
build.gradle은 총 2개의 파일이 있는데, 하나는 프로젝트 수준의 build.gradle(Project: 프로젝트명)이고 다른 하나는
모듈 수준의 build.gradle(Module: app)이다. 대부분의 빌드 설정은 모듈 수준의 그래들 파일에 작성한다.
- 모듈 수준의 그래들 파일에는 다음과 같은 중요한 여러 설정이 있다.
* 플러그인 선언
plugins {
id 'com.android.app.application'
id 'kotlin-android'
}
* 컴파일 버전 설정
compileSdk 33
* 앱의 식별자 설정
applicationId "com.example.패키지명"
* SDK버전 설정
minSdk 21
targetSdk 33
* 앱의 버전 설정
versionCode 1
versionName "1.0"
* 컴파일 옵션(개발 언어의 버전)
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
* 라이브러리 설정
dependencies {
implementation("com.google.~~~")
implementation("androidx.~~~")
}
2. 메인 환경 파일
- AndroidManifest.xml은 안드로이드 앱의 메인 환경 파일이다. 다음과 같은 중요 설정들이 있다.
* 네임스페이스 선언
- <application> 태그는 앱 전체를 대상으로 하는 설정이다. 여기서 설정한 icon속성이 앱을 설치한 사용자의 폰에 보이는
실행 아이콘이다. @mipmap/ic_launcher는 res/mipmap/ic_launcher.png파일을 의미한다.
XML속성값이 @로 시작한다면 리소스를 의미한다.
- 앞서 살펴본 바와 같이 안드로이드 컴포넌트는 시스템에서 생명주기를 관리한다. 그리고 시스템은 manifest파일에 있는 대로
앱을 실행한다. 결국 컴포넌트는 매니페스트 파일에 등록해야 시스템이 인지한다.
* 액티비티 선언
- 액티비티를 등록할 때 필수인 속성은 name이다. name이 위 사진과 같다면 MainActivity 클래스를 액티비티로 등록하겠단 의미이다.
클래스 이름 앞에 있는 .은 해당 클래스가 <manifest> 태그에 등록한 package 경로에 있다는 의미이다.
- intent-filter는 뒤에서 인텐트를 설명할 때 정리할 예정이다.
3. 리소스 폴더
- res폴더는 앱의 리소스를 등록하는 목적으로 사용한다. 모듈이 만들어지면 res 폴더 아래에 다음과 같은 폴더가 기본으로 생긴다.
* drawable: 이미지 리소스
* layout: UI 구성에 필요한 XML 리소스
* mipmap: 앱 아이콘 이미지
* values: 문자열 등의 값으로 이용되는 리소스
- res 폴더 아래에 리소스를 만들면 자동으로 R.java 파일에 상수 변수로 리소스가 등록되며 코드에서는 이 상수 변수로 리소스를
이용한다. 예를들어, 개발자가 res/drawable 폴더에 person1.png와 send.png 파일을 만들었다면 이 리소스를 식별하기 위한
int형 변수가 R.java 파일에 등록된다. 그리고 코드에서 이 리소스를 이용하려면 R.drawable.person1, R.drawable.send로
식별한다.
- 마찬가지로 layout 폴더에 test.xml파일을 만들고 코드에서 이용하려면 R.layout.test를 사용하면 된다.
- 안드로이드 리소스파일이 R.java 파일에 상수 변수로 등록되어 이용되면서 다음과 같은 규칙이 생긴다.
* res 하위의 폴더명은 지정된 폴더명을 사용해야 한다.
* 각 리소스 폴더에 다시 하위 폴더를 정의할 수는 없다.
* 리소스 파일명은 자바의 이름 규칙을 위배할 수 없다. (1a.png 대신 a1.png로)
* 리소스 파일명에는 알파벳 대문자를 이용할 수 없다. (addUser.xml대신 add_user.xml로)
4. 레이아웃 XML
- res/layout 폴더 아래 기본으로 만들어지는 activity_main.xml 파일은 화면을 구성하는 레이아웃 XML 파일이다.
- <TextView>는 화면에 문자열을 출력하는 역할을 한다. 기본적으로 만들어진 activity_main.xml 파일은 화면에 "Hello World!"
를 출력하는 구성이다.
5. 메인 액티비티 파일
- 폰에 앱을 설치한 후 앱 아이콘을 터치하면 MainActivity.kt 파일이 실행된다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
- AppCompatActivity를 상속받아 MainActivity라는 클래스를 정의했다. AppCompatActivity는 Activity의 하위 클래스이다. 따라서
MainActivity는 액티비티 컴포넌트 클래스이다. 즉, 이 클래스는 화면 출력을 목적으로 하는 클래스라는 의미이다.
- MainActivity 클래스가 실행되면 onCreate() 함수가 자동으로 호출되며 onCreate 함수 안의 구문을 실행한다. 여기서
setContentView() 함수는 매개변수에 지정한 내용을 액티비티 화면에 출력한다. R.layout.activity_main으로 지정했으므로
res/layout/activity_main.xml 파일에 구성한 내용을 화면에 출력한다.
'Study > Android' 카테고리의 다른 글
[Android Study] 뷰 클래스 (0) | 2024.03.07 |
---|---|
[Android] 구글 로그인 (1) | 2024.03.06 |
[Android Study] 안드로이드 특징 (2) | 2024.03.05 |
[Android] 카카오 로그인 연동 (0) | 2024.03.04 |
[Android] 파이어스토어 - 사진 업로드 4 (0) | 2024.03.04 |