Android Language: Kotlin, Java, C++
APK, AAB는 SDK 툴을 이용해서 프로젝트를 Compile 하면 얻을 수 있는 Archive File
APK : Android Package
- 런타임에 필요로하는 콘텐츠를 포함
- 안드로이드 기기가 앱 설치하기 위해 사용하는 파일
AAB: Android App Bundle
- 런타임에 필요로하지 않는 메타데이터를 포함하는 안드로이드 앱 프로젝트의 콘텐츠를 포함
- Android 기기에서 설치되지 않는 포맷
- 특정 기기에 필요로하는 코드와 자원들만 포함되게 최적화
- 구글플레이 배포시 구글 서버에서 디바이스에 최적화된 APK를 생성
Android OS
- 멀티 유저 리눅스 시스템 (각각의 앱이 다른 유저)
- 각각의 앱은 리눅스용 고유 User ID 값을 할당받음
- App에 있는 모든 파일들에 권한을 설정해서 앱에 설정된 userID만 접근할 수 있음
Android Process
- 각 프로세스는 각자의 VM이 존재
- 다른 앱으로부터 독립적으로 코드가 작동
- 엡의 어떤 컴포넌트라도 실행될 필요가 있으면 실행
- 더 이상 필요하지 않거나 다른앱을 위해 메모리를 복구해야할 경우 종료
최소 권한 원칙
- 기본적으로 특정 작업을 실행을 위해 필요로하는 컴포넌트만 접근할 수 있음
- 안전한 환경 조성
- 다른 앱과 데이터를 공유하는 방법 혹은 접근할 수 있는 방법이 존재
- 두 개의 앱이 Linux User ID 공유 가능
App components
Four Component: 시스템 혹은 유저가 앱으로 들어갈 수 있는 진입 포인트들을 의미
- Activity
- Service
- Broadcast Receiver
- Content Provider
주의할 점: 각각 구분되는 목적과 구분되는 생명주기