SlideShare a Scribd company logo
SNS 이해 및   Mobile App 제작하기

     ( 안드로이드 기반 모바일 개발 )



             조재완
       (ischool@knue.ac.kr)




                              1/56
1. SNS 이해
    ◈ SNS 란 ?




2               2/56
1. SNS 이해
     ◈ SNS, Socialmedia


              Social




               Media


3                         3/56
1. SNS 이해
     ◈ SNS, Socialmedia


        사회 구성원들의 의견 , 생각 , 경험 등
       을 서로 공유하기 위해 사용하는 개방화
            된 온라인 플랫폼 또는 미디어 툴


          누구나 미디어를 생산해내는 생산자
                      동시에 소비자다 .

4                                  4/56
안드로이드 소개

 학습목표
  모바일 운영체제의 일반적인 특징과 새롭게 등장한 안드로이드의 주요 특
   징 및 전체적인 아키텍처를 알아본다 .
  안드로이드 학습을 위한 개발 환경을 설치하고 원활한 실습을 위한 환경
   설정 방법을 알아본다 .


 내용
  모바일 개발
  안드로이드 학습 가이드
  개발 환경 구축




                                            5/56
1. 모바일 개발
 모바일 환경
  모바일 , 디지털 생활의 중심
  기존 핸드폰과의 차이 ( 스마트폰 vs 핸드폰 )
  • 기존의 핸드폰은 통화 기능만 제공함 .
  • 스마트폰은 MP3, 동영상 감상 , DMB, 카메라 , GPS 등의 첨단 기능을 제공함 .




                                                         6/56
1. 모바일 개발
 모바일 환경
  모바일의 발달 배경
   •   작은 부피로도 많은 데이터의 저장이 가능한 메모리 .
   • 프로세서 파워의 향상 .
   • 배터리 효율의 향상 .


 모바일 운영체제 ( 노말폰 vs 스마트폰 )
  모바일 운영체제
   • 모바일에서 실행되는 운영체제 .
   • 모바일 하드웨어 자원을 직접 제어하고 관리하는 시스템 소프트웨어 .
   • 데스크톱 운영체제에 비해 부피가 작고 상대적으로 쉽게 개발 가능함 .


  노말폰 (Nomal Phone) 의 특징
   • 별도의 운영체제가 없고 통화 기능만 제공 .
   • 제조사에서 미리 설치해 놓은 프로그램만 사용 가능 .
   • 제한적인 기능만 제공 .
   • 잔 고장이 없으나 소프트웨어 추가 설치가 거의 불가 .


                                              7/56
1. 모바일 개발
 모바일 운영체제 ( 노말폰 vs 스마트폰 )
  스마트폰의 특징
   • 필요에 따라 프로그램의 추가 설치 가능 .
   • 폰에 별도의 운영체제가 필요 .
   • 다양한 기능 제공 .
   • 잔 고장이 많지만 소프트웨어 추가 설치가 가능 .


  모바일 운영체제의 종류
   • Palm
   • RIM
   • 윈도우 모바일
   • 심비안
   • iPhone OS




                                   8/56
1. 모바일 개발
 모바일 운영체제 ( 노말폰 vs 스마트폰 )
  2009 년 2 분기에 조사된 모바일 운영체제 점유율




   • 심비안이 과반 이상의 점유율을 차지하고 있지만 점점 쇠퇴해가고 있는 중이라 앞으로는 크게 영
     향력을 행사하지 못할 것임 .
   • 모바일 운영체제들은 구조가 완전히 달라 프로그램끼리 서로 호환되지 않으며 , 고유한 장단점을
     가지고 있음 .




                                                       9/56
1. 모바일 개발

 모바일 점유율

   OS       2009    2010    2011    2014
  심비안       46.9%   40.1%   34.2%   30.2%
 안드로이드      3.9%    17.7%   22.2%   29.6%
   RIM      19.9%   17.5%   15.0%   11.7%
   iOS      14.4%   15.4%   17.1%   14.9%
 윈도우폰       8.7%    4.7%    5.2%    3.9%
  기타        6.1%    4.7%    6.3%    9.6%




                                            10/56
1. 모바일 개발
 안드로이드의 History
   개발
   • 2005 년 7 월 , 개발 시작
   • 2007 년 11 월 , 안드로이드 첫 버전 릴리즈
   • 2008 년 10 월 , 최초의 상용 안드로이드 폰 출시 (HTC 사의 G1)
   • 정식버전이 발표된지 3 년이 되지 않은 젊은 운영체제


   안드로이드 SKD
   • 구글이 2008 년 부터 SDK 와 문서를 배포하고 주지적으로 업그레이드 하고 있음 .




                                                        11/56
1. 모바일 개발

  안드로이드 SDK

    2.2 Froyo( 프로요 )


     • 2010 년 5 월 발표


     • 웹브라우징의 성능 개선


     • 자바 실행 속도 향상


     • 메모리 관리 능력향상




                        12/56
1. 모바일 개발

 안드로이드 SDK

  2.3 Gingerbread( 진저 브레이드 )


   • 2010 년 12 월에 발표


   • 개발자를 위한 JVM 의 가비지 컬렉션을 개선


   • UI 개선


   • 근거리 통신 기술 지원 (2.3.3)


   • GPS 수신 , 배터리 소모 개선 (2.3.4)




                                  13/56
1. 모바일 개발

 안드로이드 SDK

  3.0 Honeycomb( 허니컴 )


   • 2011 년 4 월 11 일에 발표


   • 테블릿 PC 전용 운영체제


   • UI 홀로그래픽 탑재


   • 멀티태스킹 지원


   • 위젯 기능 강화


   • 웹브라우징 개선

                           14/56
1. 모바일 개발

 안드로이드 SDK

  Ice cream Sandwich( 아이스크림 샌드위치 )


  • 안드로이드 4.0 버전으로 11 월에 발표 예정


  • 테블릿용 기능들을 스마트폰에 적용할 예정




                                      15/56
1. 모바일 개발
 안드로이드의 등장
  안드로이드는 새로 등장한 모바일 운영체제
  개발 주체는 OHA(Open Handset Alliance) 컨소시엄으로 되어 있지만 , 실질적인 리더는
   인터넷 검색 업체인 구글 (Google) 임


 안드로이드 운영체제의 특징
  비독점 개방 플랫폼을 지향
  개방 플랫폼 vs 비개방 플랫폼
  [ 개방 플랫폼 ]
  •라이선스 비용이 없음 .
  •개발이 자유로움 .
  •개발툴들의 성능이 낮고 문제 발생 시 , 기술 지원을 받을 수 없음 .


  [ 비개방 플랫폼 ]
  •라이선스 비용 지불 .
  •개발 환경이 잘 구축되어 있음 .
  •문제 발생 시 , 기술 지원이 가능 .

                                                          16/56
1. 모바일 개발
 안드로이드의 특징
  운영체제의 핵심이라고 할 수 있는 커널은 공개 운영체제인 리눅스에 기반 한다 .
  안드로이드 개발에 공식적으로 자바 언어를 사용한다 .
  검증된 많은 라이브러리들을 대거 포함하고 있어 웬만한 기능은 별도의 외부 라이브러리
   를 사용할 필요가 없다 .
  플랫폼에 내장된 빌트인 프로그램과 사용자가 만든 프로그램이 동일한 API 를 사용하므
   로 모든 프로그램은 평등하다 .
  개방된 환경인만큼 개발툴과 관련 문서들이 모두 무료로 제공된다 .


  안드로이드의 단점
  • 오래되지 않은 만큼 숙련된 개발자가 많지 않으며 , 관련 자료도 부족하다 .
  • 공식 문서가 아직 완비되지 않은 상태다 .
  • SDK 도 너무 자주 업그레이드되어 안정적이지 못하며 개발툴의 사소한 버그들도 상당히 많은 편
    이다 .




                                                      17/56
1. 모바일 개발
 안드로이드의 아키텍처
  효율적이고 안정적인 자원 관리를 위해 계층을 구성하였다 .
  하위에서는 저수준 지원 요소들이 있고 상위로 올라갈수록 응용 요소들이 있다 .
  추상화와 보안을 위한 인접한 계층끼리만 통신할 수 있다 .


     ⑤

     ④

     ②                            ③

     ①
              안드로이드 아키텍처



                                                 18/56
1. 모바일 개발
 안드로이드의 아키텍처
  ① : 리눅스 커널
  • 백그라운드 스레드 , 메모리 관리 , 보안 , 디바이스 드라이버 등의 저수준 관리 기능을 담당함 .
  • 디바이스 드라이버의 지원이 광범위함 .


  ② : 라이브러리
  • 라이브러리는 장비의 전반적인 속도를 결정하는 중요한 요소임 .
  • 공직 언어인 자바가 아니라 C 로 작성되어 있음 .
  • 안드로이드 라이브러리 종류
    • BSD 파생 libc 라이브러리
    • 2D 그래픽을 위한 서피스 관리자 및 SGL
    • 3D 그래픽을 위한 OpenGL
    • 벡터 폰트 출력을 위한 FreeType
    • 오디오 , 비디오 재생을 위한 미디어 지원
    • 데이터베이스 지원을 위한 SQLite
    • 인터넷 브라우징을 위한 SSL 과 크롬 , 사파리에 채용된 WebKit




                                                          19/56
1. 모바일 개발
 안드로이드의 아키텍처
  ③ : 런타임
  • 달빅 가상 머신과 자바 코어 라이브러리로 구성되어 있음 .
  • 안드로이드는 자바 가상 머신을 직접 사용하지 않으며 모바일 환경에 최적화한 달빅 (Dalvik) 가상
    머신을 사용함 .
  • 각 프로세스별로 별도의 달빅 가상 머신이 할당되므로 안정성이 높고 메모리 사용량을 줄여 복수
    개의 가상 머신도 효율적으로 동작하도록 설계되었음 .


  ④ : 프레임워크
  • 안드로이드의 API.
  • 응용 프로그램들은 하위의 커널이나 시스템 라이브러리를 직접적으로 호출할 수 없으며 API 를
    통해서 기능을 요청해야 함 .
  • API 는 하드웨어 액세스를 추상화하며 UI 제작에 필요한 위젯을 정의하고 시스템 라이브러리와
    통신할 수 있는 래퍼를 제고함 .


  ⑤ : 응용프로그램
  • 인터넷 브라우저 , 바탕화면 , 주소록 등 플랫폼과 함께 설치되는 애플릿들은 물론이고 마켓에서
    다운받아 설치하는 게임 , 유틸리티 등도 모두 이 수준에서 실행됨 .



                                                         20/56
