이제 실제로 이클립스를 이용해서 안드로이드를 개발해 볼까해요.
 먼저 자사 JDK를 설치해야 해요. 그 다음에 이클립스를 설치해야 하죠. 이클립스를 설치한 후가 중요해요. 바로 안드로이드 개발도구인 ADT를 설치해야 하죠.
 작업공간은 c:\android\workspace폴더에 할꺼에요. Help > Install New Software를 선택합니다. 



 Add 버튼을 클릭하면 Add Site 화면이 나타나요. 이름은 ADT로 하고 위치는 
 https://dl-ssl.google.com/android/eclipse/로 하죠 (안될땐 https에서 s를 빼 보세요)


그럼 Developer Tools항목 나타난거 확인하고 Next해요. 계속 next하다가 하단에 I accpet를 체크하고 [Finish]버튼을 누르죠. 그럼 이클립스가 다시 시작되고 설치 과정이 끝나게 되요. 
 
 이제 안드로이드 SDK를 다운로드 받아 압축을 해제해요. d.android.com 사이트에 들어가면 있어요. 아까 만든 c:\android\ 여기에서 압축풀기를 하면 android-sdk-windows폴더가 생기죠. 이제 이클립스에서 안드로이드 SDK위치를 지정하면 되죠. 
 

 그다음에 SDK플랫폼 패키지를 다운로드 하면 되요.




이제 에뮬레이터 디바이스를 만들어야 되요. 


환경변수에 SDK패스도 넣어줘야 하죠. 


이제 sample소스만 들어있는 프로젝트를 만들어서 각각의 API를 실제로 어떻게 사용하는지 볼꺼에요.


 안드로이드 프로젝트를 선택하고요


existing sample에서 ApiDemos를 선택하죠 

여기서 문제가 생겨버렸네요 -_-;; 윈도우의 사용자 이름이 한글로 되어있어서 에뮬레이터가 가동이 안되어 버렸어요. 이건 중요한 사항인데 제가 깜박해 버렸네요. 이것때문에 ApiDemos도 지워버렸고요. 처음부터 다시 한 다음에 진행하도록 할께요 ;;;

 AVD 라는 에뮬레이터로 어플리케이션을 테스트 해 볼수 있는데요, 
에뮬레이터의 파일 시스템등을 확인해 보기 위해서 >> db shell 을 입력한후 기본적인 리눅스 명령어를 이용해
데이터가 언제 저장이 되는지 등을 확인할 수 있어요.

 어플리케이션을 개발할 때 참고할 수 있는 프로젝트가 있는데요 그게 바로 ApiDemo에요. 여기에는 sample소스만 들어가 있죠.
 각각의 API들을 어떻게 사용하는지 예제가 들어있어요.

 패키지라는게 있는데요 이건 App들을 유일하게 구분할수 있게 해 줘요.
 모든 App는 유일한 패키지 name을 가져야 하죠.

 그리고 App에서 UI를 사용한다면 기본 Activity를 설정해야 하죠. 이건 Run의 Run Configuration에서 설정할 수 있어요.
 
 UI부분을 왜 xml파일로 설정하냐면요 App가 다국어를 지원해야 할 때 유용하게 활용할 수가 있어요.
 String.xml에 문자에 대한 정보가 들어가는데 이 파일을 여러개로 해서 각 언어마다 설정이 달라지게 할 수 있죠.
 그리고 UI를 담당하는 designer는 소스코드를 건드리지 않고 xml만 바꿔줘서 개발자와의 영역을 나누는 데도 유용해요.

 Manifest파일이 있는데요 여기에는 시스템이 이 App에 대해서 알아야 되는 모든 정보가 포함이 되어 있어요. 
 App version도 써줄수 있고요 아이콘, 기본라벨등도 설정해 줄 수 있죠. 
그리고 소스에 있다고 패키지가 구분되는게 아니고 여기에 Pakage가 설정이 되어 있어야지 정말 패키지가 설정이 되는거죠.

 외부에서 다운받은 App들을 에뮬레이터에서 돌려보려면요 콘솔에서 간단한 명령어가 필요해요.
만약 Hangulkeyboard.apk 라는 파일로 된 App를 에뮬레이터에 설치하려면 콘솔에서 
 >> adb install Hangulkeyboard.apk 
라고 명령하면 되죠. 

 이클립스에서 DDMS라는 창이 있는데요 여기서는 App의 쓰레드정보, Heap정보, 실행상태 등을 확인할 수 있죠.
 Logcat이란 것도 있는데요 여기서는 App를 실행하면서 발생하는 모든 Log를 볼 수 있어요.
 Log를 볼때 Log.d(태그, 메세지) 이 함수를 많이 쓰는데요 여기서 태그를 붙이는 이유는 
하나의 App는 하나의 태그를 쓰기 때문이죠.
 DDMS에서 mp3파일같은것도 sdcard에 넣어볼 수가 있어요. File Explorer창에서 복사만 하면 되죠. 근데 저장되는 파일은 꼭 영어로 
