안드로이드 구조
- 응용프로그램
- 안드로이드 스마트폰에서 사용할 수 있는 일반적인 응용 프로그램
- 웹 브라우저, 달력, 구글맵, 연락처, 게임 등 사용자 입장에서 가장 많이 사용함
- Java로 작성됨
- 응용프로그램 프레임워크
- 안드로이드 API가 존재하는 곳
- 안드로이드폰 하드웨어에 접근할 때 API를 통해서만 가능함
- 안드로이드 런타임
- Java 코어 라이브러리와 달빅 가상 머신 (Dalvik Virtual Machine) 또는 아트 런타임(ART Runtime)으로 구성
- 안드로이드는 Java 문법으로 프로그래밍하지만 Java 가상 머신을 사용하지 않고 이곳의 달빅 가상 머신이나 아트런타임을 사용함
- 라이브러리
- 안드로이드에서 사용되는 여러 시스템 라이브러리는 시스템 접근 때문에 Java가 아닌 C로 작성 성능이 뛰어나며 세밀한 조작 가능함
- 리눅스커널
- 하드웨어의 운영과 관련된 저수준의 관리 기능이 들어있음
- 메모리 관리, 디바이스 드라이버, 보안 등 많은 스마트폰 장치를 지원함
- 카메라, 터치스크린, GPS, 자이로스코프 등
안드로이드 개발 환경 및 설치 순서
- SDK - Software Development Kit, 일반 응용 프로그램 개발, Java, 초/중급
- NDK - Native Development Kit, 고수준의 응용 프로그램 개발, C/C++, 중/고급
- PDK - Platform Development Kit, 하드웨어 수준의 강력한 프로그램 개발, C/C++, 고급
- 인텔 HAXM 설치
- Android Studio 다운로드
- Android Studio 설치
- Android Studio 환경설정
- Android Studio SDK 업데이트
- Android Virtual Device(AVD) 만들기
안드로이드 앱 개발 절차
개발환경설정 → 프로젝트생성 → 코드작성 → 빌드&실행 → 디버깅&테스팅(수정시 코드작성단계로 이동) → 앱서명
안드로이드 앱 개발 구성 요소
- 에뮬레이터 혹은 디바이스 - 안드로이드 스튜디오에서 개발한 앱 테스트
- adb(android debug bridge) 프로그램 - 안드로이드 스튜디오를 실행하면 자동으로 실행되어 [에뮬레이터/디바이스]와 연결 관리
- adbd(android debug bridge daemon) 프로그램 - 안드로이드 디바이스 내부에서 adb 서버와의 통신을 담당
- Run 메뉴 - [안드로이드 플러그인] - [adb 서버] - [adbd] -[에뮬레이터/디바이스]로 전송되어 실행
- 디버거(Degugger) - 프로그램 버그를 찾기 위한 소프트웨어 앱을 직접 사용 또는 안드로이드 스튜디오에 내장
플랫폼 버전과 구조
- 안드로이드는 사용하는 플랫폼 버전과 별개로 API 레벨이 존재
API레벨에 따라서 새로운 기능이 추가되거나 코드 전체를 변경해야 하는 경우도 발생
API레벨의 변경 사항이 있을 때는 기존의 코드를 다시 한번 확인할 필요가 있음
최신 버전이 안드로이드 12라도 실제 사용자가 사용하는 버전은 훨씬 다양
현재 시점의 플랫폼 점유율은 안드로이드 개발자 사이트에서 확인 가능
2020년 12월 기준으로 API레벨 16, 젤리빈 버전 이상을 사용하는 디바이스가 전체의 99%
- 안드로이드 플랫폼의 구조는 리눅스 커널과 자바 API 프레임워크가 결합된 형태
과거에 안드로이드 플랫폼에 대한 설명에는 JVM이 항상 따라붙었는데 자바 가상 머신 위에서 앱이 동작했기 때문
현재는 이르르 대신해 안드로이드 런타임을 사용
따라서 JVM이 없지만 여전히 가상 머신 위에서 동작한다는 점에서 자바의 동작 구조를 차용
Kotlin(코틀린)
객체지향 프로그래밍과 비교하자면 객체지향 프로그래밍은 클래스 내부에 있는 함수에서만 로직을 작성하지만, 함수형 프로그래밍은 이런 제한 없이 어디에서나 작성 가능
유익한 글이었습니다.