애플리케이션 기본 설명
각 Android 앱은 자체적인 보안 샌드박스에 속하며, 이는 다음과 같은 Android 보안 기능으로 보호됩니다.
- Android 운영체제는 멀티유저 Linux 시스템으로, 여기서 각 앱은 각기 다른 사용자와 같습니다.
- 기본적으로 시스템이 각 앱에 고유한 Linux ID를 할당합니다(이 ID는 시스템만 사용할 수 있으며 앱에서는 인식하지 못함). 시스템은 앱 안의 모든 파일에 대해 권한을 설정하여 해당 앱에 할당된 사용자 ID만 이에 액세스할 수 있도록 합니다.
- 각 프로세스에는 자체적인 가상 머신(VM)이 있고, 그렇기 때문에 한 앱의 코드가 다른 앱과는 격리된 상태로 실행됩니다.
-기본적으로 모든 앱이 앱 자체의 Linux 프로세스에서 실행됩니다. Android 시스템은 앱의 구성 요소 중 어느 하나라도 실행해야 하는 경우 프로세스를 시작하고, 더 이상 필요 없거나 시스템이 다른 앱을 위해 메모리를 복구해야 하는 경우 해당 프로세스를 종료합니다.
앱 구성 요소
* 액티비티
- 사용자와 상호작용하기 위한 진입점
* 서비스
- 백그라운드에서 앱을 계속 실행하기 위한 다목적 진입점
- 예를 들어 서비스는 사용자가 다른 앱에 있는 동안에 백그라운드에서 음악을 재생하거나, 사용자와 액티비티 간의 상호작용을 차단하지 않고 네트워크를 통해 데이터를 가져올 수도 있습니다.
- 라이브 배경화면, 알림 리스너, 화면 보호기, 입력 메서드, 접근성 서비스 및 여러 가지 기타 핵심 서비스 기능이 모두 애플리케이션에서 구현하고 시스템에서 애플리케이션을 실행할 때 바인딩하는 서비스로 빌드됩니다.
- 서비스는 Service 하위 클래스로 구현
* Broadcast Receiver
- 시스템이 정기적인 사용자 플로우 밖에서 이벤트를 앱에 전달하도록 지원하는 구성 요소로, 앱이 시스템 전체의 브로드캐스트 알림에 응답할 수 있게 합니다.
- 예를 들어 앱이 사용자에게 예정된 이벤트에 대해 알리는 알림을 게시하기 위한 알람을 예약할 경우, 그 알람을 앱의 Broadcast Receiver에 전달하면 알람이 울릴 때까지 앱을 실행하고 있을 필요가 없습니다.
대다수의 브로드캐스트는 시스템에서 발생합니다. 예컨대 화면이 꺼졌거나 배터리가 부족하거나 사진을 캡처했다고 알리는 브로드캐스트가 대표적입니다.
- BroadcastReceiver의 하위 클래스로 구현되며 각 브로드캐스트는 Intent 객체로 전달
* 콘텐츠 제공자
- 파일 시스템, SQLite 데이터베이스, 웹상이나 앱이 액세스할 수 있는 다른 모든 영구 저장 위치에 저장 가능한 앱 데이터의 공유형 집합을 관리
- 다른 앱은 콘텐츠 제공자를 통해 해당 데이터를 쿼리하거나, 콘텐츠 제공자가 허용할 경우에는 수정도 가능
*** 액티비티, 서비스, Broadcast Receiver는 Intent라는 비동기식 메시지로 활성화
*** 콘텐츠 제공자는 ContentResolver가 보낸 요청의 대상으로 지정되면 활성화
안드로이드 프로젝트 개발 단계
화면 디자인 및 편집
- .xml파일의 Design & Text
- .java에서도 디자인 편집 가능
이벤트 작성 순서
BaseApp 프로젝트 구성 (폴더 설명)
* java 폴더
- main java 소스 포함
* res 폴더
- 앱 개발에 사용되는 이미지, 레이아웃, 문자열 등이 들어가는 폴더
- drawable : 이미지 파일
- layout : 액티비티(화면) 구성하는 xml파일
- values : 문자열 저장
- menu : 메뉴 xml 파일 저장
* manifests 폴더
- 앱의 여러 가지 정보 포함
- Android 빌드 도구, Android 운영체제 및 Google Play에 앱에 관한 필수 정보를 설명
* Gradle Scripts 폴더
- Gradle 빌드 시스템과 관련된 파일이 들어 있음
• build.gradle (Module: app) : 빌드 스크립트 핵심 파일
• local.properties : 컴파일되는 SDK의 경로가 들어 있음
• gradle.properties: JVM 관련 메모리가 설정되어 있음
리소스 종류 |
설명 |
디렉토리 |
파일 이름 |
문자열 |
텍스트 문자열 |
/res/values |
- strings.xml <권장> - <string> 요소를 정의한 어떤 XML 파일도가능 |
문자열 배열 |
텍스트 문자열들의 리스트 |
/res/values |
- array.xml<권장> - <string-array> 요소를 정의한 어떤 XML 파일도 가능 |
색상 |
16진수로 색상 값 정의 |
/res/values |
- colors.xml<권장> - <color> 요소를 정의한 어떤 XML 파일도 가능 |
크기 |
다양한 측정 단위의 크기 |
/res/values |
- dimens.xml<권장> - <dimen> 요소를 정의한 어떤 XML 파일도 가능 |
비트맵 그래픽 |
각종 이미지 및도형 |
/res/drawable |
- png, jpg, gif 등 각종 이미지 파일, 도형을 정의한 XML 파일 |
트윈 애니메이션 |
트윈 애니메이션의 변환 방법을 정의 |
/res/anim |
- <set> 루트 요소 밑에 <alpha>, <scale>, <translate>, <rotate> 등을 정의한 어떤 XML 파일도 가능 |
메뉴 |
메뉴 구성 |
/res/menu |
- <menu> 루트 요소 밑에 <item>, <group> 등을 정의한 어떤 XML 파일도 가능 |
레이아웃 파일 |
각 화면 별 레이아웃 정의 |
/res/layout |
- main.xml 이 일반적으로 첫 화면에 대한 레이아웃을 정의한 XML 파일이며, 각 화면 별로 레이아웃을 개별 XML로 정의 가능 |
스타일 및 테마 |
각 뷰나 위젯에 대한 속성 정보들을 정의 |
/res/values |
- styles.xml, themes.xml<권장>, <style> 요소를 정의한 어떤 XML 파일도 가능 |
XML 파일 |
개발자가 정의한 커스텀 XML |
/res/xml |
- 개발자 임의로 정의하는 모든 XML 파일 |
원본 파일 |
각종 원본 파일 |
/res/raw |
- mp3, mpg, txt, exe 등 각종 원본 파일 |
위의 표 출처: https://hyeonstorage.tistory.com/152 [개발이 하고 싶어요]
참고 사이트
'OLD_달려라 > Android' 카테고리의 다른 글
Flutter ] Android SDK 오류 해결방법 (0) | 2020.09.11 |
---|---|
Dart 언어 ] Future이란? (0) | 2020.09.10 |
Flutter ] Flutter의 기본 개념 (0) | 2020.09.10 |
Android 레이아웃 - View, ViewGroup, LinearLayout, TableLayout, RelativeLayout, FrameLayout, GridLayout (0) | 2020.01.02 |
Android 기본 위젯 - View class, Button, TextView, EditText, CompundButton (0) | 2019.12.31 |
댓글