안드로이드(Android) 프로젝트 구조 및 실행 원리안드로이드(Android) 프로젝트 구조 및 실행 원리

Posted at 2013.11.05 01:37 | Posted in == Mobile ==/Android



facebook에 글올리기



안드로이드(Android) 프로젝트 구조 및 실행 원리


안드로이드 기본 프로젝트를 생성하여, Hello World를 실행해 보았을 것이다.


안드로이드(Android) Hello World


무작정 실행해보기는 했지만, 본격적으로 개발 공부를 하기전에 각 파일과 폴더의 구조와 원리를 알아둘 필요가있다.


1. 안드로이드 프로젝트의 구조




각자의 프로젝트를 보면 위와 같은 구조로 이루어져 있을 것이다.


- src 폴더 : 안드로이드 애플리케이션의 모든 소스코드를 담는 필수 디렉토리


- HelloAndroidActivity.java : Hello Android 안드로이드 애플리케이션에서 처음 실행되는 액티비티 클래스


- gen 폴더 : 안드로이드 애플리케이션을 위해 자동으로 생성되는 디렉토리


- R.java : 안드로이드 애플리케이션의 리소스들을 관리하는 리소스 관리 클래스


- android.jar : 안드로이드 플랫폼 라이브러리


- res 폴더 : 안드로이드 애플리케이션의 모든 리소스들을 담는 필수 디렉토리


- /layout/main.xml : 안드로이드 애플리케이션의 레이아웃들을 정의하는 /layout 디렉토리에 HelloAndroid 안드로이드 애플리케이션의 기본 레이아웃인 main.xml이 존재


- /values/strings.xml : 안드로이드 애플리케이션의 문자열, 배열, 색상, 크기 등에 대한 리소스들을 관리하는 /values 디렉토리에 문자열 리소스들을 가지고 있는 string.xml이 존재함


- AndroidManifest.xml : 안드로이드 애플리케이션에 대한 이름, 버전 정보, 애플리케이션 구성요소, 권한 등을 설정하여, 안드로이드 애플리케이션에 대한 구성 정보를 정의할 수 있음.

안드로이드 애플리케이션마다 하나씩 존재해야 하는 필수 요소이다.





2. Hello World 출력 원리


이제 Hello World가 출력되는 원리를 살펴보자.


메인 클래스인 HelloAndroidActivity.java 를 열어 보자


(1) HelloAndroidActivity.java


public class HelloAndroidActivity extends Activity {


@Override

protected void onCreate(Bundle savedInstanceState) {        // 어플리케이션이 실행되면서 실행된다.

super.onCreate(savedInstanceState);                           

setContentView(R.layout.main);                                   // 컨텐츠의 화면을 (R.layout.main) 으로 등록한다.

}


@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.hello_android, menu);

return true;

}


}


안드로이드 어플리케이션이 실행되면 MainActivity인 HelloAndroidActivity를 실행한다. (이것은 AndroidManifest.xml에 정의되어 있다.)


Activity 를 상소받은 HelloAndroidActivity 클래스가 실행되면서 onCreate() 함수를 실행한다.


onCreate() 함수에서 setContentView() 는 화면에 보여줄 뷰를 등록한다.


여기서는 R.layout.main 이다. R은 프로젝트가 컴파일되면 gen 폴더에 생성되는 리소스 파일이다.


R.layout.main 이므로, 리소스 layout 폴더의 main.xml 을 HelloAndroidActivity 클래스의 뷰로 보여진다.


(2) /layout/main.xml


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".HelloAndroidActivity" >


    <TextView

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/hello_world" />


</RelativeLayout>


main.xml 을 보면, RelativeLayout 이라는 큰 레이아웃(배경) 안에 TextView가 정의되어 있다.


HelloAndroidActivity 클래스의 화면에는 TextView 에 정의된 Text가 나오게 된다.


android:text="@string/hello_world"  에서 보면 text 값은 @string 에 hello_world 라는 변수로 정의된 값으로 등록되어 있다.


그러면 @string/hello_world  는 어디에 정의되어 있는 걸까?


/values/strings.xml 을 열어 보자


(3) /values/strings.xml


<?xml version="1.0" encoding="utf-8"?>

<resources>


    <string name="app_name">Hello Android</string>

    <string name="action_settings">Settings</string>

    <string name="hello_world">Hello world!</string>


</resources>



strings.xml 파일을 열어보면 resources 들의 변수를 정의해 놓았다.

@string 은 여기 strings.xml 에서 정의된 변수를 찾게된다. 

@string/hello_world  는  <string name="hello_world">Hello world!</string> 와 매칭되어 화면에 Hello world! 를 출력한다.




3. Hello Android! 로 변경 출력

그러면 여기서 Hello world!Hello Android! 로 변경하여 실행시켜보겠다.


 <string name="hello_world">Hello world!</string> 이부분만  <string name="hello_world">Hello Android!</string> 로 변경해주면 된다.


에뮬레이터를 실행시켜 보자.





Hello Android! 출력 완료



이웃추가
facebook에 글올리기

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기