1. 모바일 개발
 안드로이드 실행
  안드로이드 실행 파일은 전통적인 실행 파일과 다름


  전통적인 실행 파일
  • 실행 파일에는 프로그램을 구성하는 코드와 데이터가 들어 있음 .
  • 실행 파일이 메모리상으로 올라와 실행을 시작하면 프로세스가 됨 .
  • 실행 파일과 프로세스가 1:1 로 대응되며 응용 프로그램끼리는 서로 독립적임 .


  안드로이드의 실행 파일
  • 실행 파일은 같은 패키지에 속한 자바 클래스와 리소스의 집합일 뿐이며 프로세스와 반드시 대등
    되지 않음 .
  • 응용 프로그램끼리 서로의 기능을 공유할 수 있음 .
  • 다른 프로그램의 구성 요소를 불러와 같은 주소 공간에서 실행할 수 있음 . ( 윈도우의 COM 이나
    OMG 의 CORBA 등과 개념적으로 유사함 )
  • 안드로이드 응용 프로그램은 적절한 권한만 있으면 누구든지 인스턴스화할 수 있는 4 개의 컴포넌
    트로 구성됨 .
  • main 같은 유일한 진입점이 따로



                                                         21/56
1. 모바일 개발
 안드로이드 실행
  안드로이드의 응용 프로그램
  • 안드로이드 응용 프로그램은 적절한 권한만 있으면 누구든지 인스턴스화할 수 있는 4 개의 컴포넌
    트로 구성된다 .
  • main 같은 유일한 진입점이 따로 없으며 처음으로 생성되는 인스턴스의 생성자가 실직적인 진입
    점이 된다 .


  인스턴화할 수 있는 4 개의 컴포넌트 : 액티비티 , 서비스 , 방송 수신자 , 콘텐트 제공자
  [ 액티비티 ]
  • 사용자 인터페이스를 구성하는 기본 단위다 . 눈에 보이는 화면 하나가 액티비티이며 여러개의 뷰
    들로 구성된다 .
  •    응용 프로그램은 필요한 만큼의 액티비티를 가질 수 있으며 그 중 어떤 것을 먼저 띄울지를 지정
      한다 .


  [ 서비스 ]
  • UI 가 없어 사용자 눈에 직접적으로 보이지 않으며 백그라운드에서 무한히 실행되는 컴포넌트다 .
  • 전형적인 예로 미디어 플레이어를 들 수 있는데 비활성화된 상태라도 노래는 계속 재생되어야 한
    다.
  • UI 가 없으므로 사용자의 명령을 받아들일 수 있는 액티비티와 연결해서 사용된다 .

                                                         22/56
1. 모바일 개발
  인스턴화할 수 있는 4 개의 컴포넌트
  [ 방송수신자 (Broadcast Receiver) ]
  •시스템으로부터 전달되는 방송을 대기하고 신호 전달 시 수신하는 역할을 한다 .
  •예를 들어 배터리가 떨어졌다거나 사진을 찍었다거나 네트워크 전송이 완료되었다는등의 신호를 받
  는다 .
  •신호만 대기할 뿐 UI 를 따로 가지지는 않으므로 방송 수신 시 방송의 의미를 해석하고 적절한 액티
  비티를 띄우는 역할을 한다 .


  [ 콘텐트 제공자 (Content Provider)]
  •다른 응용 프로그램을 위해 자신의 데이터를 제공한다 .
  •안드로이드는 보안이 엄격하여 다른 응용 프로그램의 데이터를 함부로 액세스 하지 못하도록 되어
  있다 .
  •응용 프로그램 간에 데이터를 공유할 수 있는 합법적인 유일한 장치가 바로 콘텐트 제공자다 .


  응용 프로그램은 액티비티 , 서비스 , 방송 수신자 , 콘텐트 제공자 중 일부만을 가질 수
   도 있고 여러 개를 가질 수도 있다 .




                                                         23/56
2. 안드로이드 학습 가이드
 안드로이드 학습
  모바일 환경은 일반 데스크톱 환경에 비해 많은 제약 사항이 존재하므로 모바일 플랫폼과
   모바일 환경 자체에 대해서도 어느 정도의 상식이 있어야 한다 .


 안드로이드 개발을 위한 선수 과목
  자바
  • 안드로이드의 SDK 가 자바로 제공되며 기본 언어가 자바이므로 자바 언어에 대한 문법적 이해가
    필수적이다 .


  XML 문서
  • 안드로이드는 레이아웃 배치와 리소스 정의 , 응용 프로그램 설정 구성 등에 XML 문서를 광범위
    하게 사용한다 .


  이클립스
  • 공식 개발툴인 이클립스의 사용법도 잘 알아야 한다 .




                                                       24/56
2. 안드로이드 학습 가이드
 안드로이드 학습 준비
  안드로이드가 리눅스 커널에 기반을 두지만 리눅스를 잘 몰라도 상관없다 . 윈도우 환경
   에서 학습 및 개발을 한다면 리눅스를 직접 다룰 필요는 없다 .
  학습을 위해 하드웨어를 따로 준비할 필요는 없고 컴퓨터만 있으면 된다 .
  에뮬레이터가 잘 구비되어 있으므로 폰을 따로 준비하지 않아도 된다 .


  풍부한 모바일 사용 경험 . 모바일 사용 경험이 풍부해야 사용자를 배려하느 좋은 프로그
   램을 만들 수 있다 . 안드로이드 자체의 난이도가 높지는 않지만 플랫폼 자체에 대한 경험
   은 상당히 중요하다 .




                                                  25/56
3. 개발환경 구축
 안드로이드 개발 환경의 특징
  통합된 개발 환경을 한 회사에서 주도적으로 만든 것이 아니어서 이것저것 설치해야 하고
   순서도 잘 지켜야 한다 .
  사용할 버전이나 운영체제에 따라 약간씩 달라지는 부분이 있고 사소한 버그도 있어 충분
   한 주의를 기울여야 한다 .
  안드로이드 개발 관련 프로그램 설치 순서
   • JDK 1.6 업데이트 18
   • 이클립스 3.5
   • ADT 플러그인
   • 안드로이드 S 아 2.1
   • AVD 생성 및 옵션 조정


 JDK 설치
  안드로이드의 기본 개발 언어가 자바이므로 JDK 를 먼저 설치한다 .
  JDK 에 JRE 가 포함되어 있으므로 JRE 만 따로 설치할 필요는 없다 .
  JDK 는 사용 목적에 따라 SE(Standard Edition), EE(Enterprise Edition), ME(Mobile
   Edition) 등 세 가지로 제공되는데 안드로이드 개발에는 SE 나 EE 를 사용한다 .

                                                                             26/56
3. 개발환경 구축
 JDK 설치
  JDK 는 가급적 최신 버전으로 설치한다 .
  JDK 는 Sun 사이트에서 구할 수 있다 . (java.sun.com)




                                              27/56
3. 개발환경 구축
 JDK 설치
  다운받은 설치 파일을 실행하면 라이선스 , 동의창이 나타나고 설치할 기능을 묻는다 .




   • 디폴트로 전부 선택되어 있으며 목록의 아이콘을 클릭해 제외시킬 수 있지만 웬만하면 다 설치하
     는 것이 좋다 .
   • 설치 경로는 디폴트인 Program Files 로 하고 [Next] 버튼을 눌러 설치를 시작한다 .
   • 설치 완료 대화상자에서 [Finish] 버튼을 누르면 설치가 종료된다 .




                                                               28/56
3. 개발환경 구축
 JDK 설치 확인
  설치 확인 코드 ‘ Hello.java’

    class Hello {
      public static void main(String args[]) {
        System.out.println("First Java Program");
      }
    }


  Hello.java 파일을 bin 폴더에 저장 후 , 명령행에서 다음과 같이 컴파일 및 실행한다 .




   • 명령행에 문자열이 출력되면 JDK 가 제대로 설치된 것이다 .




                                                         29/56
3. 개발환경 구축
 이클립스
  안드로이드 응용 프로그램 개발에는 주로 이클립스를 사용한다 .
  이클립스는 통합 개발 환경을 제공한다 .
  이클립스 다운 (www.eclipse.org)




                                 클
                                 릭




                                        30/56
3. 개발환경 구축
 이클립스
  홈페이지 상단 메뉴의 Downloads 를 클릭하면 이클립스의 여러 가지 버전을 다운받을 수
   있는 링크들이 나타난다 .
  이클립스는 유로파 (3.3.x), 가니메데 (3.4.x), 갈릴레오 (3.5.x) 식으로 목성의 위성 이름을
   붙여 릴리즈하며 언어나 플랫폼에 따라 여러 가지 버전이 제공되는데 안드로이드 개발용
   으로는 클래식 버전이나 엔터프라이즈 버전이 적합하다 .


  Eclipse IDE for Java EE Developer 오른쪽의 Windows 32bit 링크를 눌러 윈도우 버전
   을 다운받는다 .
   • eclipse-jee-galileo-SR1-win32.zip(189M)


  압축 파일 안에 eclipse 폴더가 있는데 이 폴더를 C:Program Files 폴더에 압축을 푼다 .
   물론 시스템 상황에 따라 다른 폴더에 압축을 풀어도 상관없다 .
  eclipse 폴더 안의 eclipse.exe 가 주 실행 파일이다 . JRE 만 제대로 설치되어 있다면 별
   문제없이 실행된다 .




                                                                   31/56
3. 개발환경 구축
 이클립스
  최초 실행 시 , 워크 스페이스를 물어 본다 .




  이후 C:AndroidExam 폴더 아래에 실습 프로젝트를 생성할 것이다 .
  실무를 할 때는 이클립스 메뉴의 [File-Switch workspace] 명령으로 워크스페이스를 언제
   든지 변경할 수 있다 .




                                                         32/56
