안드로이드

안드로이드 프로젝트 구조 분석하기

천검 2024. 7. 4. 22:50
반응형

안드로이드 구조에 대해 Copilot에 물어본다.

 

안녕하세요! 안드로이드 프로젝트 구조에 대해 알려드리겠습니다. 안드로이드 프로젝트는 다음과 같은 구성 요소로 이루어져 있습니다:

1. app: 이 부분은 앱 자체에 대한 내용을 담고 있습니다. 구체적으로 다음과 같은 하위 폴더로 구성됩니다:
o manifests: 프로젝트 설정을 담고 있는 AndroidManifest.xml 파일이 위치합니다. 이 파일은 앱 실행에 필요한 정보를 정의하며, 패키지 이름, 액티비티, 서비스, 퍼미션 선언 등이 포함됩니다.
o java: Java 또는 Kotlin 코드를 포함하는 그룹입니다. 여기에는 JUnit 테스트 코드를 비롯한 소스 코드 파일이 저장됩니다.
o res: 리소스 파일을 포함하는 그룹입니다. 이곳에는 XML 레이아웃, UI 문자열, 이미지 등이 저장됩니다.

2. Gradle Scripts: 빌드 시스템에서 앱을 컴파일하고 빌드하는 데 사용되는 파일들이 위치하는 그룹입니다. 여기에는 build.gradle 파일이 포함됩니다. 프로젝트 전체 빌드 구성은 build.gradle (Project: My_Application)에 정의되며, 각 모듈별 빌드 구성은 build.gradle (Module: My_Application.app)과 같이 모듈별로 존재합니다.

이렇게 구성된 안드로이드 프로젝트는 소스 코드와 리소스를 분리하여 가독성을 높이고 유연한 유지보수를 가능하게 합니다.123

더 궁금한 점이 있으시면 언제든지 물어보세요! 😊

 

AndroidManifest.xml을 보자

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication"
        tools:targetApi="31"
        android:usesCleartextTraffic="true">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

 

<activity> 하나를 가지고 있고 모든 액티비티는 여기에 기술되어야 한다. 좀더 상세히 물어본다.

물론입니다! AndroidManifest.xml은 안드로이드 앱 프로젝트에서 반드시 포함되어야 하는 파일입니다. 이 파일은 앱에 대한 필수적인 정보를 안드로이드 빌드 툴, Android OS, 그리고 구글 플레이 스토어에 제공합니다. 이제 몇 가지 주요 내용을 살펴보겠습니다:

1. <manifest> 태그: 이 태그는 AndroidManifest 파일의 루트 요소입니다. 다음과 같은 속성을 포함합니다:
o xmlns:android: 안드로이드의 네임스페이스를 정의하며, 항상 http://schemas.android.com/apk/res/android로 설정됩니다.
o package: 패키지 이름을 지정합니다. 일반적으로 도메인 주소를 반대로 써서 설정합니다. 예를 들어, Google에서 게시한 애플리케이션의 패키지명은 "cohttp://m.google.myapp"로 설정됩니다.
o android:versionCode와 android:versionName: 내부 버전 번호와 사용자에게 표시되는 버전 번호를 정의합니다.
o android:installLocation: 앱의 기본 설치 위치를 설정합니다. 기본적으로 앱은 내부 저장소에 설치되지만, 외부 저장소에 설치할 수도 있습니다.

2. <application> 태그: 이 태그는 AndroidManifest 파일 내에서 반드시 사용되어야 하는 항목입니다. 액티비티의 구성 요소를 선언하며, 앱의 UI를 표시하고 이벤트 처리를 담당하는 기본 요소인 액티비티를 정의합니다.

이렇게 AndroidManifest.xml은 앱의 기능, 권한, 구성 요소 등을 정의하여 앱이 올바르게 동작하도록 합니다.123

더 궁금한 점이 있으시면 언제든지 물어보세요! 😊

 

