Skip to content

Android

Android Packages (list)

안드로이드(Android)는 휴대 전화를 비롯한 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램(웹 브라우저, 이메일 클라이언트, 단문 메시지 서비스(SMS), 멀티미디어 메시지 서비스(MMS)등)을 포함하고 있는 소프트웨어 스택이자 모바일 운영 체제이다. 안드로이드는 개발자들이 java 언어로 응용 프로그램을 작성할 수 있게 하였으며, 컴파일된 바이트코드를 구동할 수 있는 런타임 라이브러리를 제공한다. 또한 안드로이드 소프트웨어 개발 키트(SDK: Software Development Kit)를 통해 응용 프로그램을 개발하기 위해 필요한 각종 도구들과 응용 프로그램 프로그래밍 인터페이스(API)를 제공한다.

안드로이드는 리눅스 커널 위에서 동작하며, 다양한 안드로이드 시스템 구성 요소에서 사용되는 C/C++ 라이브러리들을 포함하고 있다. 안드로이드는 기존의 자바 가상 머신과는 다른 가상 머신인 달빅 가상 머신을 통해 java로 작성된 응용 프로그램을 별도의 프로세스에서 실행하는 구조로 되어 있다.

2005년에 안드로이드 사를 구글에서 인수한 후 2007년 11월에 안드로이드 플랫폼을 휴대용 장치 운영 체제로서 무료 공개한다고 발표한 후 48개의 하드웨어, 소프트웨어, 통신 회사가 모여 만든 오픈 핸드셋 얼라이언스(Open Handset Aliance,OHA)에서 공개 표준을 위해 개발하고 있다. 구글은 안드로이드의 모든 소스 코드를 오픈 소스 라이선스인 아파치 v2 라이선스로 배포하고 있어 기업이나 사용자는 각자 안드로이드 프로그램을 독자적으로 개발을 해서 탑재할 수 있다. 또한 응용 프로그램을 사고 팔 수 있는 구글 플레이를 제공하고 있으며, 이와 동시에 각 제조사 혹은 통신사별 응용 프로그램 마켓이 함께 운영되고 있다. 마켓에서는 유료 및 무료 응용 프로그램이 제공되고 있다.

Version Information

버전

코드 네임

발표일

API Level

점유율 (2014년 1월 8일)

4.4.x

킷캣

2013년 10월 31일

19

1.4%

4.3.x

젤리빈

2013년 07월 24일

18

7.8%

4.2.x

젤리빈

2012년 11월 13일

17

15.4%

4.1.x

젤리빈

2012년 07월 09일

16

35.9%

4.0.3 ~ 4.0.4

아이스크림 샌드위치

2011년 12월 16일

15

16.9%

3.2

허니콤

2011년 07월 15일

13

0.1%

2.3.1 ~ 2.3.7

진저브레드

2011년 02월 09일

10

21.2%

2.2

프로요

2010년 05월 20일

8

1.3%

개발자 옵션 활성화 방법

참조: http://chobbang.com/85
젤리빈 4.2부터 개발자 옵션을 활성화하지 않으면 보이지 않는다. 활성화 방법은 아래와 같다.

  • Nexus7: 어플리케이션 > 설정 > 태블릿 정보 > 빌드번호
  • 일반 안드로이드 핸드폰: 어플리케이션 > 설정 > 휴대전화 정보 > 빌드번호

빌드번호 박스를 3회 클릭하면 토스트(Toast)박스로 개발자 옵션 활성화 여부가 나타난다.

드라이버 설치 방법

Android 드라이버 설치 방법에 대하여 설명한다.

MTP 모드

요즘 안드로이드 폰들은 PC에 USB를 연결했을 경우, MTP 모드를 이용해서 연결이 됩니다.
이 MTP 모드는 "미디어 전송 프로토콜(Media Transfer Protocol)"의 약자입니다.

그래서 그런지 윈도우즈7이나 윈도우즈8 등에서는 최신 미디어 플레이어가 설치되어 있어서 별도의 드라이버 설치 없이 MTP 모드를 사용할 수 있지만, 윈도우 XP의 경우는 미디어 플레이어를 버전 11 이상으로 설치를 해야 MTP 모드를 사용할 수 있습니다.