3. 개발환경 구축
 이클립스
  [workbench] 를 클릭하면 개발 환경으로 들어간다 .




                                       33/56
3. 개발환경 구축
 이클립스 테스트
  [File-New-Project...] 명령을 실한 한다 .




                                       34/56
3. 개발환경 구축
 이클립스 테스트
  마법사 선택 대화상자에서 [Java-Java Project] 를 선택하면 새 프로젝트를 만드는 대화상
   자나 나타난다 .
  프로젝트 이름에 “ FirstEclipse” 를 입력하고 나머지 옵션은 디폴트로 한다 .




                                                        35/56
3. 개발환경 구축
 이클립스 테스트
  ( 참고 ) 사용 중인 이클립스 버전에 따라 다음과 같은 대화상자가 나타날 수도 있다 .




  • 자바 프로젝트는 Java 퍼스펙티브가 접합하므로 변경하겠느냐는 질문이다 . 디버그 모드로 진입
    할 때도 동일한 질문을 하는데 메시지를 잘 읽어 보고 [Yes] 버튼을 클릭한다 .




                                                       36/56
3. 개발환경 구축
 이클립스 테스트
  소소 파일 추가
  • 메뉴에서 [File-New-Class] 명령을 선택하고 Name 란에 프로젝트명과 똑같은 이름을 설정한다 .
  • 주 소스는 main 메서드도 같이 생성해야 하므로 public static void main(String[] args) 옵션을 선
    택한다 .




                                                                         37/56
3. 개발환경 구축
  소소 파일 추가
  • main 메소드 안쪽에 다음 코드를 작성한다 . ( 문자열을 출력하는 간단한 출력문이다 .)




  소스 컴파일
  • [File-Save(   +   )] 명령을 선택하면 소스가 저장되면서 자동으로 컴파일 된다 .
  • 이클립스의 디폴트 옵션이“저장시 컴파일”로 되어 있어서 저장만 하면 컴파일 된다 . 소스에 오타
    가 있다면 아래쪽의 Problems 창에 에러가 발생한 곳과 에러 원인이 출력되는데 수정 후 다시 저
    장하면 된다 .




  • 에러가 없으면 Problems 에 아무 것도 나타나지 않으며 “ 0 items” 라고 표시 된다 .
                                                              38/56
3. 개발환경 구축
  소소 파일 실행
  • 저장 및 컴파일 되었으면 [Run-Run(   +   )] 명령으로 실행한다 .
  • 명령창이 따로 열리지 않고 아래쪽의 Console 창에 실행 결과가 나타난다 . 문자열이 출력되면 모
    든 것이 정상적으로 잘 설치된 것이다 .




  프로젝트 폴더의 구조
  • 프로젝트 폴더의 구조는 아주 단순하다 .
  • src 폴더에 소스 파일이 저장되고 bin 폴더에 컴파일 된 실행 파일이 저장되며 프로젝트 루트 폴
    더에는 두 개의 설정 파일이 생성된다 .




                                                         39/56
3. 개발환경 구축
 플러그인
  플러그인은 이클립스와 안드로이드를 연결하는 설정이다 .
  이클립스는 플러그인이라는 장치를 통해 임의의 플랫폼에 대한 개발툴을 추가 설치할 수
   있도록 지원하며 구글은 이클립스에 플러그인 되는 안드로이드 개발 킷을 제공한다 .
  안드로이드 개발 킷을 ADT(Android Development Tool) 라 한다 .
  ADT 패킷
   • 안드로이드 프로젝트 생성 마법사
   • XML 레이아웃 편집기
   • 패키지 제작툴
   • 이클립스에 통합된 DDMS


  이클립스의 [Help-Install New
  Software] 명령을 선택하면 업데
  이트 대화상자가 나타난다 .



                                            업데이트 대화 상자


                                                         40/56
3. 개발환경 구축
 플러그인
  대화상자에서 [Add] 버튼을 누르고 ADT 가 있는 위치를 가르쳐 준다 .




  ADT 는 https://dl-ssl.google.com/android/eclipse/ 사이트를 통해 배포된다 .
   • 접속 프로토콜이 보안이 적용된 https 이다 . 네트워크 상황에 따라 방화벽이나 보안 문제로 인해
     접속이 안 되는 경우가 종종 있는데 이 경우 https 를 http 로 바꿔 주면 된다 .




                                                                     41/56
3. 개발환경 구축
 플러그인
  접속 사이트에서 제공하는 플러그인의 목록이 표시되는데 중앙의 목록에 Developer
   Tools 라는 항목이 나타난다 .




  • ADT 와 DDMS 두 개의 플러그인이 포함되어 있는데 루트의 Developer Tools 항목을 클릭해 전
    체 선택하고 [Next] 버튼을 누르면 이클립스가 이 소프트웨어를 다운받고 설치까지 자동으로 수
    행한다 .
                                                              42/56
3. 개발환경 구축
 플러그인
  플러그인 설치




  • 운영체제에 따라 서명이 누락된 소프트웨어라는 보안 경고가 뜨는 경우도 있는데 무시해도 상
  • 관 없다 .
  • ADT 설치가 완료되면 이클립스를 재시작하라는 메시지 박스가 나타난다 . 새로 추가된 기능에 의
    해 이클립스의 기능이 완전히 바뀔 수 있으므로 가급적이면 재시작하는 것이 좋다 .
  • 이클립스가 자동 종료되었다가 재시작 되면 ADT 설치가 완료된 것이다 .
                                                        43/56
3. 개발환경 구축
 안드로이드 SDK
  SDK(Software Development Kit)
   •    특정한 소프트웨어 꾸러미 , 소프트웨어 프레임워크 , 하드웨어 플랫폼 , 컴퓨터 시스템 , 게임기
       , 운영 체제 등을 위한 응용 프로그램을 만들 수 있게 하는 개발 도구의 집합이다 .


  안드로이드를 위한 SDK
   • 안드로이드 개발 라이브러리 , 도움말 문서 , 개발 보조 툴 등을 포함하므로 용량이 방대하다 .
   • 개발 목적에 따라 필요한 SDK 목록이 틀리고 업데이트 빈도가 잦기 때문에 꼭 필요한 부분만 선
     택적으로 설치 및 업데이트할 수 있도록 되어 있다 .
   •   개발에 필요한 파일은 SDK 를 통해 배포되며 ADT 는 이클립스와 SDK 를 연결해 주기만 한다 .




   • 안드로이드 SDK 사이트 http://developer.android.com




                                                             44/56
3. 개발환경 구축
 안드로이드 SDK
  안드로이드 SDK 설치
   • 안드로이드 SDK 사이트 http://developer.android.com




   • 윈도우용 , 매킨토시용 , 리눅스용 SDK 가 각각 제공되는데 윈도우 환경에서 실습을 진행하므로
     윈도우용을 다운받는다 .
                                                        45/56
3. 개발환경 구축
  안드로이드 SDK 설치
  • 라이브러리와 문서들로 구성되어 있으므로 따로 설치할 필요는 없고 압축만 풀어 두면 된다 .
  • 아무 곳에나 풀어도 상관없지만 Program Files 폴더 안에 두도록 하자 .


  SDK 설정
  • ADT 에게 SDK 가 어디에 있는지 위치를 설정한다 .
  • 이클립트의 [Window-Preference] 메뉴를 선택하고 왼쪽 메뉴에서 Android 를 클릭한 후 SDK 폴
    더의 위치를 지정한다 . 앞에서 다운 받아 압축을 풀어둔 폴더를 지정해 주면 된다 .
  • 단순한 디렉토리에 불과하므로 여러 개의 SDK 를 설치해 놓고 번갈아 가며 사용하는 것도 가능하
    며 워크스페이스별로 각각 다른 버전 의 SDK 를 사용할 수도 있다 .




                                                                 46/56
3. 개발환경 구축
  안드로이드 SDK 추가 설치
  • SDK 의 위치를 지정했다면 다음은 추가로 더 필요한 SDK 요소들을 다운받는다 .
  • 이클립스의 메뉴에서 [Window-Android SDK and AVD Manager] 명령을 선택하면 다음 대화상자
    가 열린다 .




  • Available Packages 탭에는 설치 가능한 목록들이 나열되는데 이전 버전의 SDK 도 모두 같이 설
    치할 수 있다 .
  • 최신 버전만 설치하는 것도 가능하지만 이전 버전으로 작성된 예제들도 있으므로 하드 디스크 공
                                                                 47/56
3. 개발환경 구축
 안드로이드 SDK
  안드로이드 SDK 설치 파일 : 문서 , 샘플 , 개발툴
  문서
   • docs 폴더에는 안드로이드 개발 관련 문서들이 제공된다 .
   • HTML 포맷이므로 웹 브라우저를 통해 읽을 수 있다 .


  샘플
   • platforms 폴더 안에 많지는 않지만 몇 가지 샘플 프로젝트가 제공된다 .
   • 각 버전별로 디렉토리가 구성되어 있으며 버전이 높을수록 예제의 개수도 늘어난다 .
   • 예제를 통해 안드로이드의 기능을 둘러 볼 수 있으며 기본적인 코딩 기법을 배울 수 있다 .


  개발툴
   • tools 폴더에는 컴파일러 , 디버거 , 에뮬레이터 등 개발에 꼭 필요한 프로그램들이 제공된다 .
   • 대부분 명령행에서 동작하는 것들인데 다행히 이클립스가 적절한 때 호출해 주므로 직접적으로 사
     용해야하는 것은 별로 없다 .




                                                           48/56
3. 개발환경 구축
 AVD 생성
  모바일 개발을 할 때는 통상 에뮬레이터에서 테스트를 수행하는데 안드로이드폰 에뮬레
   이터를 AVD(Android Virtual Device) 라고 부른다 .
  AVD 는 소프트웨어적으로 만든 가상의 장비이지만 진짜 안드로이드폰과 기능이 동일하
   다.
   • 1.1 버전까지는 에뮬레이터가 기본 제공되어 간편하기는 했지만 다양한 테스트를 하기에는 여러
     가지 문제가 있었다 .
   • 1.5 버전부터는 AVD 를 필요한 만큼 만들어 두고 번갈아 가면서 사용할 수 있도록 바뀌었다 .


  이클립스의 메뉴에서 [Window-Android SDK and AVD Manager] 명령을 선택하고 목
   록에서 Virtual Devices 페이지를 선택한다 .




                                                              49/56
