일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- NetworkCallback
- android studio 3
- NetworkInfo deprecated
- 안드로이드모듈
- NetworkInfo 대체
- win10 virtualenv
- prettier 사용법
- 안드로이드 view
- 파이썬 의존성
- 모듈 관리
- 안드로이드 color
- xcode idfa
- swift idfa 확인방법
- 안드로이드 시작하기
- 안드로이드 공부
- android 개발
- android color 클래스
- 안드로이드 스튜디오 설치
- vscode extenstion
- jitpack
- listview adapter
- prettier vscode
- android 튜토리얼
- 안드로이드 스튜디오
- 레이아웃
- 모듈 배포
- Log.d
- logcat 사용법
- vscode extension 추천
- 안드로이드 프로젝트
- Today
- Total
세라쌤의 IT 튜토리얼
android 애플리케이션의 기본 요소 본문
< 안드로이드 애플리케이션의 빌드와 동작 >
1. APK의 소개
Android 앱은 Java 프로그래밍 언어로 작성됩니다. Android SDK 도구는 모든 데이터 및 리소스 파일과 함께 코드를 컴파일하여 하나의 APK를 만듭니다. Android 패키지는 접미사가 .apk
인 아키이브 파일입니다. 한 개의 APK 파일에는 Android 앱의 모든 콘텐츠가 들어 있으며 이 파일이 바로 Android로 구동하는 기기가 앱을 설치할 때 사용하는 파일입니다.
Android 앱은 일단 기기에 설치되고 나면 각자 자체적인 보안 샌드박스 안에 존재합니다.
- Android 운영 체제는 멀티유저 Linux 시스템으로, 여기서 각 앱은 각기 다른 사용자와 같습니다.
- 기본적으로 시스템이 각 앱에 고유한 Linux ID를 할당합니다(이 ID는 시스템만 사용할 수 있으며 앱에서는 인식하지 못함). 시스템은 앱 안의 모든 파일에 대해 권한을 설정하여 해당 앱에 할당된 사용자 ID만 이에 액세스할 수 있도록 합니다.
- 각 프로세스에는 자체적인 가상 머신(VM)이 있고, 그렇기 때문에 한 앱의 코드가 다른 여러 앱과는 격리된 상태로 실행됩니다.
- 기본적으로 모든 앱이 앱 자체의 Linux 프로세스에서 실행됩니다. Android는 앱의 구성 요소 중 어느 것이라도 실행해야 하는 경우 프로세스를 시작하고, 이것이 더 이상 필요 없어지거나 시스템이 다른 앱을 위해 메모리를 회복해야 하는 경우 해당 프로세스를 종료합니다.
Android 시스템은 이런 방식으로 최소 특권의 원리를 구현합니다. 다시 말해, 각 앱은 기본적으로 자신의 작업을 수행하기 위해 필요한 구성 요소에만 액세스 권한을 가지고 그 이상은 허용되지 않습니다. 이렇게 하면 대단히 안전한 환경이 만들어져 앱이 시스템에서 자신이 권한을 부여받지 못한 부분에는 액세스할 수 없게 됩니다.
그러나, 앱이 다른 여러 앱과 데이터를 공유하는 것과 앱이 시스템 서비스에 액세스하는 데에는 여러 가지 방법이 있습니다.
- 두 개의 앱이 같은 Linux 사용자 ID를 공유하도록 설정할 수도 있습니다. 이 경우 두 앱은 서로의 파일에 액세스할 수 있게 됩니다. 시스템 리소스를 절약하려면, 같은 사용자 ID를 가진 앱이 같은 Linux 프로세스에서 실행되도록 설정하고 같은 VM을 공유하도록 할 수도 있습니다(이들 앱은 같은 인증서로 서명해야 합니다).
- 앱은 사용자의 연락처, SMS 메시지, 마운트 가능한 저장소(SD 카드), 카메라, Bluetooth를 비롯하여 이외에도 여러 가지 기기 데이터에 액세스할 권한을 요청할 수 있습니다. 사용자는 이러한 권한을 명시적으로 부여해야 합니다. 자세한 내용은 시스템 권한 사용을 참조하세요.
이렇게 해서 Android 앱이 시스템 내에 어떤 식으로 존재하는지 기본 사항을 알아보았습니다. 이 문서의 나머지 부분에서 소개될 내용은 다음과 같습니다.
- 앱을 정의하는 핵심 프레임워크 구성 요소.
- 구성 요소를 선언하고 앱에 맞는 필수 기기 특징을 선언할 수 있는 매니페스트 파일.
- 앱 코드로부터 별도로 분리되어 있으며 앱이 다양한 기기 구성에 맞게 자신의 동작을 안정적으로 최적화할 수 있도록 해주는 리소스.
2. 안드로이드의 4대 컴포넌트
1) Activity
2) Service
3) Contents Provider
ContactsContract.Data
등) 특정한 사람에 대한 정보를 읽고 쓸 수 있습니다.콘텐츠 제공자는 여러분의 앱에 전용이며 공유되지 않는 데이터를 읽고 쓰는 데에도 유용합니다. 예를 들어 Note Pad샘플 앱은 메모한 내용을 저장하는 데 콘텐츠 제공자를 사용합니다.
콘텐츠 제공자는 ContentProvider
의 서브클래스로 구현되며, 다른 앱이 트랜잭션을 수행할 수 있도록 활성화하는 표준 API 집합을 구현해야 합니다.
4) Broadcast Receiver
브로드캐스트 수신기는 시스템 범위의 브로드캐스트 알림에 응답하는 구성 요소를 말합니다. 대다수의 브로드캐스트는 시스템에서 시작합니다. 예를 들어, 화면이 꺼졌다거나 배터리 잔량이 부족하다거나, 사진을 캡처했다는 것을 알리는 브로드캐스트가 있습니다. 앱도 브로드캐스트를 시작합니다. 예를 들어, 기기에 몇 가지 데이터를 다운로드하여 다른 앱도 사용할 수 있다는 사실을 다른 여러 앱에게 알리는 것입니다. 브로드캐스트 수신기는 사용자 인터페이스를 표시하지 않지만, 상태 표시줄 알림을 생성하여 사용자에게 브로드캐스트 이벤트가 발생했다고 알릴 수 있습니다. 다만 브로드캐스트 수신기는 그저 다른 구성 요소로의 "게이트웨이"인 경우가 더 보편적이고, 극소량의 작업만 수행하도록 만들어진 경우가 많습니다. 예컨대 서비스를 시작하여 이벤트를 근거로 한 어떤 작업을 수행하도록 할 수 있습니다.
브로드캐스트 수신기는 BroadcastReceiver
의 서브클래스로 구현되며 각 브로드캐스트는 Intent
객체로 전달됩니다.
'Android' 카테고리의 다른 글
안드로이드의 레이아웃(ViewGroup)과 뷰(View) (2) (0) | 2019.03.14 |
---|---|
안드로이드의 레이아웃(ViewGroup)과 뷰(View) (1) (0) | 2019.03.14 |
android AVD (에뮬레이터) 설치하기 (2) | 2019.03.13 |
android 프로젝트 만들기, 프로젝트 열기 (0) | 2019.03.13 |
Android Studio 3.3.2 설치하기 (0) | 2019.03.11 |