상단

오픈소스 모바일 플랫폼인 안드로이드(Android)를 정리 한다.

 
 

안드로이드 개요


안드로이드(Android) : 휴대전화와 모바일 디바이스를 위한 운영체제, 미들웨어 그리고 핵심 애플리케이션을 포함한 소프트웨어 스택

안드로이드 역사

  • 2005년 7월 : 안드로이드 사를 구글에서 인수

  • 2007년 11월 5일

    • 하드웨어, 소프트웨어, 통신 회사가 모여 만든 OHA(Open Handset Alliance) 결성

    • OHA에서 모바일 기기용 공개 표준 개발

     
  • 2007년 11월 12일 : 휴대전화용 안드로이드 플랫폼 발표 (무료로 공개)

  • *안드로이드 SDK, 동작 샘플, 안드로이드 시스템 구조, 안드로이드 내장 SW 개발 구조 공개

  • 2008년 9월 : Android SDK 1.0 발표

  • 2008년 10월 21일 : 안드로이드를 오픈소스(아파치 라이선스)로 공개

  • 2008년 10월 22일 : 미국 T-Mobile에서 최초의 Android 폰인 G1 출시

  • 2008년 10월 22일 : Android Market 정식 오픈

  • *2009년 2월 19일 부터 유료 애플리케이션도 제공

  • 2014년 10월 18일 : 안드로이드 5.0 롤리팝 SDK 가 공개되었습니다.

 
 

OHA - Open Handset Alliance

  • OHA (Open Handset Alliance, 개방형 휴대전화 연합)

    • 휴대전화 제조, 서비스, 칩 제조 등 전세계 65개 업체가 가입 (2009년말)

    • 휴대폰 제조 업체 : 삼성전자, LG전자, 모토롤라, HTC

    • 이동통신 업체 : 스프린트, T-모바일, NTT 도코모, KDDI

    • 칩 제조 업체 : 퀄컴, 브로드컴, 인텔, 텍사스인스트루먼트

 
 

안드로이드 마켓 플레이스

  • 안드로이드 마켓플레이스

  • 2008년 10월 22일 : Android Market 정식 오픈

    • 2009년 2월 19일 부터 유료 애플리케이션도 제공

  • SDK 다운 등은 무상

  • 판매 수익은 CP/솔루션업체와 이동통신사가 7:3으로 분배

 
 

안드로이드의 타겟 시장

  • 스마트폰

  • 넷북

  • 인터넷 전화기

  • 휴대용 기기 (이북 등)

 
 

스마트폰의 장치 및 기능


스마트폰 장치

  • 스마트폰 장치 입출력

    • 버튼

    • 화면 (Display)

      • 그래픽 : OpenGL ES 1.0

      • Touch Screen

      • Multi Touch

      • 제스쳐

    • 오디오 (재생, 녹음), 비디오 (재생, 녹화)

    • FM 라디오

    • 카메라 : 사진, 동영상

    • USB, MicroSD

    • 광학 조이스틱 (Optical Joystick)

    • 트랙볼

     
  • 전화(Telephony)

    • 음성 통신 (GSM)

    • 메시징 : SMS, MMS

     
  • 인터넷/네트워크

    • 3G, GRPS, EDGE

    • Wi-Fi

    • Bluetooth

    • 테더링(Tethering) : USB, Bluetooth, Wi-Fi

     
  • 스마트폰용 센서
    {| cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" 
    |- 
    | width="20%" align="center" style="background-color:#eee;" |자이로 센서 
    | width="80%" |

  • 자이로스코프(gyroscope), gyro

  • 회전 관성을 감지하는 센서, 회전각을 감지
    align="center" style="background-color:#eee;"
  • 중력 센서, G-Sensor, Accelation

  • 가속도를 감지하는 센서, 외부의 충격량과 방향을 감지

  • 기울기(Tilt) 센서의 기능도 있음
    align="center" style="background-color:#eee;"
  • Tilt

  • 기울기를 감지
    align="center" style="background-color:#eee;"
  • 위치 기반 서비스
    align="center" style="background-color:#eee;"
  • 전자 나침반, 디지털 나침반
    align="center" style="background-color:#eee;"
  • Proximity sensor
    align="center" style="background-color:#eee;"
  • 주변 광센서
    align="center" style="background-color:#eee;"
    }
 

Smartphone UX

 
 

Push Notification Service

Push <-> Polling

 
 

Android 개발 환경