3. 개발환경 구축
 AVD 생성
  새로운 AVD 를 생성하기 위해 New 버튼을 누른 후 다음과 같이 입력한다 .


   • 이름은 가상 장비간의 구분을 위한 명칭인데 중복되지만 않으면 아무렇게나 주어도 상관없다 .
   • 짧게 scv 라고 이름을 붙여 주도록 하자 .
   • 타깃은 Android 2.1 로 선택하고 가상의 메모리 카드인 SD Card 는 32MB 로 설정한다 .
   • 스킨은 화면의 해상도를 선택하는데 HVGA 가 안드로이드의 표준이므로 디폴트대로두면 된다 .
   • 그 외 하드웨어 장치 옵션들도 선택할 수 있다 .
   • 가상 장비의 옵션을 적당히 편집한 후 아래쪽의 Create AVD 버튼을 누른다 .




                                                                  50/56
3. 개발환경 구축
 AVD 생성
  AVD 설정
   • AVD 는 “ C:User 사용자계정명 .androidavd” 폴더 안에 저장되며 가상 장비의 메모리 , 구성 등
     의 정보가 기록되어 있다 .
   • 똑같은 절차를 거쳐 각각 다른 이름과 다른 설정으로 여러 대의 AVD 를 미리 생성해 놓을 수도 있
     다.




                                                                     51/56
3. 개발환경 구축
 AVD 생성
  AVD 확인
   • AVD 가 제대로 생성되었는지 Start 버튼을 눌러 기동한다 .




                                            52/56
3. 개발환경 구축
 AVD 생성
  AVD 가 기동되지 않을 때 대처방법 : 버그 수정
   • 에뮬레이터가 제대로 실행되면 다행이나 한글 윈도우에서는 약간의 문제가 발생할 수도 있다 .
   • AVD 생성 후 첫 기동했을 때 에뮬레이터가 뜨지 않고 다음과 같은 에러 메시지가 나타나는 경우
     가 종종 있다 .




   • AVD 가 저장되는 경로에 영문이 아닌 문자가 있으면 이클립스가 에뮬레이터를 제대로 기동시키지
     못한다 .
   • SDK 업데이트 속도가 워낙 빠르다 보니 구글이 동양권의 운영체제까지 충분하게 테스트하지 못
     해 발생한 일종의 버그다 .                                  53/56
3. 개발환경 구축
  AVD 가 기동되지 않을 때 대처방법 : 버그 수정
  • 해결방법은 AVD 를 한글이 포함되지 않는 경로로 옮기는 것이다 .
  • AVD 의 경로는 GUI 상에서 편집할 수 없으므로 명령행에서 편집해야 한다 .


  [ 버그 수정 1]
  • 명령창을 열고 AVD 가 저장되어 있는 C:User 사용자계정 .androidavd 폴더로 이동한 후 다음
    명령으로 AVD 를 적당한 곳으로 이동시킨다 .
     android move avd -n scv -p c:Windowsscv.avd
    <scv 라는 이름의 AVD 를 C:Windows 아래의 scv.avd 폴더로 이동시키라는 명령이다 .>

  • 루트를 깔끔하게 유지하기 위해 Windows 폴더 아래로 옮겼는데 Program Files 아래에 둘 수도
    있고 C:Avd 식으로 별도의 폴더를 만들어도 상관없다 .
   ( 경로에 한글만 포함되지 않으면 된다 .)


  • 이 명령이 제대로 동작하려면 java 와 안드로이드 SDK 에 대해 Path 지정이 되어 있어야 한다 .
    또 대상 폴더의 부모 폴더는 존재해야 하며 마지막 폴더인 scv.avd 는 직접 생성하므로 존재해서
    는 안 된다 .




                                                                  54/56
3. 개발환경 구축
  AVD 가 기동되지 않을 때 대처방법 : 버그 수정
  [ 버그 수정 2]
  •탐색기로 AVD 폴더를 원하는 곳으로 이동시키고 정보 파일의 경로만 살짝 수정하면 된다 .
  C:User 사용자계정 .androidavd 폴더안에 생성되어 있는 scv.avd 를 잘라내서 C:Windows 폴더
  에 붙여 넣는다 .
  •메모장으로 avd 폴더에 남아 있는 scv.ini 파일을 열어 path 를 이동한 경로명으로 수정한다 .
    target=android-7
    path=C:Windowsscv.avd




                                                                    55/56
3. 개발환경 구축
 옵션 설정
  실습과 한글 호환성 확보를 위해 몇 가지 옵션을 조정한다 .
  워크스페이스의 문자셋을 UTF-8 로 변경한다 .
   • 한글로 주석을 달기 위해서는 UTF-8 인코딩을 사용하는 것이 유리하며 배포되는 예제들도 대부
     분 UTF-8 인코딩을 사용하므로 예제를 제대로 보기 위해서라도 조정하는 것이 좋다 .
   • Preference 창에서 [General-Workspace] 의 Text file encoding 을 [Other-UTF-8] 로 변경한다 .
     이 옵션을 조정하지 않으면 예제의 한글 주석이 깨져 보이는 문제가 있다 .




                                                                                   56/56
3. 개발환경 구축
 옵션 설정
  [General-Editors-TextEditors-Spelling-Enable spell checking] 옵션을 해제한다 .
   • 주석의 맞춤법 검사를 해 주는 기능인데 컴파일러에게는 너무 사치스러운데다 편집 속도를 떨어뜨
     리므로 사용하지 않는 것이 좋다 .
   • 한글을 제대로 인식하지 못해 영문 단어와 한글 조사가 붙어 있으면 무조건 오타 처리되어 보기 싫
     은 밑줄이 그어지는 문제가 있다 .




                                                                             57/56
3. 개발환경 구축
 옵션 설정
  [Java-Code Style-Organize Imports] 페이지의 “ Number of imports needed for .*” 옵션
   을 1 로 변경한다 .
   • 이클립스는 import 문을 자동으로 정리해 주는 편리한 기능을 제공하는데 매 클래스마다 import
     문이 작성되어 소스가 너무 길어진다 . 이 값을 1 로 바꿔 놓으면 패키지의 모든 클래스를 한꺼번
     에 임포트해 주므로 실습할 때 편리하고 결과 소스가 짧아지는 효과가 있다 .




                                                                              58/56
3. 개발환경 구축
 옵션 설정
  [Java-Compiler-Errors-Warings-Unnecessary code] 의 모든 옵션들을 Ignore 로 변경한
   다.
   • 이 옵션을 바꾸지 않으면 실습 중에 수많은 경고가 발생한다 .




                                                                       59/56
3. 개발환경 구축
 설치 확인
  시스템에 어떤 파일들이 생성되었는지 , 적재적소에 제대로 배치되어 있는지 탐색기로 살
   펴보고 점검해 본다 .
  다음과 같은 폴더들이 생성되어 있다면 제대로 설치가 완료된 것이다 .




                                               60/56
3. 개발환경 구축
 리눅스에서 구축
  JDK 설치
   • 우분투의 패키지 관리자를 사용하면 JDK 는 아주 쉽게 설치할 수 있다 .
   • 터미널을 열고 다음 명령을 실행한다 .
     sudo apt-get install sun-java6-bin

   • 우분투의 패키지 관리자가 최신 버전을 찾아 다운 및 설치를 자동으로 수행한다 .




                                                    61/56
3. 개발환경 구축
 리눅스에서 구축
  이클립스 설치
  • http://www.eclipse.org 로 가서 Elclipse IDE for Java EE Developers 의 Linux 32bit 버전을 다운
    받아 저장한다 .
  • 압축을 해제한 후 홈 디렉토리로 이동시키는 것이 좋다 .
  • 홈 디렉토리로 이동한 후 다음 명령으로 이클립스를 실행한다 .
    cd ~/eclipse
    ./eclipse


  • 이후의 실행 과정은 윈도우와 동일하다 .




                                                                                     62/56
3. 개발환경 구축
 리눅스에서 구축
  리눅스용 안드로이드 SDK 설치
  • 안드로이드 홈 페이지에서 리눅스용 SDK 를 다운받은 후 터미널에서 압축을 해제하고 홈 디렉토
    리로 옮긴다 .
  • 명령행에서 작업하려면 .bashrc 를 편집해 tools 디렉토리를 패스로 지정해 놓는 것이 좋으나 이
    클립스를 사용할 것이라면 굳이 필요치 않다 .


  ADT 설치
  • ADT 플러그인을 설치한다 .
  • AVD 생성은 윈도우에서의 설치와 동일하다 .




                                                           63/56

More Related Content

Similar to 조재완

K모바일발표 111026 하이브리드ux_배포용
K모바일발표 111026 하이브리드ux_배포용K모바일발표 111026 하이브리드ux_배포용
K모바일발표 111026 하이브리드ux_배포용
jinwook shin
 
국내외모바일Os동향및플랫폼동향
국내외모바일Os동향및플랫폼동향국내외모바일Os동향및플랫폼동향
국내외모바일Os동향및플랫폼동향Jong Jin Hong
 
Mobile architecture overview
Mobile architecture overviewMobile architecture overview
Mobile architecture overview
SangSun Park
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
NAVER Engineering
 
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
smartstudy_official
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
Hyun-woo Park
 
Android발표자료 홍종진
Android발표자료 홍종진Android발표자료 홍종진
Android발표자료 홍종진Jong Jin Hong
 
React native development
React native developmentReact native development
React native development
SangSun Park
 
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
ChangGyum Kim
 
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Sung-tae Ryu
 
[한국핀테크포럼] 제7회 핀테크포럼
[한국핀테크포럼] 제7회 핀테크포럼[한국핀테크포럼] 제7회 핀테크포럼
[한국핀테크포럼] 제7회 핀테크포럼
Hyeseon Yoon
 
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10Exynos4210 beginnerrev10
Exynos4210 beginnerrev10mimul
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtime
JinKyoungHeo
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
jaeyunjeong1
 