되야 하죠.

 디버깅을 위한 도구중에 hierarchyviewer라는게 있는데요 이건 화면구성에 대한걸 계층적으로 표시해 줘요. 이걸 보면 개발하는데 무척 도움이 되죠. 
 Monkey라는 애는 App을 막 사용하는 앤데요 얘가 왜 있냐면
 사용자는 개발자들 생각대로 꼭 사용하는 건 아니에요. 그리고 App는 여러가지 방식으로 사용했을 때 죽지 않아야 하죠. 
 그래서 Monkey라는 놈이 App을 막 눌러보는거에요.
 디버깅할때 step over, step into, step return이 있는데요
 step over는 한칸 넘어가는 거고,
 step into는 메소드 안으로 들어가는 거고,
 step return은 현제 메소드 끝까지 가서 리턴하는 거에요.
 
 하나의 App에는 여러개의 Activity가 존재해요
 근데 안드로이드에는 메인이 없는데요, 안드로이드는 Activity단위로 실행이 되요. 그래서 Activity가 실행이 될때
생명주기에 관한 Callback함수가 호출되기 때문에 메인이 필요없죠.

 UI를 구성해 주는 xml 파일에 대해 알아볼께요. layout이란건 하나의 view가 다른 view를 어떻게 포함할지 설정해주는 거에요.
 LinearLayout은 전체를 다 차지하는 layout이죠. 그리고 xml 파일 안에서 다른 element의 리소스를 사용하려면 @를 붙여주어야 해요.
 그리고 자바코드 안에서 리소스에 접근하려면 R.layout.main 이런식으로 해야하죠. 
 App의 타이틀바는 manifest파일에서 label로 설정해요.
 레이아웃에서 최상위 view는 하나만 들어가요. 원래 xml의 특징중에 root element는 하나이어야 한다는걸 생각하면 쉽게 
이해할 수 있죠. namespace를 지정하는게 최상위 view가 되는 거에요.
 모든 view에 꼭 들어가야 하는 속성으로는 layou_width 와 layout_height가 있죠. veiw의 크기나 넓이를 지정할 수 있는 속성이에요.이거 두개는 꼭 빼먹지 마세요. 여기에 속성값으로 wrap_content를 줄 수가 있는데 이건 필요로 하는 부분만 차지하라는 뜻이죠. 그리고 크기나 넓이를 직접 지정할 때 Pixel은 쓰지 않아요. 안드로이드 App을 개발할 땐 pixel을 쓰면 안되는 데요 다양한 스크린 장치를 표시하기 위해선 사용하지 말아아 해요. 
 res 폴더의 drawable은 왜 hdpi, ldpi, mdpi 이렇게 3개로 나누어져 있을까요?이건 장치의 호환성 문제를 맞추기 위한거에요. 
 장치의 환경마다 다른 이미지 파일을 적용하기 위한 것이죠.
 
 R.java는 소스코드랑 xml파일을 연결시켜주는 애에요. 예를 들어 main.xml 이라는 UI를 나타내는 xml파일이 있다면 R.java에서는 
이 파일이 정수값으로 정의가 되어있죠. 그래서 시스템상에서 이 정수값을 main.xml로 자동으로 연결해 줘요. 그리고 개발자는 
Activity에서 setContentView 함수를 이용해서 화면이 어떻게 구성될 건지를 결정하죠. 
 여기서 잠깐 콜백메소드들의 파라미터로 많이 등장하는 context에 대해서 이야기 하고 지나갈께요. context는 Activity에 대한 인스턴스
에요. 그리고 콜백메소드 중에 onCreate가 있는데요 예는 Activity에서 제일 빨리 실행되는 메소드에요. 
 manifest파일에서 Activity를 설정해 줄때 intent-filter라는 엘리먼트가 있는데요 여기서 action.MAIN라는게 있어요. 예를 이용해서
단독으로 실행될 수 있는 Activity라는걸 표시해 주죠.

 수업이 끝날때 쯤 박성석 대표님께 안타까운 소리를 들었어요. 제가 하고 싶은 프로젝트는 증강현실에 관한건데 증강현실을 하려면 이미지 프로세싱 같은 기술이 필요한데 그런건 전문기업만이 할 수 있는 기술이래요. 그래도 위치기반, 방향센서를 이용해서 따라할 
수는 있다니깐 포기하지 않을 꺼에요.
 
 

 


































 
신고

'T아카데미' 카테고리의 다른 글

사용자인터페이스_02  (0) 2010.07.02
사용자인터페이스_02  (0) 2010.07.01
어플리케이션 구조  (0) 2010.07.01
사용자인터페이스_01  (0) 2010.07.01
안드로이드 개발환경  (0) 2010.06.27
안드로이드 개요  (0) 2010.06.26
Posted by 응큼미소


티스토리 툴바