사전 준비 사항

  • [Java](JDK.md#설치 가이드.md) 1.5 이상 설치

  • [Eclipse](Eclipse.md#Eclipse 설치.md) 3.5 이상 설치

 
 

Android 개발 환경 설정

  • Android Plugin 설치

    • 이클립스에서 "Help -> Install New Software..." 메뉴를 선택 한다.

    • "Add" 버튼을 선택 한 후 다음과 같이 등록 한다.

    • "Developer Tools"의 모든 Plugin을 설치 한다.

    • 정상적으로 설치가 되면 "Window -> Android SDK and AVD Manager" 메뉴가 보인다.

     
  • Android SDK 설치

    • http://developer.android.com/ 사이트에서 "SDK" 탭을 선택 한 후 "android-sdk_r3-windows.zip" 파일을 다운로드 한다.

    • 다운로드 받은 파일의 압축을 풀어 c:/appl/androidSDK/ 폴더에 저장 한다.

    • "Window -> Preferences -> Android" 메뉴를 선택 한다.

    • "SDK Location"에 "c:/appl/androidSDK/"를 지정 한다.

    • "Window -> Android SDK and AVD Manager -> Available Packages" 메뉴를 선택 한다.

    • 모든 설치 가능한 Packages를 선택 하고 하단의 "Install Selected" 버튼을 선택하여 설치 한다. (끈기를 가지고 설치가 완료될 때까지 기다리자.)

    • 오류가 나서 일부만 설치되면 한두번 더 설치를 시도해 보자.

     
  • Android용 Virtual Device 생성

    • "Window -> Android SDK and AVD Manager -> Virtual Devices" 메뉴에서 "New..." 버튼을 선택 한다.

    • 다음과 같이 설정한 후 "Create AVD" 버튼을 선택 한다.

      • Name : Android_Device_2.1

      • Target : Android 2.1 - API Level 7

      • SD Card

        • Size : 1024 MiB

    • "Window -> Android SDK and AVD Manager -> Virtual Devices" 메뉴에서 실행할 AVD를 선택 한 후 "Start" 버튼을 선택 하면 Virtual Device를 실행할 수 있다. (OS가 기동하는 동안 끈기 있게 기다리자.)

    • 주의: OS에서 한글 계정으로 로그인한 경우 제대로 동작하지 않을 수 있다. 사실 한글 계정은 여러곳에서 문제가 된다.
      Android|600px

  • Eclipse에서 안드로이드 컴파일 환경을 변경하는 방법

    • default.properties에서 "target=Google Inc.:Google APIs:8"을 변경 한다.

    • 예) 안드로이드 2.1 : target=Google Inc.:Google APIs:7

    • 예) 안드로이드 2.2 : target=Google Inc.:Google APIs:8

     
  • 참고 문헌

 
 

안드로이드 애뮬레이터

  • 애뮬레이트 생성 및 실행

 
 android create avd --name 이름 --target 버전(예, 4) -sdcard 256M
 emulator @이름
  • 애뮬레이터 키

    • 홈 : Home

    • 메뉴 : F2, Page_Up

    • 스타 : Shift_F2, Page_Down

    • 백 : Esc

    • 전화 걸기/끊기 : F3 / F4

    • 검색 : F5

    • 전원 : F7

    • 네트워크 접속 토클 : F8

    • 볼륨 업/다운 : +, Ctrl_F5 / -, Ctrl_F6

    • 카메라 : Ctrl_+, 5, Ctrl_F3

    • Portrait, Landscape 전환 : 7, 9, Ctrl_F11, Ctrl_F12

     
  • 한글 키보드 설치

     
  • ~.apk

    • /data/app/ 에 설치됨

     
  • Tools

    • set path=$ANDROID_SDK/tools/;$ANDROID_SDK/platforms/android-7/tools/

    • $ANDROID_SDK/tools/

 
 acp.exe
 adb.exe
 dmtracedump.exe
 emulator.exe
 etc1tool.exe
 fastboot.exe
 hprof-conv.exe
 mksdcard.exe
 sqlite3.exe
 zipalign.exe
  • $ANDROID_SDK/platforms/android-7/tools/

 
 aapt.exe
 aidl.exe
 dexdump.exe
  • AAPT (ANDROID ASSET PACKAGING TOOL)

  • ADB (ANDROID DEBUG BRIDGE)
    :adb devices 
    adb 1 shell 
    :adb shell install ~.apk 
    :adb shell uninstall ~.apk

  • 애뮬레이터 콘솔
    telnet localhost 5554

    help|h|?         print a list of commands
    event            simulate hardware events
    geo              Geo-location commands
    gsm              GSM related commands
    kill             kill the emulator instance
    network          manage network settings
    power            power related commands
    quit|exit        quit control session
    redir            manage port redirections
    sms              SMS related commands
    avd              manager virtual device state
    window           manage emulator window
 
 try 'help ' for command-specific help