Goorm
GoormGoorm
Goorm
Eun-Gwi Jo
 
클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012Daum DNA
 
장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327호상 장
 
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
Daniel Juyung Seo
 
하이브리드 앱 개발 개요
하이브리드 앱 개발 개요하이브리드 앱 개발 개요
하이브리드 앱 개발 개요Sohee Jeong
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
중선 곽
 

Similar to 조재완 (20)

K모바일발표 111026 하이브리드ux_배포용
K모바일발표 111026 하이브리드ux_배포용K모바일발표 111026 하이브리드ux_배포용
K모바일발표 111026 하이브리드ux_배포용
 
국내외모바일Os동향및플랫폼동향
국내외모바일Os동향및플랫폼동향국내외모바일Os동향및플랫폼동향
국내외모바일Os동향및플랫폼동향
 
Mobile architecture overview
Mobile architecture overviewMobile architecture overview
Mobile architecture overview
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
 
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
[스마트스터디]스마트스터디는 무엇을 / 왜 / 어떻게 만들어 왔는가
 
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDYWHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
WHAT / WHY / HOW WE’RE ENGINEERING AT SMARTSTUDY
 
Android발표자료 홍종진
Android발표자료 홍종진Android발표자료 홍종진
Android발표자료 홍종진
 
React native development
React native developmentReact native development
React native development
 
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
[HCI2011]모바일웹 UI패턴 및 UI플랫폼_김창겸,문승현_배포용
 
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망
 
[한국핀테크포럼] 제7회 핀테크포럼
[한국핀테크포럼] 제7회 핀테크포럼[한국핀테크포럼] 제7회 핀테크포럼
[한국핀테크포럼] 제7회 핀테크포럼
 
Exynos4210 beginnerrev10
Exynos4210 beginnerrev10Exynos4210 beginnerrev10
Exynos4210 beginnerrev10
 
6. nexcore alopex runtime
6. nexcore alopex runtime6. nexcore alopex runtime
6. nexcore alopex runtime
 
Android Developer JeongJaeyun
Android Developer JeongJaeyunAndroid Developer JeongJaeyun
Android Developer JeongJaeyun
 
Goorm
GoormGoorm
Goorm
 
클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012
 
장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327장호상, 유재우 제안서 130327
장호상, 유재우 제안서 130327
 
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
EFL을 이용한 타이젠 애플리케이션 개발 - Korea Community Day 2014
 
하이브리드 앱 개발 개요
하이브리드 앱 개발 개요하이브리드 앱 개발 개요
하이브리드 앱 개발 개요
 
개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술개발 방식을 바꾸는 15가지 기술
개발 방식을 바꾸는 15가지 기술
 