ADB 드라이버

Nexus 시리즈의 경우, Android SDK 설치 후 SDK폴더의 /extras/google/usb_driver를 확인하면 된다. 만약 이 디렉터리를 사용하여 드라이버가 설치되지 않는다면 컴퓨터의 장치 드라이버 목록에서 직접 선택을 사용하여 Android Composite ADB Interface를 선택하면 된다.

루팅(Rooting) 방법

Android System architecture

Android-system-architecture.jpg

The following diagram shows the major components of the Android operating system. Each section is described in more detail below.

리눅스 커널 (Linux Kernel)
안드로이드는 내부 메모리 관리, 프로세스 관리, 네트워킹, 운영체제 시스템 서비스 등에 리눅스를 사용합니다.
라이브러리 (Libraries)
커널 바로 위 계층에는 안드로이드 내장 라이브러리가 있습니다. 이 라이브러리는 모두 C또는 C++로 쓰여 있고, 특정 하드웨어를 위해 컴파일 되어 디바이스에 미리 설치됩니다. 라이브러리의 기능들은 상위 어플리케이션 프레임워크를 통해 개발자에게 제공되며, 중요 라이브러리는 아래와 같다.
  • Serface manager: Surface들을 결합시켜주는 역할을 하는 라이브러리. Surface는 하나의 화면이라고 이해하면 되고, 여러 프로그램 화면을 결합하여, 반투명 창과 화려한 전환 등의 다양하고 흥미로운 그래픽 효과를 제공.
  • Media Framework: 동영상 재생과 오디오 녹음 및 재생을 위한 미디어 코덱 지원.
  • SQLite: 경량의 데이터베이스 엔진.
  • WebKit: HTML 컨텐츠를 신속하게 디스플레이하기 위한 브라우저 엔진.
안드로이드는 Java기반 이므로 C/C++로 작성된 프로그램을 이용하기 위해 JNI(Java Native Interface)를 사용
안드로이드 런타임 (Android Runtime)
달빅(Dalvik) VM(Virtual Machine)과 코어 자바 라이브러리가 포함되는 레이어 입니다. 달빅은 모바일 디바이스용으로 최적화해 구현된 구글의 자바격인데, 전형적인 자바에 대비해 다음과 같은 차이점이 있습니다. 달빅 VM은 .dex 파일을 실행시키는데, 이 파일은 표준 .class와 .jar 파일이 컴파일 시점에 변환된 것입니다. 이 파일은 클래스 파일보다 작고 효율성이 높기 때문에 적은 메모리와 베터리로 작동하는 환경에 적합합니다. 코어 자바 라이브러리는 자바 스텐더드 에디션(Java SE) 라이브러리와 자바 모바일 에디션(Java ME)라이브러리와는 다르지만 중복되는 부분이 상당히 있습니다.
어플리케이션 프레임워크 (Application Framework)
어플리케이션을 만들 때 사용될 빌딩 블록(Building Block)을 제공합니다. 응용 프로그램들의 하위 커널이나 시스템 라이브러리를 직접 호출할 수 없으며, 이 레이어를 통해서 기능을 요청 합니다. 프레임워크의 중요 부분은 액티비티 매니저(Activity manager), 컨텐츠 제공자(Content provider), 리소스 매니저(Resource manager), 알림 매니저(Notification manager)가 있다. 자세한 내용은 #Android Application Component을 참조.
어플리케이션 (Application)
안드로이드 아키텍처의 최상위 계층이며, 눈에 보이는 프로그램. Java 프로그래밍 언어로 열심히 만들어진. 만들어야 될 프로그램이 위치합니다.

Android Application Component

안드로이드 어플리케이션을 구성하는 기본 네 가지 컴포넌트에 대하여 서술한다.

