안드로이드 소프트웨어 개발

섬네일|안드로이드 스택''''''
[섬네일|개발자 친화적인 기기 라인인 [구글 넥서스 시리즈의 일부인 넥서스 4]]

**안드로이드 소프트웨어 개발**은 안드로이드 모바일 운영 체제를 실행하는 기기용 애플리케이션을 개발하는 과정이다. 구글은 "안드로이드 앱은 코틀린, 자바, C++ 언어를 사용하여 안드로이드 SDK로 작성할 수 있으며 다른 언어를 사용하는 것도 가능하다"고 밝힌다. JVM 언어가 아닌 모든 언어(예: Go, 자바스크립트, C, C++ 또는 어셈블리어)는 도구로 제공될 수 있는 JVM 언어 코드의 도움이 필요하며, 이는 API 지원이 제한적일 수 있다. 일부 프로그래밍 언어와 도구는 크로스 플랫폼 앱 지원(즉, 안드로이드 및 iOS 모두)을 허용한다. 2008년 초기 SDK가 출시된 이후 타사 도구, 개발 환경 및 언어 지원 또한 계속해서 발전하고 확장되었다. 최종 사용자에게 안드로이드 앱을 배포하는 공식적인 메커니즘은 구글 플레이이다. 이는 또한 앱의 단계별 점진적 출시뿐만 아니라 테스터에게 사전 출시 앱 버전을 배포하는 것도 허용한다.

## 공식 개발 도구
안드로이드 SDK에는 포괄적인 개발 도구 세트가 포함되어 있다. 안드로이드 SDK 플랫폼 도구는 전체 SDK의 별도로 다운로드 가능한 하위 집합으로, `adb` 및 `fastboot`와 같은 명령줄 도구로 구성된다. ADB는 연결된 안드로이드 기기에서 명령을 실행하는 도구이다. Fastboot은 프로토콜로, 파일 시스템을 플래시하는 데 사용된다. C/C++로 작성된 코드는 안드로이드 네이티브 개발 키트(NDK)를 사용하여 ARM 또는 X86 네이티브 코드(또는 64비트 변형)로 컴파일할 수 있다.

### 안드로이드 오픈 액세서리 개발 키트
안드로이드 3.1 플랫폼(안드로이드 2.3.4로도 백포트됨)은 안드로이드 오픈 액세서리 지원을 도입하여 외부 USB 하드웨어(안드로이드 USB 액세서리)가 특수 "액세서리" 모드에서 안드로이드 기반 기기와 상호 작용할 수 있도록 한다. 안드로이드 기반 기기가 액세서리 모드에 있을 때, 연결된 액세서리는 USB 호스트 역할을 하고(버스를 전원 공급하고 기기를 열거함) 안드로이드 기반 기기는 USB 기기 역할을 한다. 안드로이드 USB 액세서리는 안드로이드 기반 기기에 연결되도록 특별히 설계되었으며 액세서리 모드를 지원하는 안드로이드 기반 기기를 감지할 수 있는 간단한 프로토콜(안드로이드 액세서리 프로토콜)을 준수한다.

## 외부 하드웨어 개발
안드로이드 기기가 외부 전자 기기와 상호 작용하도록 돕는 개발 도구에는 IOIO, Android Open Accessory Development Kit, Microbridge, Triggertrap 등이 있다.

## 안드로이드 에뮬레이터 및 서브시스템
* 블루스택
* 제니모션
* 립드로이드
* MIT 앱 인벤터
* 안드로이드 스튜디오
* 안드로이드-x86
* 윈도우 서브시스템 포 안드로이드
* Waydroid

## 안드로이드 개발자 챌린지

안드로이드 개발자 챌린지는 안드로이드를 위한 가장 혁신적인 애플리케이션을 찾기 위한 경쟁이었다. 구글은 ADC I과 ADC II에 걸쳐 총 천만 미국 달러의 상금을 제공했다. ADC I은 2008년 1월 2일부터 4월 14일까지 제출을 받았다. 2008년 5월 12일에 발표된 가장 유망한 50개 출품작은 각각 25,000달러를 받아 추가 개발에 사용되었다. 이 대회는 9월 초에 각각 275,000달러를 받은 10개 팀과 100,000달러를 받은 10개 팀의 발표로 마무리되었다.

