안드로이드 프로그래밍은 크게 Code와 Resource로 구성되어있다. 여기서 Code란 일반 프로그래밍 코드와 같은 의미로 특별할 게 없지만 Resource라는 개념은 진지하게 짚어두고 넘어 갈 필요가 있을 것 같다.
 

 기본적으로 이클립스에서 안드로이드 프로젝트를 생성하면 왼쪽과 같은 구조를 갖게되는데 이 중에서 res 폴더가 바로 Resource의 약자로 리소스파일들이 저장 될 공간이다. 그럼 이 리소스 파일들은 대체 무엇일까. 바로 프로그램의 논리적인 부분 외적인 것, 즉 외형을 이루는 이미지 파일이나 문자열, 음악파일이나 동영상 등이 되겠다. 

 웹표준에 대한 개념이 있는 사람이라면 html코드와 css를 분리 하여 관리하는 것과도 비슷한 개념이라고 생각할 수 있을 것 같다. 즉, 디자이너와 프로그래머의 역할 분담과 관리가 편해 지는 것이다.
  
 이곳을 구성하는 모든 파일들은 컴파일 시에 프로그램 코드와 함께 컴파일 되며 위에있는 assets 폴더 역시 프로그램에 필요한 자원들을 저장하는 폴더 이지만 컴파일러에게 부담을 줄 수 있는 큰 파일들을 컴파일하지 않고 원본 그대로 저장하여 사용 할 수 있게 해 준다. (멀티미디어 파일들을 저장할 때 주로 사용한다.)

자 그럼 res폴더 내부 폴더들을 하나씩 살펴보자!
 1. drawable : 이미지가 저장될 폴더로 현재 종류별로 3가지가있는데, 이는 에뮬레이터(단말기)의 해상도에따라 자동으로 이미지의 크기에 맞게 출력 할 수 있게 나누어 준 공간으로 일반적으로는 그냥 drawable 폴더를 새로 만들어 하나만 사용하거나 drawable-hdpi폴더를 사용한다. (현재 출시되는 스마트폰의 대부분이 고해상도를 지원하기 때문이다.)

 2. layout : 프로그램의 화면(Activity) 구성을 정의 해 놓은 폴더이다. 각종 레이아웃과 뷰 들의 배치나 속성들이 정의된다.
 3. values : 프로그램에서 사용 될 문자열, 배열, 색상, 크기, 스타일 등의 값들을 정의하는 곳이다.

- 위 캡쳐에서는 나오지 않았지만 이 외에도 주로 사용하는 폴더들이 있으니 알아보자.
 4. menu : 메뉴 구성파일이 저장된다. (에뮬레이터의 메뉴버튼 정의)
 5. raw : 기타 2진 파일을 저장하는 장소로 보통 용량이 작은 멀티미디어 파일을 저장한다.
 6. anim : 애니메이션을 정의한다. (화면의 움직임)
 7. xml : 프로그램에서 사용할 임의의 xml문서를 정의.

 위의 리소스 들을 사용하기위해서는 고유의 ID값을 가져야 하는데, 이 ID값을 관리하는곳이 바로 그 유명한 R,java라는 녀석이다. 이녀석은 매우 민감하기 때문에 함부러 건드려서도 안되고 또 그렇다고 너무 신경을안쓰면 안된다. (안드로이드를 처음 시작하면서 이녀석 때문에 컴파일이 안된적이 한두번이 아니었다. 안될때는 눈 딱 감고 R.java를 지우고 저장을하면 자체적으로 R.java가 초기화 되고 컴파일이 이상없이 잘 되기도 한다.) 

 위의 코드가 바로 가장 기본적으로 R.java가 가지고있는 ID 들이다. 모두 정수 형태로 저장되는 것을 확인 할 수 있다.


PS. 간혹 레이아웃 구성을 할 때 다른 xml 파일 또는 다른 Activity에 사용될 컴포넌트(예를 들어 버튼)라고해서 같은 아이디를 줘도 상관이 없을 거라고 생각할 수도 있는데 모든 ID는 R.java라는 하나의 java파일에서 관리 하기 때문에 절대 중복되어서는 안된다. (이를 최대한 방지하기위해 자동으로 생성되는 ID 값은 상황에 맞게 수정을 하도록 하자)

예제를 수행하다 오늘 갑자기 아래와 같은 에러 메세지가 뜨면서 apk파일이 인스톨 되지 않았다.


왠지 메모리(용량)과 관련된 에러 메세지 같다. logcat에서 더 자세한 사항을 확인하라는데 뭐 특별히 확인 할 수 있는 메세지가 있는 것도 아니다. 그래서 열심히 이곳저곳 정보를 찾아 헤매다 다음의 방법으로 해결을 할 수 있었다.