조재완

  • 1. SNS 이해 및 Mobile App 제작하기 ( 안드로이드 기반 모바일 개발 ) 조재완 (ischool@knue.ac.kr) 1/56
  • 2. 1. SNS 이해 ◈ SNS 란 ? 2 2/56
  • 3. 1. SNS 이해 ◈ SNS, Socialmedia Social Media 3 3/56
  • 4. 1. SNS 이해 ◈ SNS, Socialmedia 사회 구성원들의 의견 , 생각 , 경험 등 을 서로 공유하기 위해 사용하는 개방화 된 온라인 플랫폼 또는 미디어 툴 누구나 미디어를 생산해내는 생산자 동시에 소비자다 . 4 4/56
  • 5. 안드로이드 소개  학습목표  모바일 운영체제의 일반적인 특징과 새롭게 등장한 안드로이드의 주요 특 징 및 전체적인 아키텍처를 알아본다 .  안드로이드 학습을 위한 개발 환경을 설치하고 원활한 실습을 위한 환경 설정 방법을 알아본다 .  내용  모바일 개발  안드로이드 학습 가이드  개발 환경 구축 5/56
  • 6. 1. 모바일 개발  모바일 환경  모바일 , 디지털 생활의 중심  기존 핸드폰과의 차이 ( 스마트폰 vs 핸드폰 ) • 기존의 핸드폰은 통화 기능만 제공함 . • 스마트폰은 MP3, 동영상 감상 , DMB, 카메라 , GPS 등의 첨단 기능을 제공함 . 6/56
  • 7. 1. 모바일 개발  모바일 환경  모바일의 발달 배경 • 작은 부피로도 많은 데이터의 저장이 가능한 메모리 . • 프로세서 파워의 향상 . • 배터리 효율의 향상 .  모바일 운영체제 ( 노말폰 vs 스마트폰 )  모바일 운영체제 • 모바일에서 실행되는 운영체제 . • 모바일 하드웨어 자원을 직접 제어하고 관리하는 시스템 소프트웨어 . • 데스크톱 운영체제에 비해 부피가 작고 상대적으로 쉽게 개발 가능함 .  노말폰 (Nomal Phone) 의 특징 • 별도의 운영체제가 없고 통화 기능만 제공 . • 제조사에서 미리 설치해 놓은 프로그램만 사용 가능 . • 제한적인 기능만 제공 . • 잔 고장이 없으나 소프트웨어 추가 설치가 거의 불가 . 7/56
  • 8. 1. 모바일 개발  모바일 운영체제 ( 노말폰 vs 스마트폰 )  스마트폰의 특징 • 필요에 따라 프로그램의 추가 설치 가능 . • 폰에 별도의 운영체제가 필요 . • 다양한 기능 제공 . • 잔 고장이 많지만 소프트웨어 추가 설치가 가능 .  모바일 운영체제의 종류 • Palm • RIM • 윈도우 모바일 • 심비안 • iPhone OS 8/56
  • 9. 1. 모바일 개발  모바일 운영체제 ( 노말폰 vs 스마트폰 )  2009 년 2 분기에 조사된 모바일 운영체제 점유율 • 심비안이 과반 이상의 점유율을 차지하고 있지만 점점 쇠퇴해가고 있는 중이라 앞으로는 크게 영 향력을 행사하지 못할 것임 . • 모바일 운영체제들은 구조가 완전히 달라 프로그램끼리 서로 호환되지 않으며 , 고유한 장단점을 가지고 있음 . 9/56
  • 10. 1. 모바일 개발  모바일 점유율 OS 2009 2010 2011 2014 심비안 46.9% 40.1% 34.2% 30.2% 안드로이드 3.9% 17.7% 22.2% 29.6% RIM 19.9% 17.5% 15.0% 11.7% iOS 14.4% 15.4% 17.1% 14.9% 윈도우폰 8.7% 4.7% 5.2% 3.9% 기타 6.1% 4.7% 6.3% 9.6% 10/56
  • 11. 1. 모바일 개발  안드로이드의 History  개발 • 2005 년 7 월 , 개발 시작 • 2007 년 11 월 , 안드로이드 첫 버전 릴리즈 • 2008 년 10 월 , 최초의 상용 안드로이드 폰 출시 (HTC 사의 G1) • 정식버전이 발표된지 3 년이 되지 않은 젊은 운영체제  안드로이드 SKD • 구글이 2008 년 부터 SDK 와 문서를 배포하고 주지적으로 업그레이드 하고 있음 . 11/56
  • 12. 1. 모바일 개발  안드로이드 SDK  2.2 Froyo( 프로요 ) • 2010 년 5 월 발표 • 웹브라우징의 성능 개선 • 자바 실행 속도 향상 • 메모리 관리 능력향상 12/56
  • 13. 1. 모바일 개발  안드로이드 SDK  2.3 Gingerbread( 진저 브레이드 ) • 2010 년 12 월에 발표 • 개발자를 위한 JVM 의 가비지 컬렉션을 개선 • UI 개선 • 근거리 통신 기술 지원 (2.3.3) • GPS 수신 , 배터리 소모 개선 (2.3.4) 13/56
  • 14. 1. 모바일 개발  안드로이드 SDK  3.0 Honeycomb( 허니컴 ) • 2011 년 4 월 11 일에 발표 • 테블릿 PC 전용 운영체제 • UI 홀로그래픽 탑재 • 멀티태스킹 지원 • 위젯 기능 강화 • 웹브라우징 개선 14/56
  • 15. 1. 모바일 개발  안드로이드 SDK  Ice cream Sandwich( 아이스크림 샌드위치 ) • 안드로이드 4.0 버전으로 11 월에 발표 예정 • 테블릿용 기능들을 스마트폰에 적용할 예정 15/56
  • 16. 1. 모바일 개발  안드로이드의 등장  안드로이드는 새로 등장한 모바일 운영체제  개발 주체는 OHA(Open Handset Alliance) 컨소시엄으로 되어 있지만 , 실질적인 리더는 인터넷 검색 업체인 구글 (Google) 임  안드로이드 운영체제의 특징  비독점 개방 플랫폼을 지향  개방 플랫폼 vs 비개방 플랫폼 [ 개방 플랫폼 ] •라이선스 비용이 없음 . •개발이 자유로움 . •개발툴들의 성능이 낮고 문제 발생 시 , 기술 지원을 받을 수 없음 . [ 비개방 플랫폼 ] •라이선스 비용 지불 . •개발 환경이 잘 구축되어 있음 . •문제 발생 시 , 기술 지원이 가능 . 16/56
  • 17. 1. 모바일 개발  안드로이드의 특징  운영체제의 핵심이라고 할 수 있는 커널은 공개 운영체제인 리눅스에 기반 한다 .  안드로이드 개발에 공식적으로 자바 언어를 사용한다 .  검증된 많은 라이브러리들을 대거 포함하고 있어 웬만한 기능은 별도의 외부 라이브러리 를 사용할 필요가 없다 .  플랫폼에 내장된 빌트인 프로그램과 사용자가 만든 프로그램이 동일한 API 를 사용하므 로 모든 프로그램은 평등하다 .  개방된 환경인만큼 개발툴과 관련 문서들이 모두 무료로 제공된다 .  안드로이드의 단점 • 오래되지 않은 만큼 숙련된 개발자가 많지 않으며 , 관련 자료도 부족하다 . • 공식 문서가 아직 완비되지 않은 상태다 . • SDK 도 너무 자주 업그레이드되어 안정적이지 못하며 개발툴의 사소한 버그들도 상당히 많은 편 이다 . 17/56
  • 18. 1. 모바일 개발  안드로이드의 아키텍처  효율적이고 안정적인 자원 관리를 위해 계층을 구성하였다 .  하위에서는 저수준 지원 요소들이 있고 상위로 올라갈수록 응용 요소들이 있다 .  추상화와 보안을 위한 인접한 계층끼리만 통신할 수 있다 . ⑤ ④ ② ③ ① 안드로이드 아키텍처 18/56
  • 19. 1. 모바일 개발  안드로이드의 아키텍처  ① : 리눅스 커널 • 백그라운드 스레드 , 메모리 관리 , 보안 , 디바이스 드라이버 등의 저수준 관리 기능을 담당함 . • 디바이스 드라이버의 지원이 광범위함 .  ② : 라이브러리 • 라이브러리는 장비의 전반적인 속도를 결정하는 중요한 요소임 . • 공직 언어인 자바가 아니라 C 로 작성되어 있음 . • 안드로이드 라이브러리 종류 • BSD 파생 libc 라이브러리 • 2D 그래픽을 위한 서피스 관리자 및 SGL • 3D 그래픽을 위한 OpenGL • 벡터 폰트 출력을 위한 FreeType • 오디오 , 비디오 재생을 위한 미디어 지원 • 데이터베이스 지원을 위한 SQLite • 인터넷 브라우징을 위한 SSL 과 크롬 , 사파리에 채용된 WebKit 19/56
  • 20. 1. 모바일 개발  안드로이드의 아키텍처  ③ : 런타임 • 달빅 가상 머신과 자바 코어 라이브러리로 구성되어 있음 . • 안드로이드는 자바 가상 머신을 직접 사용하지 않으며 모바일 환경에 최적화한 달빅 (Dalvik) 가상 머신을 사용함 . • 각 프로세스별로 별도의 달빅 가상 머신이 할당되므로 안정성이 높고 메모리 사용량을 줄여 복수 개의 가상 머신도 효율적으로 동작하도록 설계되었음 .  ④ : 프레임워크 • 안드로이드의 API. • 응용 프로그램들은 하위의 커널이나 시스템 라이브러리를 직접적으로 호출할 수 없으며 API 를 통해서 기능을 요청해야 함 . • API 는 하드웨어 액세스를 추상화하며 UI 제작에 필요한 위젯을 정의하고 시스템 라이브러리와 통신할 수 있는 래퍼를 제고함 .  ⑤ : 응용프로그램 • 인터넷 브라우저 , 바탕화면 , 주소록 등 플랫폼과 함께 설치되는 애플릿들은 물론이고 마켓에서 다운받아 설치하는 게임 , 유틸리티 등도 모두 이 수준에서 실행됨 . 20/56
  • 21. 1. 모바일 개발  안드로이드 실행  안드로이드 실행 파일은 전통적인 실행 파일과 다름  전통적인 실행 파일 • 실행 파일에는 프로그램을 구성하는 코드와 데이터가 들어 있음 . • 실행 파일이 메모리상으로 올라와 실행을 시작하면 프로세스가 됨 . • 실행 파일과 프로세스가 1:1 로 대응되며 응용 프로그램끼리는 서로 독립적임 .  안드로이드의 실행 파일 • 실행 파일은 같은 패키지에 속한 자바 클래스와 리소스의 집합일 뿐이며 프로세스와 반드시 대등 되지 않음 . • 응용 프로그램끼리 서로의 기능을 공유할 수 있음 . • 다른 프로그램의 구성 요소를 불러와 같은 주소 공간에서 실행할 수 있음 . ( 윈도우의 COM 이나 OMG 의 CORBA 등과 개념적으로 유사함 ) • 안드로이드 응용 프로그램은 적절한 권한만 있으면 누구든지 인스턴스화할 수 있는 4 개의 컴포넌 트로 구성됨 . • main 같은 유일한 진입점이 따로 21/56
  • 22. 1. 모바일 개발  안드로이드 실행  안드로이드의 응용 프로그램 • 안드로이드 응용 프로그램은 적절한 권한만 있으면 누구든지 인스턴스화할 수 있는 4 개의 컴포넌 트로 구성된다 . • main 같은 유일한 진입점이 따로 없으며 처음으로 생성되는 인스턴스의 생성자가 실직적인 진입 점이 된다 .  인스턴화할 수 있는 4 개의 컴포넌트 : 액티비티 , 서비스 , 방송 수신자 , 콘텐트 제공자 [ 액티비티 ] • 사용자 인터페이스를 구성하는 기본 단위다 . 눈에 보이는 화면 하나가 액티비티이며 여러개의 뷰 들로 구성된다 . • 응용 프로그램은 필요한 만큼의 액티비티를 가질 수 있으며 그 중 어떤 것을 먼저 띄울지를 지정 한다 . [ 서비스 ] • UI 가 없어 사용자 눈에 직접적으로 보이지 않으며 백그라운드에서 무한히 실행되는 컴포넌트다 . • 전형적인 예로 미디어 플레이어를 들 수 있는데 비활성화된 상태라도 노래는 계속 재생되어야 한 다. • UI 가 없으므로 사용자의 명령을 받아들일 수 있는 액티비티와 연결해서 사용된다 . 22/56
  • 23. 1. 모바일 개발  인스턴화할 수 있는 4 개의 컴포넌트 [ 방송수신자 (Broadcast Receiver) ] •시스템으로부터 전달되는 방송을 대기하고 신호 전달 시 수신하는 역할을 한다 . •예를 들어 배터리가 떨어졌다거나 사진을 찍었다거나 네트워크 전송이 완료되었다는등의 신호를 받 는다 . •신호만 대기할 뿐 UI 를 따로 가지지는 않으므로 방송 수신 시 방송의 의미를 해석하고 적절한 액티 비티를 띄우는 역할을 한다 . [ 콘텐트 제공자 (Content Provider)] •다른 응용 프로그램을 위해 자신의 데이터를 제공한다 . •안드로이드는 보안이 엄격하여 다른 응용 프로그램의 데이터를 함부로 액세스 하지 못하도록 되어 있다 . •응용 프로그램 간에 데이터를 공유할 수 있는 합법적인 유일한 장치가 바로 콘텐트 제공자다 .  응용 프로그램은 액티비티 , 서비스 , 방송 수신자 , 콘텐트 제공자 중 일부만을 가질 수 도 있고 여러 개를 가질 수도 있다 . 23/56
  • 24. 2. 안드로이드 학습 가이드  안드로이드 학습  모바일 환경은 일반 데스크톱 환경에 비해 많은 제약 사항이 존재하므로 모바일 플랫폼과 모바일 환경 자체에 대해서도 어느 정도의 상식이 있어야 한다 .  안드로이드 개발을 위한 선수 과목  자바 • 안드로이드의 SDK 가 자바로 제공되며 기본 언어가 자바이므로 자바 언어에 대한 문법적 이해가 필수적이다 .  XML 문서 • 안드로이드는 레이아웃 배치와 리소스 정의 , 응용 프로그램 설정 구성 등에 XML 문서를 광범위 하게 사용한다 .  이클립스 • 공식 개발툴인 이클립스의 사용법도 잘 알아야 한다 . 24/56
  • 25. 2. 안드로이드 학습 가이드  안드로이드 학습 준비  안드로이드가 리눅스 커널에 기반을 두지만 리눅스를 잘 몰라도 상관없다 . 윈도우 환경 에서 학습 및 개발을 한다면 리눅스를 직접 다룰 필요는 없다 .  학습을 위해 하드웨어를 따로 준비할 필요는 없고 컴퓨터만 있으면 된다 .  에뮬레이터가 잘 구비되어 있으므로 폰을 따로 준비하지 않아도 된다 .  풍부한 모바일 사용 경험 . 모바일 사용 경험이 풍부해야 사용자를 배려하느 좋은 프로그 램을 만들 수 있다 . 안드로이드 자체의 난이도가 높지는 않지만 플랫폼 자체에 대한 경험 은 상당히 중요하다 . 25/56
  • 26. 3. 개발환경 구축  안드로이드 개발 환경의 특징  통합된 개발 환경을 한 회사에서 주도적으로 만든 것이 아니어서 이것저것 설치해야 하고 순서도 잘 지켜야 한다 .  사용할 버전이나 운영체제에 따라 약간씩 달라지는 부분이 있고 사소한 버그도 있어 충분 한 주의를 기울여야 한다 .  안드로이드 개발 관련 프로그램 설치 순서 • JDK 1.6 업데이트 18 • 이클립스 3.5 • ADT 플러그인 • 안드로이드 S 아 2.1 • AVD 생성 및 옵션 조정  JDK 설치  안드로이드의 기본 개발 언어가 자바이므로 JDK 를 먼저 설치한다 .  JDK 에 JRE 가 포함되어 있으므로 JRE 만 따로 설치할 필요는 없다 .  JDK 는 사용 목적에 따라 SE(Standard Edition), EE(Enterprise Edition), ME(Mobile Edition) 등 세 가지로 제공되는데 안드로이드 개발에는 SE 나 EE 를 사용한다 . 26/56
  • 27. 3. 개발환경 구축  JDK 설치  JDK 는 가급적 최신 버전으로 설치한다 .  JDK 는 Sun 사이트에서 구할 수 있다 . (java.sun.com) 27/56
  • 28. 3. 개발환경 구축  JDK 설치  다운받은 설치 파일을 실행하면 라이선스 , 동의창이 나타나고 설치할 기능을 묻는다 . • 디폴트로 전부 선택되어 있으며 목록의 아이콘을 클릭해 제외시킬 수 있지만 웬만하면 다 설치하 는 것이 좋다 . • 설치 경로는 디폴트인 Program Files 로 하고 [Next] 버튼을 눌러 설치를 시작한다 . • 설치 완료 대화상자에서 [Finish] 버튼을 누르면 설치가 종료된다 . 28/56
  • 29. 3. 개발환경 구축  JDK 설치 확인  설치 확인 코드 ‘ Hello.java’ class Hello { public static void main(String args[]) { System.out.println("First Java Program"); } }  Hello.java 파일을 bin 폴더에 저장 후 , 명령행에서 다음과 같이 컴파일 및 실행한다 . • 명령행에 문자열이 출력되면 JDK 가 제대로 설치된 것이다 . 29/56
  • 30. 3. 개발환경 구축  이클립스  안드로이드 응용 프로그램 개발에는 주로 이클립스를 사용한다 .  이클립스는 통합 개발 환경을 제공한다 .  이클립스 다운 (www.eclipse.org) 클 릭 30/56
  • 31. 3. 개발환경 구축  이클립스  홈페이지 상단 메뉴의 Downloads 를 클릭하면 이클립스의 여러 가지 버전을 다운받을 수 있는 링크들이 나타난다 .  이클립스는 유로파 (3.3.x), 가니메데 (3.4.x), 갈릴레오 (3.5.x) 식으로 목성의 위성 이름을 붙여 릴리즈하며 언어나 플랫폼에 따라 여러 가지 버전이 제공되는데 안드로이드 개발용 으로는 클래식 버전이나 엔터프라이즈 버전이 적합하다 .  Eclipse IDE for Java EE Developer 오른쪽의 Windows 32bit 링크를 눌러 윈도우 버전 을 다운받는다 . • eclipse-jee-galileo-SR1-win32.zip(189M)  압축 파일 안에 eclipse 폴더가 있는데 이 폴더를 C:Program Files 폴더에 압축을 푼다 . 물론 시스템 상황에 따라 다른 폴더에 압축을 풀어도 상관없다 .  eclipse 폴더 안의 eclipse.exe 가 주 실행 파일이다 . JRE 만 제대로 설치되어 있다면 별 문제없이 실행된다 . 31/56
  • 32. 3. 개발환경 구축  이클립스  최초 실행 시 , 워크 스페이스를 물어 본다 .  이후 C:AndroidExam 폴더 아래에 실습 프로젝트를 생성할 것이다 .  실무를 할 때는 이클립스 메뉴의 [File-Switch workspace] 명령으로 워크스페이스를 언제 든지 변경할 수 있다 . 32/56
  • 33. 3. 개발환경 구축  이클립스  [workbench] 를 클릭하면 개발 환경으로 들어간다 . 33/56
  • 34. 3. 개발환경 구축  이클립스 테스트  [File-New-Project...] 명령을 실한 한다 . 34/56
  • 35. 3. 개발환경 구축  이클립스 테스트  마법사 선택 대화상자에서 [Java-Java Project] 를 선택하면 새 프로젝트를 만드는 대화상 자나 나타난다 .  프로젝트 이름에 “ FirstEclipse” 를 입력하고 나머지 옵션은 디폴트로 한다 . 35/56
  • 36. 3. 개발환경 구축  이클립스 테스트  ( 참고 ) 사용 중인 이클립스 버전에 따라 다음과 같은 대화상자가 나타날 수도 있다 . • 자바 프로젝트는 Java 퍼스펙티브가 접합하므로 변경하겠느냐는 질문이다 . 디버그 모드로 진입 할 때도 동일한 질문을 하는데 메시지를 잘 읽어 보고 [Yes] 버튼을 클릭한다 . 36/56
  • 37. 3. 개발환경 구축  이클립스 테스트  소소 파일 추가 • 메뉴에서 [File-New-Class] 명령을 선택하고 Name 란에 프로젝트명과 똑같은 이름을 설정한다 . • 주 소스는 main 메서드도 같이 생성해야 하므로 public static void main(String[] args) 옵션을 선 택한다 . 37/56
  • 38. 3. 개발환경 구축  소소 파일 추가 • main 메소드 안쪽에 다음 코드를 작성한다 . ( 문자열을 출력하는 간단한 출력문이다 .)  소스 컴파일 • [File-Save( + )] 명령을 선택하면 소스가 저장되면서 자동으로 컴파일 된다 . • 이클립스의 디폴트 옵션이“저장시 컴파일”로 되어 있어서 저장만 하면 컴파일 된다 . 소스에 오타 가 있다면 아래쪽의 Problems 창에 에러가 발생한 곳과 에러 원인이 출력되는데 수정 후 다시 저 장하면 된다 . • 에러가 없으면 Problems 에 아무 것도 나타나지 않으며 “ 0 items” 라고 표시 된다 . 38/56
  • 39. 3. 개발환경 구축  소소 파일 실행 • 저장 및 컴파일 되었으면 [Run-Run( + )] 명령으로 실행한다 . • 명령창이 따로 열리지 않고 아래쪽의 Console 창에 실행 결과가 나타난다 . 문자열이 출력되면 모 든 것이 정상적으로 잘 설치된 것이다 .  프로젝트 폴더의 구조 • 프로젝트 폴더의 구조는 아주 단순하다 . • src 폴더에 소스 파일이 저장되고 bin 폴더에 컴파일 된 실행 파일이 저장되며 프로젝트 루트 폴 더에는 두 개의 설정 파일이 생성된다 . 39/56
  • 40. 3. 개발환경 구축  플러그인  플러그인은 이클립스와 안드로이드를 연결하는 설정이다 .  이클립스는 플러그인이라는 장치를 통해 임의의 플랫폼에 대한 개발툴을 추가 설치할 수 있도록 지원하며 구글은 이클립스에 플러그인 되는 안드로이드 개발 킷을 제공한다 .  안드로이드 개발 킷을 ADT(Android Development Tool) 라 한다 .  ADT 패킷 • 안드로이드 프로젝트 생성 마법사 • XML 레이아웃 편집기 • 패키지 제작툴 • 이클립스에 통합된 DDMS  이클립스의 [Help-Install New Software] 명령을 선택하면 업데 이트 대화상자가 나타난다 . 업데이트 대화 상자 40/56
  • 41. 3. 개발환경 구축  플러그인  대화상자에서 [Add] 버튼을 누르고 ADT 가 있는 위치를 가르쳐 준다 .  ADT 는 https://dl-ssl.google.com/android/eclipse/ 사이트를 통해 배포된다 . • 접속 프로토콜이 보안이 적용된 https 이다 . 네트워크 상황에 따라 방화벽이나 보안 문제로 인해 접속이 안 되는 경우가 종종 있는데 이 경우 https 를 http 로 바꿔 주면 된다 . 41/56
  • 42. 3. 개발환경 구축  플러그인  접속 사이트에서 제공하는 플러그인의 목록이 표시되는데 중앙의 목록에 Developer Tools 라는 항목이 나타난다 . • ADT 와 DDMS 두 개의 플러그인이 포함되어 있는데 루트의 Developer Tools 항목을 클릭해 전 체 선택하고 [Next] 버튼을 누르면 이클립스가 이 소프트웨어를 다운받고 설치까지 자동으로 수 행한다 . 42/56
  • 43. 3. 개발환경 구축  플러그인  플러그인 설치 • 운영체제에 따라 서명이 누락된 소프트웨어라는 보안 경고가 뜨는 경우도 있는데 무시해도 상 • 관 없다 . • ADT 설치가 완료되면 이클립스를 재시작하라는 메시지 박스가 나타난다 . 새로 추가된 기능에 의 해 이클립스의 기능이 완전히 바뀔 수 있으므로 가급적이면 재시작하는 것이 좋다 . • 이클립스가 자동 종료되었다가 재시작 되면 ADT 설치가 완료된 것이다 . 43/56
  • 44. 3. 개발환경 구축  안드로이드 SDK  SDK(Software Development Kit) • 특정한 소프트웨어 꾸러미 , 소프트웨어 프레임워크 , 하드웨어 플랫폼 , 컴퓨터 시스템 , 게임기 , 운영 체제 등을 위한 응용 프로그램을 만들 수 있게 하는 개발 도구의 집합이다 .  안드로이드를 위한 SDK • 안드로이드 개발 라이브러리 , 도움말 문서 , 개발 보조 툴 등을 포함하므로 용량이 방대하다 . • 개발 목적에 따라 필요한 SDK 목록이 틀리고 업데이트 빈도가 잦기 때문에 꼭 필요한 부분만 선 택적으로 설치 및 업데이트할 수 있도록 되어 있다 . • 개발에 필요한 파일은 SDK 를 통해 배포되며 ADT 는 이클립스와 SDK 를 연결해 주기만 한다 . • 안드로이드 SDK 사이트 http://developer.android.com 44/56
  • 45. 3. 개발환경 구축  안드로이드 SDK  안드로이드 SDK 설치 • 안드로이드 SDK 사이트 http://developer.android.com • 윈도우용 , 매킨토시용 , 리눅스용 SDK 가 각각 제공되는데 윈도우 환경에서 실습을 진행하므로 윈도우용을 다운받는다 . 45/56
  • 46. 3. 개발환경 구축  안드로이드 SDK 설치 • 라이브러리와 문서들로 구성되어 있으므로 따로 설치할 필요는 없고 압축만 풀어 두면 된다 . • 아무 곳에나 풀어도 상관없지만 Program Files 폴더 안에 두도록 하자 .  SDK 설정 • ADT 에게 SDK 가 어디에 있는지 위치를 설정한다 . • 이클립트의 [Window-Preference] 메뉴를 선택하고 왼쪽 메뉴에서 Android 를 클릭한 후 SDK 폴 더의 위치를 지정한다 . 앞에서 다운 받아 압축을 풀어둔 폴더를 지정해 주면 된다 . • 단순한 디렉토리에 불과하므로 여러 개의 SDK 를 설치해 놓고 번갈아 가며 사용하는 것도 가능하 며 워크스페이스별로 각각 다른 버전 의 SDK 를 사용할 수도 있다 . 46/56
  • 47. 3. 개발환경 구축  안드로이드 SDK 추가 설치 • SDK 의 위치를 지정했다면 다음은 추가로 더 필요한 SDK 요소들을 다운받는다 . • 이클립스의 메뉴에서 [Window-Android SDK and AVD Manager] 명령을 선택하면 다음 대화상자 가 열린다 . • Available Packages 탭에는 설치 가능한 목록들이 나열되는데 이전 버전의 SDK 도 모두 같이 설 치할 수 있다 . • 최신 버전만 설치하는 것도 가능하지만 이전 버전으로 작성된 예제들도 있으므로 하드 디스크 공 47/56
  • 48. 3. 개발환경 구축  안드로이드 SDK  안드로이드 SDK 설치 파일 : 문서 , 샘플 , 개발툴  문서 • docs 폴더에는 안드로이드 개발 관련 문서들이 제공된다 . • HTML 포맷이므로 웹 브라우저를 통해 읽을 수 있다 .  샘플 • platforms 폴더 안에 많지는 않지만 몇 가지 샘플 프로젝트가 제공된다 . • 각 버전별로 디렉토리가 구성되어 있으며 버전이 높을수록 예제의 개수도 늘어난다 . • 예제를 통해 안드로이드의 기능을 둘러 볼 수 있으며 기본적인 코딩 기법을 배울 수 있다 .  개발툴 • tools 폴더에는 컴파일러 , 디버거 , 에뮬레이터 등 개발에 꼭 필요한 프로그램들이 제공된다 . • 대부분 명령행에서 동작하는 것들인데 다행히 이클립스가 적절한 때 호출해 주므로 직접적으로 사 용해야하는 것은 별로 없다 . 48/56
  • 49. 3. 개발환경 구축  AVD 생성  모바일 개발을 할 때는 통상 에뮬레이터에서 테스트를 수행하는데 안드로이드폰 에뮬레 이터를 AVD(Android Virtual Device) 라고 부른다 .  AVD 는 소프트웨어적으로 만든 가상의 장비이지만 진짜 안드로이드폰과 기능이 동일하 다. • 1.1 버전까지는 에뮬레이터가 기본 제공되어 간편하기는 했지만 다양한 테스트를 하기에는 여러 가지 문제가 있었다 . • 1.5 버전부터는 AVD 를 필요한 만큼 만들어 두고 번갈아 가면서 사용할 수 있도록 바뀌었다 .  이클립스의 메뉴에서 [Window-Android SDK and AVD Manager] 명령을 선택하고 목 록에서 Virtual Devices 페이지를 선택한다 . 49/56
  • 50. 3. 개발환경 구축  AVD 생성  새로운 AVD 를 생성하기 위해 New 버튼을 누른 후 다음과 같이 입력한다 . • 이름은 가상 장비간의 구분을 위한 명칭인데 중복되지만 않으면 아무렇게나 주어도 상관없다 . • 짧게 scv 라고 이름을 붙여 주도록 하자 . • 타깃은 Android 2.1 로 선택하고 가상의 메모리 카드인 SD Card 는 32MB 로 설정한다 . • 스킨은 화면의 해상도를 선택하는데 HVGA 가 안드로이드의 표준이므로 디폴트대로두면 된다 . • 그 외 하드웨어 장치 옵션들도 선택할 수 있다 . • 가상 장비의 옵션을 적당히 편집한 후 아래쪽의 Create AVD 버튼을 누른다 . 50/56
  • 51. 3. 개발환경 구축  AVD 생성  AVD 설정 • AVD 는 “ C:User 사용자계정명 .androidavd” 폴더 안에 저장되며 가상 장비의 메모리 , 구성 등 의 정보가 기록되어 있다 . • 똑같은 절차를 거쳐 각각 다른 이름과 다른 설정으로 여러 대의 AVD 를 미리 생성해 놓을 수도 있 다. 51/56
  • 52. 3. 개발환경 구축  AVD 생성  AVD 확인 • AVD 가 제대로 생성되었는지 Start 버튼을 눌러 기동한다 . 52/56
  • 53. 3. 개발환경 구축  AVD 생성  AVD 가 기동되지 않을 때 대처방법 : 버그 수정 • 에뮬레이터가 제대로 실행되면 다행이나 한글 윈도우에서는 약간의 문제가 발생할 수도 있다 . • AVD 생성 후 첫 기동했을 때 에뮬레이터가 뜨지 않고 다음과 같은 에러 메시지가 나타나는 경우 가 종종 있다 . • AVD 가 저장되는 경로에 영문이 아닌 문자가 있으면 이클립스가 에뮬레이터를 제대로 기동시키지 못한다 . • SDK 업데이트 속도가 워낙 빠르다 보니 구글이 동양권의 운영체제까지 충분하게 테스트하지 못 해 발생한 일종의 버그다 . 53/56
  • 54. 3. 개발환경 구축  AVD 가 기동되지 않을 때 대처방법 : 버그 수정 • 해결방법은 AVD 를 한글이 포함되지 않는 경로로 옮기는 것이다 . • AVD 의 경로는 GUI 상에서 편집할 수 없으므로 명령행에서 편집해야 한다 . [ 버그 수정 1] • 명령창을 열고 AVD 가 저장되어 있는 C:User 사용자계정 .androidavd 폴더로 이동한 후 다음 명령으로 AVD 를 적당한 곳으로 이동시킨다 . android move avd -n scv -p c:Windowsscv.avd <scv 라는 이름의 AVD 를 C:Windows 아래의 scv.avd 폴더로 이동시키라는 명령이다 .> • 루트를 깔끔하게 유지하기 위해 Windows 폴더 아래로 옮겼는데 Program Files 아래에 둘 수도 있고 C:Avd 식으로 별도의 폴더를 만들어도 상관없다 . ( 경로에 한글만 포함되지 않으면 된다 .) • 이 명령이 제대로 동작하려면 java 와 안드로이드 SDK 에 대해 Path 지정이 되어 있어야 한다 . 또 대상 폴더의 부모 폴더는 존재해야 하며 마지막 폴더인 scv.avd 는 직접 생성하므로 존재해서 는 안 된다 . 54/56
  • 55. 3. 개발환경 구축  AVD 가 기동되지 않을 때 대처방법 : 버그 수정 [ 버그 수정 2] •탐색기로 AVD 폴더를 원하는 곳으로 이동시키고 정보 파일의 경로만 살짝 수정하면 된다 . C:User 사용자계정 .androidavd 폴더안에 생성되어 있는 scv.avd 를 잘라내서 C:Windows 폴더 에 붙여 넣는다 . •메모장으로 avd 폴더에 남아 있는 scv.ini 파일을 열어 path 를 이동한 경로명으로 수정한다 . target=android-7 path=C:Windowsscv.avd 55/56
  • 56. 3. 개발환경 구축  옵션 설정  실습과 한글 호환성 확보를 위해 몇 가지 옵션을 조정한다 .  워크스페이스의 문자셋을 UTF-8 로 변경한다 . • 한글로 주석을 달기 위해서는 UTF-8 인코딩을 사용하는 것이 유리하며 배포되는 예제들도 대부 분 UTF-8 인코딩을 사용하므로 예제를 제대로 보기 위해서라도 조정하는 것이 좋다 . • Preference 창에서 [General-Workspace] 의 Text file encoding 을 [Other-UTF-8] 로 변경한다 . 이 옵션을 조정하지 않으면 예제의 한글 주석이 깨져 보이는 문제가 있다 . 56/56
  • 57. 3. 개발환경 구축  옵션 설정  [General-Editors-TextEditors-Spelling-Enable spell checking] 옵션을 해제한다 . • 주석의 맞춤법 검사를 해 주는 기능인데 컴파일러에게는 너무 사치스러운데다 편집 속도를 떨어뜨 리므로 사용하지 않는 것이 좋다 . • 한글을 제대로 인식하지 못해 영문 단어와 한글 조사가 붙어 있으면 무조건 오타 처리되어 보기 싫 은 밑줄이 그어지는 문제가 있다 . 57/56
  • 58. 3. 개발환경 구축  옵션 설정  [Java-Code Style-Organize Imports] 페이지의 “ Number of imports needed for .*” 옵션 을 1 로 변경한다 . • 이클립스는 import 문을 자동으로 정리해 주는 편리한 기능을 제공하는데 매 클래스마다 import 문이 작성되어 소스가 너무 길어진다 . 이 값을 1 로 바꿔 놓으면 패키지의 모든 클래스를 한꺼번 에 임포트해 주므로 실습할 때 편리하고 결과 소스가 짧아지는 효과가 있다 . 58/56
  • 59. 3. 개발환경 구축  옵션 설정  [Java-Compiler-Errors-Warings-Unnecessary code] 의 모든 옵션들을 Ignore 로 변경한 다. • 이 옵션을 바꾸지 않으면 실습 중에 수많은 경고가 발생한다 . 59/56
  • 60. 3. 개발환경 구축  설치 확인  시스템에 어떤 파일들이 생성되었는지 , 적재적소에 제대로 배치되어 있는지 탐색기로 살 펴보고 점검해 본다 .  다음과 같은 폴더들이 생성되어 있다면 제대로 설치가 완료된 것이다 . 60/56
  • 61. 3. 개발환경 구축  리눅스에서 구축  JDK 설치 • 우분투의 패키지 관리자를 사용하면 JDK 는 아주 쉽게 설치할 수 있다 . • 터미널을 열고 다음 명령을 실행한다 . sudo apt-get install sun-java6-bin • 우분투의 패키지 관리자가 최신 버전을 찾아 다운 및 설치를 자동으로 수행한다 . 61/56
  • 62. 3. 개발환경 구축  리눅스에서 구축  이클립스 설치 • http://www.eclipse.org 로 가서 Elclipse IDE for Java EE Developers 의 Linux 32bit 버전을 다운 받아 저장한다 . • 압축을 해제한 후 홈 디렉토리로 이동시키는 것이 좋다 . • 홈 디렉토리로 이동한 후 다음 명령으로 이클립스를 실행한다 . cd ~/eclipse ./eclipse • 이후의 실행 과정은 윈도우와 동일하다 . 62/56
  • 63. 3. 개발환경 구축  리눅스에서 구축  리눅스용 안드로이드 SDK 설치 • 안드로이드 홈 페이지에서 리눅스용 SDK 를 다운받은 후 터미널에서 압축을 해제하고 홈 디렉토 리로 옮긴다 . • 명령행에서 작업하려면 .bashrc 를 편집해 tools 디렉토리를 패스로 지정해 놓는 것이 좋으나 이 클립스를 사용할 것이라면 굳이 필요치 않다 .  ADT 설치 • ADT 플러그인을 설치한다 . • AVD 생성은 윈도우에서의 설치와 동일하다 . 63/56