본문 바로가기
IT/안드로이드 앱 개발

안드로이드 기본 구조

by 별나무 2021. 2. 3.
반응형

전에 만든 안드로이드 기본 앱을 통해 안드로이드 어플리케이션 기본 구조를 보겠다.

아래를 클릭하면 기본 앱 만드는 과정을 볼 수 있다. 

2021/01/30 - [안드로이드 앱 개발] - 안드로이드 스튜디오 시작 - 새 프로젝트 만들기

 

 

아래는 안드로이드 스튜디오에서 프로젝트 뷰를 캡쳐한 것이다. 

manifest, java, res, Gradle Scripts 이렇게 네 가지 이다. 

위에서부터 차례로 살펴보겠다.

 

manifests

일단 단어부터 생소하다.  단어뜻부터 네이버에 찾아본다.

근데 폴더 명은 manifests다.

명사를 뜻하는 다른 것도 있을것이다.

클릭하고 들어가서 보니, 화물목록/승객명단이란다.

 

안드로이드에서의 manifest도 비슷한 역할을 한다.

모든 안드로이드 앱에는 반드시 AndroidManifest.xml이라는 파일이 한개 존재한다.

시스템이 앱을 시작할때 앱의 전반적인 내용을 담고 있다.

안드로이드 앱을 시작할때 AndroidManifest.xml을 읽어들어 컴포넌트를 확인한다.

 

전반적인 내용이라는것을 약간 특정해 보자면

사용자 권한,

앱이 다른앱에 액세스하기위해 필요한 권한

앱에서 사용하는 하드웨어 및, 소프트웨어 기능등이 있다.

 

프로젝트뷰에서 manifest를 확장해 보면 AndroidManifest.xml 파일만을 가지고 있다.

기본 앱의 AndroidManifest.xml내용을 살펴보자.

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyApplication">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

 

<manifest>..</manifest>

애플리케이션에 적재된 목록을 시작한다. 앱의 패키지 이름을 선언해 빌드 할때 참고한다.

위 파일에서는 앱의 패키지 이름을 com.example.myapplication로 선언했다.

 

<application>..</application>

애플리케이션의 백업,복원여부, 아이콘, 레이블, 원형아이콘, 가로세로 변환여부, 테마가 있고, 액티비티 하나를 불러온다.

 

<activity>..</activity>

<application>안에는 <activity>가 있어야 한다.

이 액티비티로 사용자와 상호작용을 할 수 있다. 

위 코드의 <activity android:name=".MainActivity">를 보고,

activity의 위치가 <manifest>가 시작할때 지정된 앱의 패키지, 'com.example.myapplication' 하위 위치인

com.example.myapplication.MainActivity임을 알 수 있다.

 

<intent-filter>..</intent-filter>

intent는 영어사전에서 찾아보면 명사형으로 쓰일때는 '의도'라는 뜻을 가지고있다.

intent는 사전적 의미와 비슷하게, 액티비티와 액티비티 사이를 연결시켜주는 역할을 한다.

intent-filter는 액티비티로 들어오는 인텐트를 걸러내는 역할을 해 준다.

<action android:name="android.intent.action.MAIN" />은

MainActivity를 시작점으로 지정하여, 어떤 인텐트 데이터도 받아들이지 않는다. 

<category android:name="android.intent.category.LAUNCHER" />는

MainActivity가 런처가 되었다는 것이다. 

이 액티비티가 작업의 최초 액티비티이며, 시작관리자에 포함되게 된다는것이다.

앱을 시작할때는 이 두가지가 짝을 이루어야 한다. 

 

 

java

java를 모두 확장해봤다.

 

3개의 java 파일이 보인다.

MainActivity는 Manifest에서 앱 실행시 동작하는 Activity라는것을 알 수 있었다. 

나머지 ExampleInstrumentedTest,ExampleUnitTest는 어떤 파일일까?

두 파일은 테스트를 할때 쓰는 파일이다. 지금은 그냥 이정도만 알고 넘어가겠다.

 

그러면 실제 앱에서 작동이 되는 MainActivity.java 내용을 살펴보자.

package com.example.myapplication;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

 

onCreate는 액티비티가 생성되는 순간에 한번 호출된다. 

처음으로 한번 생성되기 때문에 초기화와 사용자 인터페이스 설정이 이루어진다. 

savedInstanceState는  애플리케이션이 이전에 실행되었던 상태를 전달하여 준다.

 setContentView(R.layout.activity_main);는 화면을 설정하는 함수이다. 

R.layout.activity_main이 액티비티의 화면이 된다.

안드로이드에서 화면은 xml로 작성된다.

R.layout.activity_main의 위치는  res/layout/activity_main.xml 이다.

소스를 한줄로 요약하자면, MainActivity가 호출되면 activity_main.xml을 화면으로 불러와라. 정도가 되겠다.

 

res

res는 리소스들이 저장되어 있는 폴더다. 

res를 확장시켜보았다.

 

 

drawable은 이미지,

layout은 화면구성,

minmap은  해상도에 따른 아이콘,

values는 문자열등 특정 값을 저장한다. 

 

리소스가 이런식으로, 코드와 분리가 되어 저장되고, 그렇기 때문에 분업이 가능하다. 

가령, 코드는 프로그래머가 작성하고, 리소스는 디자이너가 작성할 수 있다. 

또한, 다중언어지원 및 기기에 따라 리소스를 맞춰 디자인 할 수 있다. 

 

그럼 이제, MainActivity가 보여주는 activity_main.xml을 보자. 

안드로이드 스튜디오에서 열어보았다. 

split으로 설정해서 놓으면 한쪽은 xml코드, 한쪽은 실제 실행화면이 보인다. 

이 화면은  Hello World 라는 문자를 화면의 정중앙에 표기하는 기능만 가지고 있다. 

 

Gradle Scripts

그레이들은 앱 빌드시에 필요한 스크립트이다. 

지금은 이정도만 알고, 다음에 내용을 알아볼 예정이다.

 

LIST