1. 에뮬레이터에 어플들이 너무 많다. 
 - 위의 경우 그냥 사용하지 않는 어플들을 몇개 삭제 해 주자. 
 - 아마도 안드로이드 예제들이 너무 많이 쌓여서 이런 문제가 생겼지 않았나 싶다. 

2. 에뮬레이터 내장 메모리 용량을 크게 잡아주자.
 - 이 해결방법이 가장 적절 할 것같다. 아무래도 현재 있는 어플들을 지우지안고도 해결이 가능하기 때문에..

 1) 콘솔에서 명령어로 실행 하는 방법.

 -emulator -partition-size 사이즈 @에뮬레이터명


 2) 이클립스에서 에뮬레이터 설정.


 콘솔과 명령어는 같다. 


ps. 또다른 방법으로 에뮬레이터 내의 log파일을 초기화 해주는 방법이 있다고 하는데, 버전마다 log파일 관리체계가 다른지현재 내가 쓰고있는전(2.2)에서는 log파일을 확인 할 수 없었다.




 
 지금 약 안드로이드 공부를 3주 가량 하고있는데 가장 짜증났던 부분이 바로 코딩할 때 이클립스의 자동완성기능(?) 때문에 이클립스가 먹통이 되는 문제가 자주 발생 한다는 것이었다. 

- 자동 완성기능(?)이란 아래 화면처럼 코딩할 때 자동으로 코딩 목록을 선택하게 해 주는것이다.
 

 제일 많이 기다렸던 경우가 위처럼 .set~~ 이쪽 메소드를 사용 할 때 였던 것 같다.

 



 솔직히 Android의 역사가 짧기 때문에 어쩔 수 없는 문제인가 싶어 한번도 해결할 생각을 하지 않았었다. 하지만 우연찮게 이클립스의 최신판(INDIGO)에 대한 정보를 찾아보다가 Code Assist 에 대한 버그수정가 수정되었다는 정보를 입수 하였고,이 문제가 다름아닌 이클립스의 버그 였 다는것을 알게되었다.

 현재 가장 많은 유저들이 사용하고있는 Helios(2010년) 버전에서 발생한 버그로 단순한 Plugin패치 만으로 해결이 가능했다.



플러그인은 이클립스를 통해서 받을 수 도 있다고 하는데 그냥 편하게 아래에 파일을 첨부 하였다.


 위의 .jar 파일을 다운로드 받아 아래처럼 이클립스가 설치된 경로의 Plugins 폴더에 덮어 쓰자. (기존에 있는 jar파일에서 버그가 발생 했던 것이다.)

 

 이제 잘 될 것이다. 


ps. 위의 문제는 eclipse 2010년버전인 Helios에서만 해당되는 버그/수정 방법입니다. 이전 버전인 Galileo(2009) 나 가장 최신버전(2011)인 Indigo에서는 문제가 없다고 합니다.
 

'Programming > ANDROID' 카테고리의 다른 글

android/resource (리소스) 에 대해서...  (2) 2011.04.11
INSTALL_FAILED_INSUFFICIENT_STORAGE  (2) 2011.04.11
setContentView 에 대한 고찰..  (6) 2011.03.30
Layout 중첩 - Multi Page  (6) 2011.03.29
ViewGroup - RelativeLayout  (2) 2011.03.29

StarUML이란??

  - 프로젝트를 구상할 때 사용하는 프로그램으로 실무에서 많이들 사용한다고 한다. 



1. 클래스 생성

 1) Attribute :

   - '+' 는 public, '-'는 private.  

   - 속성의 자료형은 직접 입력 가능, 

   - Owner scope에서는  스태틱변수와 맴버 변수 설정을 할 수 있다.

   - Changeability : frozen 으로 상수를 만들 수 있다.

   - initial Value 로 초기값 설정 가능

 2) Method :

   - 파리미터들을 등록하고 리턴타입은 설정의 DirectionKind를 Return으로 설정

  

 3) ex

 

2. 관계

 1) 상속 : generalization 화살표를 하위메뉴에서 상위메뉴로 드레그한다.

  - composition 관계 : 필수관계

  - Aggregation 관계 : Option 관계

 



 

 2) 참조관계

  - Association : 서로 참조

  - DirectedAssociation : 방향성이 있는 참조방식. 참조 당하는 쪽에서 참조하는 쪽.

 

 3) 종속 관계

 

 

 

 4) Interface

Realiation 화살표로 구현. 

'Programming > BASIC' 카테고리의 다른 글

SOAP vs REST 비교  (0) 2013.08.06
이클립스(eclipse) 한글 설정  (2) 2011.04.04
JSP와 JAVASCRIPT 차이  (0) 2011.03.24
이클립스 웹 환경 설정  (3) 2011.03.24
이클립스(eclipse) 첫 실행 후 설정  (2) 2011.03.24

+ Recent posts