ADC II는 2009년 5월 27일에 발표되었다. ADC II의 첫 라운드는 2009년 10월 6일에 마감되었다. 상위 200개 애플리케이션으로 구성된 ADC II의 첫 라운드 우승자는 2009년 11월 5일에 발표되었다. 두 번째 라운드의 투표도 같은 날 시작되어 11월 25일에 마감되었다. 구글은 11월 30일에 ADC II의 최종 우승자를 발표했으며, 스위트드림스(SweetDreams), 왓 더 두들!?(What the Doodle!?) 및 웨이브시큐어(WaveSecure)가 전체 챌린지의 우승자로 선정되었다.

## 커뮤니티 기반 배포판

오픈 소스 애호가들로 구성된 커뮤니티가 있으며, 이들은 FLAC 무손실 오디오 지원 및 다운로드한 애플리케이션을 마이크로SD 카드에 저장할 수 있는 기능과 같은 여러 사용자 정의 및 추가 기능을 갖춘 안드로이드 기반 배포판(즉, 펌웨어)을 만들고 공유한다. 이는 일반적으로 기기를 루팅하는 것을 포함한다. 루팅은 사용자에게 운영 체제에 대한 루트 접근 권한을 부여하여 휴대폰을 완벽하게 제어할 수 있게 한다. 루팅은 또한 해킹 위험 증가, 벽돌 현상 가능성 높음, 보증 상실, 바이러스 공격 위험 증가 등 여러 단점도 있다. 맞춤형 펌웨어를 설치하는 것도 가능하지만, 기기의 부트로더도 잠금 해제되어야 한다. 맞춤형 펌웨어는 구형 휴대폰 사용자도 최신 버전에서만 사용할 수 있는 애플리케이션을 사용할 수 있도록 한다.

이러한 펌웨어 패키지는 자주 업데이트되며, 통신사에서 승인한 펌웨어에는 아직 공식적으로 출시되지 않은 안드로이드 기능 요소가 포함되어 있으며, 제한이 적은 경향이 있다. 시아노젠모드와 OMFGB가 이러한 펌웨어의 예이다.

2009년 9월 24일, 구글은 모드 개발자 시아노젠에게 맞춤형 펌웨어 내에서 구글의 비공개 소스 애플리케이션을 재배포하는 문제에 대한 중지 및 포기 서한을 보냈다. 대부분의 안드로이드 OS는 오픈 소스이지만, 휴대폰에는 구글 플레이 및 GPS 내비게이션과 같은 기능을 위한 비공개 소스 구글 애플리케이션이 번들로 제공된다. 구글은 이러한 애플리케이션은 승인된 배포 채널을 통해서만 라이선스 있는 배포자가 제공할 수 있다고 주장했다. 시아노젠은 구글의 라이선스를 준수하고 독점 소프트웨어 없이 모드를 계속 배포했다. 모드 설치 과정에서 라이선스 있는 구글 애플리케이션을 백업하고 과정 완료 시 복원하는 방법을 제공했다.

## 자바 표준

개발의 장애물 중 하나는 안드로이드가 확립된 자바 표준, 즉 Java SE 및 ME를 사용하지 않는다는 점이다. 이는 해당 플랫폼용으로 작성된 자바 애플리케이션과 안드로이드 플랫폼용으로 작성된 애플리케이션 간의 호환성을 방해한다. 안드로이드는 자바 언어 구문과 의미론을 재사용하지만, Java SE 또는 ME에 번들로 제공되는 전체 클래스 라이브러리 및 API를 제공하지 않는다. 그러나 Myriad Group 및 UpOnTek과 같은 회사에서 자바 ME를 안드로이드로 변환하는 서비스를 제공하는 여러 도구가 시장에 나와 있다.