액티비티 (Activity)
비주얼 UI이다. 한 어플리케이션은 하나 이상의 액티비티(activity)가 존재하며, 결합된 UI를 위해 함께 동작하지만, 각각의 액티비티(activity)는 독립적이다.
각 액티비티(activity)는 그리기(draw)가 가능한 하나의 디폴트 윈도우가 부여되며, 추가 윈도우를 사용할 수도 있다.
서비스 (Service)
UI없이, 백그라운드(background)로 실행된다. (음악재생이나 데이터를 처리 등) 예를들어 음악플레이어는 음악을 선택/재생/되감기/다음곡 등의 작업을 할 수 있는 하나 이상의 액티비티(activity)가 있지만, 사용자가 플레이어 화면을 벗어나도 음악재생이 계속 되도록 음악재생은 액티비티(activity)에 의해 제어되면 안되며, 액티비티(activity)는 하나의 서비스(service)를 시작해야 된다.
또한 실행되고 있는 서비스(service)에 접속하는 것이 가능하며, 음악플레이어의 경우 이 인터페이스를 통해 사용자는 재생 중에도 음악을 멈추거나/재생하거나/다음곡으로 넘어가는 일이 가능하다.
브로드캐스트 리시버 (Broadcast receiver)
어플리케이션은 브로드캐스트(배터리 부족, 시간대변경, 언어 변경 등) 공지를 수신하고, 필요 시 응답할 수 있도록 임의의 수의 브로드캐스트 리시버를 가진다.
컨텐트 제공자 (Content provider)
어플리케이션에서 어떤 정보를 가져오고자 행위의 중심이다. 주소록, 미디어, 북마크, 콜로그 등 디바이스에 저장되어 있는 다양한 데이타를 외부 어플리케이션이 가져가거나 업데이트 할 수 있는 방법을 노출시켜준다. Content Provider 를 사용하거나 직접 구현한다.
개발 시 URI를 이용하여 어떠한 Content Provider 를 사용할지 지정하고, SQL 문을 이용하여 쿼리를 전송 하고, Cursor 를 이용하여 그 결과를 탐색한다. Content Provider 는 만들기 쉽고 사용하기 쉬우며, 자신들이 수행하기로 한 일을 수행하고 그 나머지는 신경 쓰지 않는다.

Android SDK 설치

Android API Guides

Basic

UI

Resource

Device

ETC

Native

Design

  • Animation
  • Style
    • Color
    • Icons
    • Imagery
    • Typography
    • Writing
  • Layout
  • Components
  • Patterns
  • Usability
  • Resources
  • E.T.C



Application Components



Administration

User Interface



Animation & Graphics

Data Storage



Application Resources

Text & Input

  • Copy and Paste.
  • Creating an IME
    • Copy and Paste.
    • Creating an IME.
    • Android Soft Keyboard.
    • Spelling Checker.
  • Spelling Checker.



Guide Connectivity



Location & Sensors



Media & Camera

Best Practices



Google Services



Web Applications

  • Targeting Screens from Web Apps.
  • Building Web Apps in WebView.
  • Debugging Web Apps.
  • Best Practices for Web Apps.



Computation



Troubleshooting

Native Developer



AOSP

Other topics

Java topics

Commandline Tools

Emulators

  • Genymotion
  • Andro VM
  • Anbox
  • Android-x86
  • Shashlik
  • ARChon
  • Andy OS
  • BlissOS

Gradle Build

Examples

Design

Tutorials

Libraries

Android:ViewPager

Testing

Multimedia

Scripting

Favorite

Device

  • Nexus7
  • Nexus 5X
  • Samsung S20 Ultra

Tools

Documentations

131014 Android Design Guideline
내가 Zekitalk에 근무했을 때 만들었던 안드로이드 디자인 가이드 워드 파일
131014-Android_Design_Guideline.zip

See also

Favorite site

Tutorials

Tools

Guide

역공학 (Reverse engineering) 관련

앱 배포 관련

References


  1. How_to_root_or_update_a_Nexus_Android_using_only_open_source_tools_-_Aaron_Horler.pdf 

  2. android-ui-utils 

  3. AndroidDesignPreview-0.3.2.tar.gz 

  4. Github: AndroidAssetStudio 

  5. DPI_Calculator-PPI_Calculator_html.zip 

  6. Pro_Android_Cpp_with_the_NDK.pdf 

  7. Wikiware-textcube.blogspot_-_Android_Application_Basic.pdf 

  8. Android_Design_Downloads_20131106.zip 

  9. Consideration-of-android-performance.pdf 

  10. Android_sdk_connect_source.pdf