안드로이드 애뮬레이터 폴더 구조

 /data/
     /app/ : 배포된 애플리케이션 저장 폴더
         com.jopenbusiness.android.apk
     /data/ : 배포된 애플리케이션 설치 폴더
         /com.jopenbusiness.android/
             /databases/ : SQLite (sqlite3) Database file
                 alarms.db
             /files/
             /lib/
             /shared_prefs/ : SharedPreferences XML 파일 저장 위치
                 AlarmClock.xml
 /sdcard/ : 내장 SD (Secure Digital) 플래시 메모리 카드
 /sdcard/external_sd/  : 외장 SD (Secure Digital) 플래시 메모리 카드
 /system/
     /app/ : Android 내장 애플리케이션 저장 폴더
         Contacts.apk
     /etc/permissions/
     /framework/~.jar

안드로이드 애뮬레이터 오류 조치

  • 작성된 apk 파일이 배포되지 않을 경우

    • 오류 메시지

 
 java.io.IOException: Unable to upload file: null
  • 조치 방법

    • apk 파일의 크기가 커지면서 발생하는 문제로

    • "Window -> Preferences -> Android -> DDMS -> ADB connection time out (ms)" 메뉴의 설정된 값을 늘여 준다.

 

apk Decompile

  • 라이브러리 다운로드

     
  • Contacts.apk 파일을 Decompile 해보자.

    • Contacts.apk 파일을 Contacts 폴더에 압축을 푼다.

    • java -DASDKLoc=. -jar undx.jar -s C:/appl/androidSDK -f Contacts/classes.dex

      • gen/classes.dex.jar 파일이 생성 된다.

    • gen/classes.dex.jar 파일의 압축을 풀어 jad로 decompile 한다.

      • jad -o -r -sjava -dsrc **/*.class

     
  • XML 파일을 사람이 읽기 편한 형태로 변환 한다.

    • java -jar AXMLPrinter2.jar Contacts/AndroidManifest.xml > out/AndroidManifest.xml

     
  • 참고 문헌

 
 

Android update

  • Android update 방법

    • "Window -> Android SDK and AVD Manager -> Installed Packages" 메뉴를 선택한다.

    • 하단의 "Update All..." 버튼을 눌러 Android를 업데이트 한다.

     
  • Android update시 오류 처리 방법

    • 오류 메시지 : "A folder failed to be renamed or moved. 생략"

    • 처리 방법

      • Eclipse를 종료 한다.

      • $ANDROID_SDK/SDK Manager.exe 파일을 실행한다.

      • "Installed Packages" 메뉴를 선택한다.

      • 하단의 "Update All..." 버튼을 눌러 Android를 업데이트 한다.

 
 

ART


ART (Android Run Time)

 
 

Multi Device 지원


  • [Multi Device 지원](Mobile_Business.md#Multi Device 지원.md)

 
 

Android SDK


Android SDK

Android UI

Android - UI

Android 입출력

Android - 입출력

Honeycomb


 
 
 
 

Android L


Android L의 특징

  • 머티리얼 디자인 적용 : 종이와 잉크를 메타포로하여 입체적인 디자인을 추구

  • OpenGL ES 3.1

  • WebRTC : P2P

  • WebGL : 3D 그래픽

  • 웹 오디오

  • 매니지드 프로비저닝

 
 
 
 

안드로이드L 애뮬레이터 다운로드 사이트

안드로이드 SDK 매니저

Hello Android


첫번째 안드로이드 애플리케이션으로 "Hello Android"를 출력하는 애플리케이션을 만들어 봅시다.

  • "File -> New -> Android Project" 메뉴를 선택하여 다음과 같이 입력한 후 "Finish" 버튼을 누른다.

    • Project name : Hello_Android

    • Build Target : Android 2.1 을 선택

    • Applicatin name : HelloAndroid

    • Package name : com.jopenbusiness.android

    • Create Activity : .HelloAndroid
      애플리케이션 생성


  • 애플리케이션의 화면을 수정 합니다.

    • "Hello_Android -> res -> layout -> main.xml"을 더블 클릭 한다.

    • "Window -> Show View" 메뉴에서 아래 두개의 View를 추가 한다.

      • Outline : 화면에 표시되는 Control 또는 Widget 등을 보고 선택할 수 있다.

      • Properties : 화면에 표시되는 Control 또는 Widget 등의 속성을 수정할 수 있다.

    • main.xml의 Outline에서 "TextView:를 선택 한다.

    • Properties에서 Text size에 25px를 입력 한다. (폰트 크기 변경)
      레이아웃 수정

    • "Hello_Android -> res -> values -> strings.xml"을 더블 클릭 한다.

    • "hello" 문자열을 선택한 후 Value에 "Hello Android!"를 입력 한다.
      Resource 수정


  • 수정한 애플리케이션을 애뮬레이터를 통해 실행 한다.

    • "Hello_Android" 애플리케이션을 선택한다.

    • 오른쪽 마우스를 눌른 후 "Run As -> Android Application"을 선택 한다.

    • 애뮬레이터에서 애플리케이션이 실행되어 "Hello Android!"가 25px 폰트 사이즈로 화면에 표시되는 것을 확인할 수 있다.

      • 애뮬레이터의 처음 실행헤 시간이 조금 걸리므로 끊기 있게 기다리자.

      • 처음 이후의 실행은 애뮬레이터가 떠 있는 상태이므로 빨리 결과를 확인할 수 있다.
        애뮬레이터 화면

 

안드로이드 커뮤니티


Google 커뮤니티

{| cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" 
|- | width="30%" align="center" style="background-color:#eee;" |Google 모바일 
| width="70%" |

 

안드로이드 커뮤니티

{| cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" 
|- | width="30%" align="center" style="background-color:#eee;" |Korea Android 
| width="70%" |

  • 안드로이드 기술 커뮤니티

  • 한글 안드로이드 개발자 가이드
    align="center" style="background-color:#eee;"
  • 구글 안드로이드폰 사용자와 개발자 커뮤니티
    align="center" style="background-color:#eee;"
  • 구글 안드로이드 강좌 개발
    align="center" style="background-color:#eee;"
  • 열심히 공부해서 우리모두 최고의 안드로이드 개발자가 됩시다. 웃쌰 . 웃쌰 .
    align="center" style="background-color:#eee;"
  • 안드로이드폰 사용자와 개발자 커뮤니티
    align="center" style="background-color:#eee;"
    -
    align="center" style="background-color:#eee;"
  • Android Market for your phone
    |}

  • 안드로이드 기반 오픈 소스 프로젝트 및 참고 사이트 모음, 2010.1

 
 

스마트폰 커뮤니티

{| cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" 
|- | width="30%" align="center" style="background-color:#eee;" |재미있는 재임스 
| width="70%" |

  • Social Interface Design
    align="center" style="background-color:#eee;"
    -
    align="center" style="background-color:#eee;"
    -
    align="center" style="background-color:#eee;"
    -
    align="center" style="background-color:#eee;"
    }
 

RESTfull


 
 

옴드로이드


T옴니아2의 SD Card(2GB 이상)에 옴드로이드를 설치해 보자.

  • 설치 파일을 PC로 다운로드 합니다.

     
  • T옴니아2의 T Store에서 파일 탐색기를 선택하여 설치 합니다.

    • 저는 "씨쉘프리"를 설치 하였습니다.

    • 기존에 파일 탐색기를 가지고 계신분은 이 단계를 생략해도 됩니다.

     
  • 메인 메뉴 -> 단말설정 -> 시스템 -> 전원 관리 및 CPU성능 -> CPU 성능

    • "고속"으로 설정 합니다.

     
  • T옴니아2와 컴퓨터를 USB로 연결 합니다.

  • 메인 메뉴 -> 단말설정 -> 연결설정 -> USB 연결 -> 이동식 저장소

    • "My Storage"를 선택 합니다.

    • "My Storage"의 최상위 폴더에 다운로드 받은 파일을 복사 합니다.

    • 이동식 저장소를 해제 합니다.

     
  • 메인 메뉴 -> 단말설정 -> 연결설정 -> USB 연결 -> 이동식 저장소

    • "Storage Card"를 선택 합니다.

    • 디스크를 포맷 합니다.

      • 마우스 오른쪽버튼>포맷>기본값복원(빠른 포맷에 체크하시고)>포맷

    • 이동식 저장소를 해제 합니다.

     
  • 메인 메뉴 -> 단말설정 -> 메모리 관리 -> Storage Card (외장메모리) -> 포맷

  • 파일 탐색기(씨쉘프리)에서 TRE 폴더의 TRE.EXE를 실행 합니다.

    • File -> Import Registry에서 REG.REG를 선택 합니다.

    • 옴니아2 리부팅

     
  • 파일 탐색기(씨쉘프리)에서 My Storage/O2Beta-1G/HARET.EXE 실행

    • 실행후 어떤 버튼을 누르시거나 터치를 하셔도 안됩니다

    • "run"을 누름

    • 자동으로 재부팅이 됩니다.

    • 이제 옴드로이드의 설치가 완료 되었습니다.

 
 

SD Card에 옴드로이드가 설치 되었으므로 처음 T옴니아2를 실행하면 Windows 화면이 표시 됩니다. 옴드로이드를 사용하기 위해서는 아래 명령을 실행 하세요.

 
 

안드로이드 오류 처리


 
 

참고 문헌


최종 수정일: 2024-09-30 12:26:18

이전글 :
다음글 :