이어서 안드로이드 기초에 대해 공부했다.
애플리케이션의 구성요소. 애플리케이션을 구성하는 단위.
안드로이드에서는 클래스로 컴포넌트를 개발한다.
즉, 하나의 클래스가 하나의 컴포넌트다.
모든 클래스가 컴포넌트는 아니다. 앱은 크게 컴포넌트 클래스와 일반 클래스로 구분된다.
객체의 생성부터 소멸까지 생명주기를 개발자 코드에서 관리하면 일반 클래스,
개발자가 만들었어도 안드로이드 시스템이 생명주기를 관리하면 컴포넌트 클래스다.
애플리케이션 라이브러리를 사용할 수 있다.
다른 애플리케이션을 라이브러리처럼 이용한다.
ex) 카톡에서 앨범 앱을 이용해 사진 데이터 받아 채팅 화면에 출력
컴포넌트는 애플리케이션에서 독립적인 실행 단위
이다.
따라서, 앱 내에서 컴포넌트의 실행시점이 다양할 수 있다.
컴포넌트끼리 서로 종속되지 않아 코드 결합이 발생하지 않는다.
ex) 채팅방 목록에서 채팅 화면 접속 시,
ListActivity가 ChatActivity 객체를 생성해 실행하는게 아니라,
ListActivity가 안드로이드 시스템에 의뢰해 ChatActivity가 실행되는 구조다.
어떤 클래스를 상속하느냐에 따라 4가지 컴포넌트를 구분할 수 있다.
액티비티
(Activity 클래스 상속)
화면을 구성하는 컴포넌트. 앱이 실행되면 액티비티에서 출력한 내용이 안드로이드 폰에 나온다.
서비스
(Service 클래스 상속)
백그라운드 작업을 하는 컴포넌트. 화면 출력 기능은 없다. 화면과 상관없이 백그라운드에서 장시간 실행해야할 작업을 수행한다.
콘텐츠 프로바이더
(ContentProvider 클래스 상속)
앱의 데이터를 공유하는 컴포넌트. 앱이 자신의 데이터를 다른 앱에 공유하려면 콘텐츠 프로바이더를 만들어야 하고, 다른 앱에서는 이 콘텐츠 프로바이더를 통해 데이터에 접근한다.
ex) 카톡 프사 변경시 갤러리 앱의 사진 이용.
브로드캐스트 리시버
(BroadcastReceiver 클래스 상속)
시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트.
이벤트란 화면에서 발생하는 사용자 이벤트가 아니라 시스템에서 발생하는 특정 상황을 의미한다.
ex) 부팅완료, 배터리 방전 등
사용자가 스마트폰에 앱을 설치하려면 구글의 Play스토어나 앱 마켓에서 받아야한다.
이때 사용자는 개발자가 등록한 배포 파일을 다운 받는다.
APK : Android Application Package. 전통적인 배포 파일
컴파일된 코드와 리소스를 묶어 키로 서명한 것
AAB : Android App Bundle. 플레이 스토어에 올리면 사용자 기기에 맞게 최적화된 APK를 대신 만들어 준다. 사용자가 내려받는 앱은 똑같이 APK지만 개발자가 직접 APK를 만들지 않고 기기에 맞는 최적화된 파일만 포함해 앱의 크기가 줄어든다. 21년도부터 플레이스토어에는 AAB 업로드만 가능하다.
안드로이드 배포 파일을 만들려면 키를 만들어 앱에 서명해야 한다.
서명 키를 개발자가 직접 만들어 관리하는 방법과 구글 Play에서 관리하는 방법이 있다.
전자는 개발자가 만든 서명키 1개로 앱을 관리하는데 분실이나 도용시 대처를 할 수 없다. 키가 바뀌면 완전히 새로운 앱으로 등록된다.
후자 Play 앱 서명은 개발자가 만들고 관리하는 업로드키(기존 서명키)와 구글 Play가 만드는 앱 서명키가 있다. 업로드 키는 구글 플레이 등록에만 사용하고, 구글 Play가 업로드된 앱을 다시 자체적으로 만든 키로 서명해 유저에게 전달한다. 개발자 키가 분실되도 앱 서명키는 안전하므로 계속 앱을 업데이트 가능하다.(개발자 키만 재발급하면 된다)
플레이 스토어에 앱을 배포하기 전에 미리 준비해야될 파일들은 아래와 같다.
AAB 파일
패키지명을 고유한 이름으로 바꿔야 한다. build.gradle 파일의 applicationId를 수정한다.
앱 아이콘 이미지 : 512x512px. 1MB 미만 이미지 파일
그래픽 이미지 : 앱 프로모션시 이용할 이미지
휴대전화 스크린샷: 스마트폰에서 앱을 실행한 스크린샷 2~8장
7인치, 10인치 태블릿 스크린샷