안드로이드는 자체 GUI 클래스를 제공하며, 자바 AWT, 스윙 또는 JavaFX는 제공하지 않는다. 전체 자바 빈즈 API도 지원하지 않는다.

## 역사와 시장 점유율
안드로이드는 구글이 주도하는 오픈 핸드셋 얼라이언스가 만들었다. 안드로이드 플랫폼용 애플리케이션 개발에 대한 초기 피드백은 엇갈렸다. 언급된 문제점으로는 버그, 문서 부족, 부적절한 QA 인프라, 공개 문제 추적 시스템 부재 등이 있었다. (구글은 2008년 1월 18일에 문제 추적기를 발표했다.) 2007년 12월, MergeLab 모바일 스타트업 설립자 애덤 맥베스는 "기능이 없거나, 문서화가 부실하거나, 아예 작동하지 않는다… 분명히 아직 시판될 준비가 되지 않았다"고 말했다. 그럼에도 불구하고, 플랫폼이 발표된 지 일주일 만에 안드로이드 대상 애플리케이션이 등장하기 시작했다. 최초로 공개된 애플리케이션은 스네이크 게임이었다.

안드로이드 SDK의 미리보기 버전은 2007년 11월 12일에 출시되었다. 2008년 7월 15일, 안드로이드 개발자 챌린지 팀은 안드로이드 개발자 챌린지 참가자 전원에게 새로운 SDK 버전이 "비공개" 다운로드 영역에서 사용 가능하다고 실수로 이메일을 보냈다. 이 이메일은 안드로이드 개발자 챌린지의 첫 라운드 우승자들을 위한 것이었다. 구글이 일부 개발자에게는 새로운 SDK 버전을 제공하고 다른 개발자에게는 제공하지 않으며(이러한 방침을 비공개로 유지함) 있다는 사실이 드러나면서 당시 안드로이드 개발자 커뮤니티 내에서 널리 보도된 불만이 발생했다.

2008년 8월 18일, 안드로이드 0.9 SDK 베타가 출시되었다. 이 버전은 업데이트되고 확장된 API, 향상된 개발 도구 및 홈 화면의 업데이트된 디자인을 제공했다. 이전 버전을 사용하던 개발자들을 위한 상세 업그레이드 지침이 제공된다. 2008년 9월 23일, 안드로이드 1.0 SDK(릴리스 1)가 출시되었다. 릴리스 노트에 따르면 "주로 버그 수정이 이루어졌으며, 일부 작은 기능도 추가되었다." 또한 0.9 버전에서 여러 API 변경 사항이 포함되었다. 개발 이후 여러 버전이 출시되었다.

2008년 12월 5일, 구글은 고급 개발자를 위해 설계된 SIM 잠금 해제 및 하드웨어 잠금 해제 기기인 최초의 안드로이드 개발 폰을 발표했다. 이는 HTC의 드림 폰의 수정 버전이었다. 개발자는 일반 소비자 기기를 사용하여 애플리케이션을 테스트하고 사용할 수 있지만, 일부 개발자는 전용 잠금 해제 또는 무계약 기기를 선택할 수 있다.

 현재 안드로이드용으로 100만 개 이상의 애플리케이션이 개발되었으며, 250억 회 이상의 다운로드를 기록했다. 2011년 6월 연구에 따르면, 발표 당시 모바일 개발자의 67% 이상이 이 플랫폼을 사용했다. 안드로이드 스마트폰 출하량은 2018년에 12억 대를 넘어 시장 점유율 85%를 기록할 것으로 예측되었다.

## 같이 보기

* 안드로이드 스튜디오
* 자유-오픈 소스 안드로이드 애플리케이션 목록
* 루팅 (안드로이드)

## 각주

## 참고 문헌

* 
* 
* 
* 
* 
* 
* 

분류:안드로이드 (운영체제)

분류:임베디드 리눅스
분류:자유 모바일 소프트웨어
분류:모바일 리눅스
분류:안드로이드 소프트웨어
분류:소프트웨어 개발 공동체