본문 바로가기

Programming/android

안드로이드 폴더 구조

지금껏 자바를 공부하면서 느껴왔던 점은 바로 객체지향언어의 태생입니다.
객체지향언어는 추상화를 통한 모듈의 캡슐화. 궁극적으로 코드의 재사용을 극대화함으로서
프로젝트 기간을 축소함에 목적을 두고 있죠.

지금 이 말을 왜 하냐구요?
바로 폴더구조를 설명하기 위함입니다.
코드의 재사용을 위해서는 하나의 소스에 연계된 다른 소스들까지 묶어줄 필요가 있습니다.
(이렇게 표현하니 어려운데 java를 다뤄보신 분이라면 java가 가지고 있는 xml의 의미와 image들의 의미를 아실 겁니다.
 안드로이드는 자바를 기반으로 하여 개발이 이루어진 프로그래밍 언어입니다.
 만약 자바에 대한 개념과 이해가 부족하시다면 최우선적으로 객체지향언어에 대한 이해를 우선적으로 선행하시고
 이어서 자바를 공부하시면서 객체지향언어를 소스로서 익히신 뒤에 안드로이드 프로그래밍 언어에 도전하시길 바랍니다.)

코드의 재사용성을 늘리기 위해서 이클립스에서 export기능을 지원하는 것을 생각해보시면 될 것입니다.

서두가 길었네요.
폴더구조는 위와같이 코드의 재사용성 향상을 위해 이해가 필요합니다.
과거에 사용하였던 소스를 구조를 동일화하며 copy & paste를 반복한다면 얼마나 무료하고 덧없는 행위일까요.
따라서 프로젝트 자체를 하나의 모듈로서 개발을 한 후 이를 재사용할 때에는 프로젝트 자체를 가지고 쓰는 것입니다.
이러한 기능으로 이클립스와 같은 여러 개발툴에서는 import와 export를 지원하고 있습니다.


위의 그림은 제가 만든 안드로이드 프로젝트의 디렉토리 구조(폴더 구조)에 대한 이미지 파일입니다.
이하는 필요한 정보들에 대한 소개입니다.
src : 현재 개발한 안드로이드 소스 코드
gen : 안드로이드가 자동적으로 생성한 R.java 소스 코드
Android 라이브러리 : Android SDK에서 제공하는 java 라이브러리, *.class 파일만 있음.
res : 안드로이드가 자동으로 생성한 자원(resource)폴더
  - drawable : 이미지 파일 객체생성을 위한 실제 jpg와 같은 이미지나 이미지 생성을 위한 xml파일을 넣어줍니다.
                    (개발자가 명시적으로 생성하여 주고 폴더내에 필요한 정보들을 넣어줍니다)
  - res/anim : 애니메이션 xml 파일(저는 애니메이션 폴더에 대한정의를 아직 안한 프로젝트를 첨부한 것입니다.
  - res/layout : XML 파일로서 안드로이드 화면 layout
                      안드로이드에서는 개발자의 편의를 위해(?) UI구성에 필요할 수 있는 모든 이미지파일들에 대하여
                      XML을 지원하여 줍니다. 개발을 하실 때 제일 많이 찾게 될 main.xml파일이 이 안에 있습니다.
  - res/menu : XML 파일로서 메뉴 정의
  - res/values : 문자열
  - res/xml : XML 파일
AndroidManifest.xml : 현재 개발한 안드로이드 응용 프로그램에 대한 모든 정보
default.properties : 속성정보

저 역시 안드로이드에 손댄지 얼마 안된 신출내기에 불과하지만 확실한 것은
디렉토리내에 저와같이 개발을 시작한지 얼마 안된 초보는 res폴더내 layout으로 UI단을 구성한다는 것.
res/drawable폴더내에 필요한 이미지나 소스를 첨부하여 layout폴더내 main.xml을 지원한다는 것.
src폴더내 실제 소스들을 통한 객체를 생성하고 의미를 부여하기 위해서는
우선 main.xml로 UI구성을 준비완료하고 이 준비된 것이 gen폴더내 R.java를 통해
src내 실제 개발소스를 지원한다는 것입니다.

휴;;; 안다는 것에 대한 표현은 늘 어렵네요 ;;
작문능력을 좀 키워야겠습니다 ㅎㅎ;;
이상 안드로이드의 디렉토리 구조에 대해 작성하였습니다. 개발에 있어서 꼭 필요한 것은 코딩스킬이 아닌
언어의 태생과 관련하여 정확한 개념의 이해라고 생각합니다.(물론 늘 놓치고 있지만요 ㅠㅠ)
꼭 디렉토리 구조를 확인하시기 바랍니다^^

참, 언제나 피드백은 환영입니다~!