본문
170328(화) - App 기본 항목
App 기본 항목
앱 기본 항목
- Android SDK Tool
ㆍ모든 데이터 및 리소스 파일과 함께 코드를 컴파일 -> 하나의 APK 생성
- APK
ㆍ아카이브 파일
ㆍAndroid 앱은 일단 기기에 설치되면 자체적인 보안 샌드박스에 존재
ㆍAndroid OS == Linux 멀티유저 시스템 : 각 앱은 각기 다른 user와 같다.
ㆍSystem이 각 앱에 고유한 Linux ID를 할당
ㆍ각 프로세스에는 자체 VM이 있어서 앱은 각기 분리된 상태로 실행
ㆍ모든 앱은 Linux 프로세스에서 실행
- principle of least privilege
ㆍ각 앱은 기본적으로 작업 수행을 위해 필요한 구성요소에만 접근 가능
- 여러 앱과의 데이터 공유
ㆍ같은 Linux ID를 공유
ㆍpermission 명시로 권한 획득
Application 구성 요소
- Activity
ㆍ사용자 인터페이스가 있는 단일화면
- Service
ㆍBackground에서 실행되는 구성요소
ㆍ오랫동안 실행되는 작업 수행 or 원격 프로세스를 위한 작업 수행
ㆍ사용자 인터페이스가 없음
- CP (Content Provider)
ㆍ공유된 App data set을 관리
ㆍFile system, SQLite DB, 웹, 영구 저장소 등 액세스 가능한 곳이면 어디든 저장 가능
ㆍ데이터 쿼리, 수정도 가능
- BR (Broadcast Receiver)
ㆍSystem range의 BR 알림이 응답하는 구성요소
ㆍ어떤 App이든 다른 App의 구성요소를 시작 가능
ㆍIntent 받는쪽의 프로세스로 실행된다.
Intent
- 비동기식 메시지
- 각각의 구성요소를 런타임에 서로 바인드
- explicit or implicit
- CP는 Intent가 활성화 되지 않음
ㆍContentResolver로부터 요청되면 활성화
ㆍActivity : startActivity(), startActivityForResult()
ㆍService : startService()
ㆍBR : sendBroadcast(), sendOrderedBroadcast(), sendStickyBroadcast()
ㆍCP : ContentResolver에서 query() 호출
Manifest file
- 앱 구성요소 시작을 위해서 존재하는지 확인작업 필요
- AndroidManifest.xml 파일을 리딩
- 모든 구성요소 선언
- 디렉토리의 루트에 존재해야 한다.
ㆍ모든 사용자 권한 식별
ㆍAPI Level 선언
ㆍ필요로 하는 HW, SW 기능 선언
ㆍ링크 되어야 하는 API 라이브러리 선언
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:icon="@drawable/app_icon.png" ... >
<activity android:name="com.example.project.ExampleActivity"
android:label="@string/example_label" ... >
</activity>
...
</application>
</manifest>
ㆍActivity : <activity>
ㆍService : <service>
ㆍBR : <receiver>
ㆍCP : <provider>
- BR은 코드상에서 선언 가능하다.
ㆍBroadcastReceiver의 registerReceiver() 호출
구성요소 기능 선언
- implicit 응답 및 식별 방법
ㆍintent-filter
<manifest ... >
...
<application ... >
<activity android:name="com.example.project.ComposeEmailActivity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<data android:type="*/*" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
지원하는 기기 프로필 정의
<manifest ... >
<uses-feature android:name="android.hardware.camera.any"
android:required="true" />
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="19" />
...
</manifest>
App resource
- 소스코드와 별개로 이미지, 오디오, 시각적 표현 등 리소스를 XML로 관리
- 다양한 특성을 쉽게 업데이트 가능
- 코드 수정 최소화
- 다양한 기기에 최적화 가능
'Mobile > Android API' 카테고리의 다른 글
170411(화) - System permission (0) | 2017.04.11 |
---|---|
170411(화) - Device Compatibility (0) | 2017.04.11 |
170328(화) - ART & Dalvik (0) | 2017.03.28 |
170328(화) - DEX (Dalvik Executable format) (0) | 2017.03.28 |
170321(화) - Android 구조 (0) | 2017.03.21 |
댓글