AOSP) 개발 용어
AOSP 관련 용어
Android 1p app developer
AOSP 시스템 API에 접근 가능하며, 권한 있는 앱(privileged app), 기기 제조업체 앱(device manufecturer app) 즉 android 써드 파티 앱 개발자보다 높은 권한을 가지고 앱을 개발할 수 있는 개발자를 의미합니다.
Android 3p app developer
안드로이드의 공개 SDK(android API)만을 사용하여 안드로이드 앱을 개발하는 개발자이다.
adb(android debug bridge)
CLI 환경에서 워크스테이션과 에뮬레이터 상의 기기 또는 실제 기기와 통신할 수 있는 도구이다.
Android-compatoble device
호환이 되는 안드로이드 기기란 안드로이드 SDK 또는 NDK를 활용하는 서드 파티앱이 실행이 되는 기기를 의미한다.
이미 AOSP 코드 내 정의된 기기 예를 들어 Board(BoardConfig.mk) 또는 Product(Product.mk) 파일 내에 스펙을 정의한 기기들 또는 커스텀 ROM을 탑재할 수 있는 기기들을 의미합니다.
Cuttlefish
구글에서 제공하는 안드로이드 지원 기기를 가상환경에서 사용할 수 있는 에뮬레이터이다.
해당 에뮬레이터는 adb 유틸리티를 사용하여 개발자와 제어할 수 있습니다.
예를 들어, 개발자는 adb를 사용하여 에뮬레이터에서 동작하는 가상 디바이스의 파일 시스템에 접근할 수 있고 개발자의 워크 스테이션에 있는 파일을 가상 디바이스에 전송 혹은 가상 디바이스로부터 파일을 수신할 수 있습니다.
cuttlefish 내에서 동작하는 가상 디바이스의 UI를 웹브라우저 상에서 확인 가능하다.
패키징(pakaging)
소프트웨어 개발 과정에서 소스코드,리소스,라이브러리,설정 파일등을 하나의 배포 가능한 단위로 묶는 작업을 의미합니다.
플래싱(Flashing)
장치에 장착된 메모리 중 ROM에 데이터를 덮어쓰는 기술입니다.
주로 펌웨어나 운영 체제를 저장하는 비휘발성 메모리(ROM)에 새로운 소프트웨어를 설치하는 과정이 이루어집니다.
모듈
안드로이드 빌드 시스템에서 모듈은 소프트웨어 컴포넌트의 단위로 빌드 과정에서 별도로 구성되고 빌드되는 코드와 리소스의 집합
별도로 빌드 될 수 있는 소프트웨어는 앱, 라이브러리, Test 모듈들이 존재 할 수 있습니다.
Daemon
UNIX나 Linux 운영체제에서 주로 사용되는 용어로, 사용자가 직접 인터페이스하지 않고 백그라운드에서 특정 작업을 수행하는 프로그램
서비스(Service)
Daemon과 같이 시스템에서 백그라운드에서 실행되며, 특정 작업을 수행하거나 시스템의 특정 기능을 관리하는 프로그램
운영체제에 따라 부른 방식이 다른데 서비스 같은 경우에는 윈도우 환경 그리고 안드로이드에서 주로 서비스를 사용합니다.
JIT(Just In Time)
JIT 컴파일은 애플리케이션이 실행되는 동안 필요한 시점에 코드를 컴파일하는 방식입니다.
즉, 한꺼번에 컴파일하는 것이 아닌 해당 코드 실행이 필요할때 컴파일을 하는 방식입니다.
이를 통해 실행 속도를 높이고 메모리 사용을 최적화할 수 있습니다.
AOT(Ahead Of Time)
AOT(Ahead-of-Time) 컴파일은 프로그램의 코드를 실행하기 전에 미리 컴파일하는 방식입니다.
앞서 설명 드린 JIT 방식과 대조되는 방식이라고 할 수 있습니다.
Android에서는 AOT 컴파일이 주로 ART(Android Runtime)에서 사용됩니다.