이제 액티비티에 대해 물어본다.

안드로이드에서 **액티비티 (Activity)**는 애플리케이션의 컴포넌트를 의미합니다. 간단히 말하자면, 우리가 사용하는 스마트폰 어플리케이션에서 보이는 화면 하나 하나가 '액티비티’입니다. 각 액티비티는 사용자 인터페이스(UI)를 구성하고, 사용자의 입력에 반응하는 로직을 포함합니다1. 이러한 액티비티는 앱의 기능을 제공하고 사용자와 상호작용할 수 있는 중요한 요소입니다2. 또한, 액티비티는 생명주기를 가지며, 앱이 실행되고 종료될 때 필요한 작업을 수행할 수 있습니다3. 예를 들어, 액티비티가 중지될 때 불필요한 자원을 해제하거나, 액티비티가 재개될 때 필요한 자원을 다시 할당하는 등의 작업을 수행할 수 있습니다. 이를 통해 앱의 성능을 최적화하고 사용자에게 좋은 경험을 제공할 수 있습니다.3

 

다시 표 형식으로 정리해 달라고 했다.

폴더 또는 파일 설명
app 앱 자체에 대한 내용을 담고 있습니다.
    manifests AndroidManifest.xml 파일이 위치합니다.
    java Java 또는 Kotlin 코드를 포함합니다.
    res 리소스 파일을 포함합니다.
Gradle Scripts 빌드 시스템에서 사용되는 파일들이 위치합니다.
    build.gradle (Project: My_Application) 프로젝트 전체 빌드 구성을 정의합니다.
    build.gradle (Module: My_Application.app) 각 모듈별 빌드 구성을 정의합니다.

마지막으로 안드로이드에서 컴포넌트의 의미를 물어봤다.

안드로이드에서 컴포넌트는 앱의 구성 단위를 의미합니다. 각 컴포넌트는 독립적으로 존재하며, 여러 개의 컴포넌트를 조합하여 하나의 앱을 만듭니다. 이러한 컴포넌트는 안드로이드 앱의 기본 구성 요소로서 다음과 같은 네 가지 종류가 있습니다:

1. 액티비티 (Activity):
o 사용자가 애플리케이션과 상호작용하는 단일 화면을 의미합니다.
o 모든 안드로이드 애플리케이션은 액티비티로 구성되어 있으며, 사용자 인터페이스를 담당합니다.
o 액티비티는 생명주기 관련 메서드를 재정의하여 원하는 기능을 구현할 수 있습니다.
o 인텐트를 통해 다른 애플리케이션의 액티비티를 호출할 수 있습니다.

2. 서비스 (Service):
o 사용자와 직접적으로 상호작용하지 않는 요소입니다.
o 주로 백그라운드에서 작업을 처리하기 위해 사용됩니다.
o 음원 스트리밍 앱이나 파일 다운로드와 같은 작업을 할 때 주로 사용됩니다.
o 서비스는 메인 스레드에서 동작하며, 네트워크 연동이 가능합니다.

3. 방송 수신자 (Broadcast Receiver):
o 안드로이드 OS로부터 발생하는 이벤트와 정보를 받아 처리하는 컴포넌트입니다.
o 시스템 부팅, 배터리 부족 알림, 문자 수신 등 특수한 상황에 대응할 때 사용됩니다.
o 거의 대부분 UI를 가지지 않습니다.

4. 콘텐트 제공자 (Content Provider):
o 데이터를 관리하고 다른 애플리케이션의 데이터를 제공하는 데 사용됩니다.
o 데이터베이스를 공유하거나 애플리케이션 간 데이터 공유를 위해 표준화된 인터페이스를 제공합니다.

이렇게 안드로이드의 4대 컴포넌트는 앱의 기능을 제공하고 상호작용을 가능하게 합니다12. 더 궁금한 점이 있으시면 언제든지 물어보세요! 😊

 

반응형