0. Introduction

개발 환경 구성에 대한 포스트는 없지만, 이미 있다고 가정할께요.^^ 그 이후에 대한 이야기를 드릴까 해요. 오늘 같이 살펴 볼 개념은, Project의 구성과 Resource 입니다.

1. Project

Eclipse의 Package Explorer를 캡쳐한 화면입니다.  AndroidFirst라는 프로젝트이며, MainActivity를 제외하고는 별다른 수정을 하지 않은 상태입니다. 그럼에도, 많은 폴더 및 파일들이 보여지는데, 이를 살펴보도록 하겠습니다.

Screen Shot 2014-04-17 at 12.07.04 AM

  • src : 소스 파일이 위치하게 됩니다. Compile 대상이기도 합니다.
  • gen : src와 동일한 java 파일들이 위치하지만, 자동으로 생성되는 파일들입니다. IDE에 의해 관리되므로, 개발자가 직접적으로 수정하거나 신경쓸 필요는 없습니다.
  • gen/R.java : res 폴더에 resource를 추가하면 자동적으로 상수를 추가하여, 소스 상에서 사용할 수 있도록 제공됩니다.
  • assets : res가 아닌 형태의 파일을 포함시키기 위해 사용됩니다. Font(ttf), Jar 파일, Javascript 혹은 CSS 파일등을 위치시킵니다.
  • libs : 3rd-party library가 위치합니다. google의 하위 버전 호환성 library인, 'android-support-v4.jar'가 위치하고 있습니다.
  • res : App에서 사용되는 모든 Resource가 여기에 포함됩니다. Resource에 대해서는 아래에서 좀 더 살펴 보도록 하겠습니다.
  • res/layout : UI에 대한 Design을 XML로 만들 수 있습니다. 이러한 XML은 일종의 Resource로 간주되며, layout폴더 하위에 위치합니다.
  • res/values : 일반적인 Resource인 strings 등이 여기에 포함됩니다.
  • AndroidManifest.xml : 모든 파일을 통 틀어, 가장 중요한 파일입니다. 모든 Component를 등록하게 되며, Permission(허가)에 대한 부분 등 App 전체를 표현하고 있는 파일입니다.

2. Resource

Android는 Resource 관리가 꽤 철저하게 이루어집니다. 일반적으로 문자열 상수들은 Resource가 관리되는 것이 당연하지만, Android에서는 문자열은 물론 Color와 Layout등도 모두 Resource의 대상이 됩니다. 재밌는 것은, 이렇게 관리되는 Resource와 Code 상의 가교가 필요한데, 이를 자동적으로 해결해 준다는 것입니다. 즉, Eclipse에서 res 폴더에 Layout.xml을 추가한다거나 파일을 끌어 놓으면, 파일명을 바탕으로 R.java 파일에 상수로 등록되게 됩니다. 위의 프로젝트를 기준으로 다음과 같이 생성됩니다.

public final class R {
   public static final class attr {...}
   public static final class drawable {...}
   public static final class id {...}
   public static final class layout {...}
   public static final class string {...}
   public static final class style {...}
   public static final class xml {
       public static final int mywidget_provider=0x7f040000;
   }
}

보시면, 자동적으로 mywidget_provider에 대한 상수가 생성되었음 알 수 있습니다. 눈치 채셨겠지만, 저 final int 변수를 Code 상에서 접근하게 됩니다.

 

References