[Android Study] 앱 구성 파일 분석

728x90
반응형

* 프로젝트를 구성하는 폴더와 파일에 대해 알아볼 예정이다.

 - 안드로이드 앱 프로젝트를 만들면 많은 폴더와 파일이 생성된다. 여기서 우리가 관심둬야 할 파일은 프로젝트 폴더에서

   [모듈명 -> 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 파일에 구성한 내용을 화면에 출력한다.

728x90
반응형

'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
TAGS.

Comments