- 안드로이드 개요
- 안드로이드 역사
- OHA - Open Handset Alliance
- 안드로이드 마켓 플레이스
- 안드로이드의 타겟 시장
- 스마트폰의 장치 및 기능
- 스마트폰 장치
- Smartphone UX
- Push Notification Service
- Android 개발 환경
- 사전 준비 사항
- Android 개발 환경 설정
- 안드로이드 애뮬레이터
- 안드로이드 애뮬레이터 폴더 구조
- 안드로이드 애뮬레이터 오류 조치
- apk Decompile
- Android update
- ART
- Multi Device 지원
- Android SDK
- Android UI
- Android 입출력
- Honeycomb
- Android L
- Hello Android
- 안드로이드 커뮤니티
- Google 커뮤니티
- 안드로이드 커뮤니티
- 스마트폰 커뮤니티
- RESTfull
- 옴드로이드
- 안드로이드 오류 처리
- 참고 문헌
오픈소스 모바일 플랫폼인 안드로이드(Android)를 정리 한다.
홈페이지 : http://www.android.com/
Android Developers : http://developer.android.com/
Android Source : http://source.android.com/, http://android.git.kernel.org/
안드로이드 마켓 : http://market.android.com/publish/Home
라이선스
Linux 커널 : GNU GPL
안드로이드 플랫폼 : Apache 2.0
플랫폼 : Android 모바일 Platform
Android Market, [http://market.android.com/ 안드로이드 마켓플레이스]
안드로이드 개요
안드로이드(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
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
Froyo(SDK 2.2)부터 Push Service 지원, google에 서버의 Register ID를 등록을 해야 함
푸쉬 처리를 해주는 Agent가 대표 서버에 붙어있는 방식
Google Push (Android)
MQTT Push (Android et.al.)
동기화 : Exchange ActiveSync, IMAP4, POP3 지원
iPhone's APNS
Apple Push Notifications
SMS를 활용한 Push Service
장점: 밧데리의 소모가 없다.
WAP 1.2 부터 Push 기능이 나오기 시작했는데 이때는 MMS(SMS) 방식에 헤더에 identifier 를 넣어서 구분 했다. 즉 문자 전송방식에 일정한 구분자를 넣고, 내용이나 링크를 넣어서 보내는 방식으로 이러한 방식은 통신사와 제휴하지 않으면 구현이 쉽지 않다.
참고 문헌
Android 개발 환경
사전 준비 사항
[Java](JDK.md#설치 가이드.md) 1.5 이상 설치
[Eclipse](Eclipse.md#Eclipse 설치.md) 3.5 이상 설치
Android 개발 환경 설정
Android Plugin 설치
이클립스에서 "Help -> Install New Software..." 메뉴를 선택 한다.
"Add" 버튼을 선택 한 후 다음과 같이 등록 한다.
Name : Android
Location : http://dl-ssl.google.com/android/eclipse/
"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에서 한글 계정으로 로그인한 경우 제대로 동작하지 않을 수 있다. 사실 한글 계정은 여러곳에서 문제가 된다.
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
한글 키보드 설치
http://www.androidpub.com/keyboard 에서 최신의 hangulkeyboard.apk 다운로드
Android의 Tools 폴더에서 adb install hangulkeyboard.apk 명령 실행
~.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
라이브러리 다운로드
AndroidSDK : Android SDK Location - C:/appl/androidSDK
Jad Decompiler : jad 명령어를 사용할 수 있도록 path에 등록 한다.
dexdump.zip의 압축을 풀어 C:/appl/androidSDK/tools/ 폴더에 복사 한다.
[http://www.illegalaccess.org/undx/versions/0.15/undx.jar undx.jar], UNDX
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 UI
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~
안드로이드 개발자 랩
참고 문헌
Android L
Android L의 특징
머티리얼 디자인 적용 : 종이와 잉크를 메타포로하여 입체적인 디자인을 추구
OpenGL ES 3.1
WebRTC : P2P
WebGL : 3D 그래픽
웹 오디오
매니지드 프로비저닝
안드로이드L 애뮬레이터 다운로드 사이트
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!"를 입력 한다.
수정한 애플리케이션을 애뮬레이터를 통해 실행 한다.
"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%" |
Google의 모바일 사이트 align="center" style="background-color:#eee;" 안드로이드 개발자 사이트
Android Development Tools (ADT) plugin for Eclipse align="center" style="background-color:#eee;" Android용 Google 프로젝트 align="center" style="background-color:#eee;" - align="center" style="background-color:#eee;" - align="center" style="background-color:#eee;" }
안드로이드 커뮤니티
{| 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
|}
스마트폰 커뮤니티
{| 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
[Google App Engine에서 RESTfull](Google App Engine - Java 개발 환경 설정.md#RESTfull.md)
참고 문헌
옴드로이드
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
-
appcelerator의 Titanium : 다양한 모바일 환경을 지원하는 플랫폼
-
커니의 안드로이드 이야기 : 안드로이드와 관련된 사항이 잘 분류되어 정리되어 있습니다.
Android Decompile
참고 파일
[Design pattern](Design pattern.md)
UI Guide : http://developer.android.com/guide/topics/ui/actionbar.html [[Category:Android|Category:Android]]
[[Category:오픈소스|Category:오픈소스]]
분류: Google