Android

오픈소스 비즈니스 컨설팅
이동: 둘러보기, 검색

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

  • Linux 커널 : GNU GPL
  • 안드로이드 플랫폼 : Apache 2.0

안드로이드 개요

안드로이드(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

  • 휴대전화 제조, 서비스, 칩 제조 등 전세계 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
  • 스마트폰용 센서
자이로 센서
  • 자이로스코프(gyroscope), gyro
  • 회전 관성을 감지하는 센서, 회전각을 감지
가속도 센서
  • 중력 센서, G-Sensor, Accelation
  • 가속도를 감지하는 센서, 외부의 충격량과 방향을 감지
  • 기울기(Tilt) 센서의 기능도 있음
기울기 센서
  • Tilt
  • 기울기를 감지
GPS
  • 위치 기반 서비스
나침반 센서
  • 전자 나침반, 디지털 나침반
근접 센서
  • Proximity sensor
조도 센서
  • 주변 광센서
컴파스

Smartphone UX

  • GPS (Global Positioning System)
  • Augmented Reality
  • Touch Screen Technology
  • 리모콘 : TV 리모콘, 자동차 시동 장치
  • Network
  • VOIP
  • 모바일 인터넷
  • 스마트폰 <-> 노트북
  • M2M
  • OCR (문자 인식)
  • 바코드
  • 음악 검색
  • 형상 검색
  • 음성 검색
  • 참고 문헌

Push Notification Service

Push <-> Polling

  • Push framework
  • MIDP 2.0, Push Registry/WMA
  • OMA WAP Push
  • RIM: Hosted Data Push Service
  • Android's C2DM
  • 푸쉬 처리를 해주는 Agent가 대표 서버에 붙어있는 방식
  • C2DM(Cloud to Device Messaging)
  • Google Push (Android)
  • MQTT Push (Android et.al.)
  • 동기화 : Exchange ActiveSync, IMAP4, POP3 지원
  • iPhone's APNS
  • SMS를 활용한 Push Service
  • 장점: 밧데리의 소모가 없다.
  • WAP 1.2 부터 Push 기능이 나오기 시작했는데 이때는 MMS(SMS) 방식에 헤더에 identifier 를 넣어서 구분 했다. 즉 문자 전송방식에 일정한 구분자를 넣고, 내용이나 링크를 넣어서 보내는 방식으로 이러한 방식은 통신사와 제휴하지 않으면 구현이 쉽지 않다.
  • 참고 문헌

Android 개발 환경

사전 준비 사항

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
  • 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 [-d 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 <command>' 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

  • 라이브러리 다운로드
  • dexdump.zip의 압축을 풀어 C:/appl/androidSDK/tools/ 폴더에 복사 한다.
  • 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 지원

Android SDK

Android SDK

Android UI

Android - UI

Android 입출력

Android - 입출력

Honeycomb

  • 화면 구조
  • Action Bar <- Option Menu
  • Notification
  • Fragment <- Activity를 사용하여 Layout 구성
  • System Bar
  • setSystemUiVisibility(View.STATUS_BAR_HIDDEN);
  • setSystemUiVisibility(View.STATUS_BAR_VISIBLE);
  • TelephonyManager.getDeviceId()
  • WifiInfo.getMacAddress()
  • Settings.Secure.ANDROID~
  • 안드로이드 개발자 랩
  • 참고 문헌
https://sites.google.com/site/iobootcamphclab/


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 커뮤니티

Google 모바일
  • Google의 모바일 사이트
Android Developers
Google Code : Android
  • Android용 Google 프로젝트

안드로이드 커뮤니티

Korea Android
안드로이드펍
  • 구글 안드로이드폰 사용자와 개발자 커뮤니티
Android Side
  • 구글 안드로이드 강좌 개발
mSurf Lab 안드로이드 개발 정보방
  • 열심히 공부해서 우리모두 최고의 안드로이드 개발자가 됩시다. 웃쌰 . 웃쌰 .
안드로이드 클럽
  • 안드로이드폰 사용자와 개발자 커뮤니티
AndroLib
  • Android Market for your phone

스마트폰 커뮤니티

재미있는 재임스
  • Social Interface Design


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 화면이 표시 됩니다. 옴드로이드를 사용하기 위해서는 아래 명령을 실행 하세요.

  • 파일 탐색기(씨쉘프리)에서 My Storage/HARET.EXE 실행
  • 실행후 어떤 버튼을 누르시거나 터치를 하셔도 안됩니다
  • 참고 문헌

안드로이드 오류 처리

  • "Error generating final archive: Debug certificate expired on ~" 오류 처리

참고 문헌

  • Google's App Inventor
  • Android Decompile
  • 참고 파일