안드로이드 12에 대한 최신 정보는 공식 문서에서 확인할 수 있다.

안드로이드는 전통적으로 메이저 버전에 알파벳 순으로 디저트 이름을 붙여왔다. Pie 이후로는 Q로 시작하는 이름대신 Android10이라 명명했다. 하지만 내부적으로는 여전히 디저트 이름을 붙이고 있다

  • Queen Cake(or Quince Tart, Android10)
  • Red Velvet Cake (Android11)
  • Snow Cone (Android12)

출시 일정

2021년 2월 18일 프리뷰 버전이 출시 되었으며,
5월중에 베타버전이 출시될 예정이다. 정식 버전 출시는 9월중으로 예상된다.

Android 12를 적용할 수 있는 기기

안드로이드 12를 미리 맛볼수 있는 기기는 픽셀 뿐이다.

  • Pixel …


Motivation

다른 부서와 긴밀히 협업을 하다보면 요청에 의해 버전코드(versionCode) 및 버전명(versionName)을 빈번하게 바꿀 필요가 있다. 개발중에 이런 요청을 받으면 작업하던 내용을 Stashing하고, 버전코드를 수정하고 커밋&푸시한 뒤 다시 Unstashing…

“아.. 어디까지 했더라?”

개발자들은 공감할 것이라 의심치 않는다.
개발중에 인터럽트가 들어오면 컨텍스트 스위칭 비용이 발생하게 되고, 이는 결국 생산성 저하 및 퇴근시간 늦어짐으로 귀결한다.

방해받는게 싫다면 시간을 조금 투자해서 생산성을 높일 수 있지 않을까?

그래서 이런 작업들을 젠킨스(Jenkins)를 통해 자동화하기로 결정했다.

젠킨스 프로젝트 만들기

Note : 기본적 …


안드로이드의 Context란 무엇일까?

Context란 사실 단어 그대로 맥락(Context)을 의미하며, 현재의 상태를 나타낸다. 다음 내용을 읽어보면 좀 더 Context를 이해하는데 도움 될 것 같다.

Context에 대한 중요한 몇 가지 사실들!

  • Application의 현재 상태를 Context를 통해 표현한다.
  • Activity 그리고 Application의 정보를 Context를 통해 얻을 수 있다.
  • Context를 활용하여 Resource, Database, SharedPrefernces 등의 시스템 자원을 얻을 수 있다.
  • Application과 Activity 클래스 둘다 Context를 확장한 서브클래스다.

Context는 안드로이드 앱 개발을 할 때 …


프로세스(Process)

다음과 같이 위키에서 프로세스의 정의를 발췌했다.

In computing, a process is the instance of a computer program that is being executed by one or many threads.

컴퓨터 분야에서 프로세스는 컴퓨터 프로그램의 인스턴스로, 하나 이상의 스레드를 통해 실행된다.

프로세스라는 명칭은 낯설수 있는데, 프로그램은 친숙하리라 생각된다. 우리가 흔히 말하는 프로그램이 실행되면 프로세스 인스턴스가 생성된다. 인스턴스가 생성된다는 의미는 프로그램 실행에 필요한 내용이 컴퓨터 메모리(Ram)에 적재된다는 뜻이다. 일반적으로 프로세스와 프로그램을 같은 개념으로 …


Warning : 이 포스팅은 Dagger2에 대한 이해가 필요하며, Dagger2에 대해서는 다루지 않고 있습니다. Dagger2에 대한 내용은 Dagger2를 알아보자편을 참조해주세요.

AssistedInject란 무엇인가?

Square에서 만든 수동 의존성 주입도구로 Dagger2와 함께 사용된다.

팩토리패턴(Factory Pattern)은 어떤 오브젝트를 생성하기 위한 패턴으로 매개 변수화 및 종속성을 결합하는 객체를 만들기 위해 잘 설정된 패턴이다. 팩토리는 불안정할 수 있으며, 많은 보일러플레이트 코드를 포함하고 있다. Dagger와 AssitedInject를 활용하면 간단한 인터페이스로부터 자동으로 생성되는 팩토리 구현체를 통해 많은 보일러플레이트 …


보일러플레이트란?

컴퓨터 프로그래밍에서 보일러플레이트 또는 보일러플레이트 코드라고 부르는 것은 최소한의 변경으로 여러곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드를 말한다.

보일러플레이트의 어원

보일러플레이트 코드의 어원은 신문사업에서 나왔다. 1890년대에 광고나 컬럼과 같이 계속 사용되는 텍스트 인쇄판은 부드러운 납 대신 강철로 찍기 시작했다. 이를 Boilerplate라고 불렀다.


SavedStateHandle을 다루는 ViewModel을 위한 Dagger 설정하기

Warning : 이 포스팅은 ViewModel과 Dagger에 대한 내용을 다루고 있지만, ViewModel과 Dagger에 대해서는 설명하고 있지 않습니다. 자세한 내용은 이전 포스팅을 참고해주세요.

예제코드 다운로드

build.gradle에 의존성 설정하기

//SavedState
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:2.2.0"
//Dagger2
implementation 'com.google.dagger:dagg …


UI 상태 저장 및 복원의 필요성

안드로이드의 Activity는 시스템의 요청에 의해 언제든지 소멸될 수 있다. 사용자는 UI상태가 동일하게 유지되길 기대하기 때문에 Activity의 상태를 적시에 보존하고 복원하는 작업이 필요하다.

화면 회전 또는 멀티 윈도우 모드로 전환하는 것과 같이 Configuration이 변경되어도 사용자는 Activity의 UI상태가 그대로 유지하기를 기대한다. Activity는 Configuration이 변경되면 기존 Activity를 소멸시키고 새로운 Activity 인스턴스를 생성하기 때문에 이전 UI상태가 모두 날아가버린다.

이를 방지하기 위해서는 Activity가 가지고 있는 내부 콜백 메서드인 onSavedInst …


ViewModel이란?

ViewModel이란 Android Jepack의 구성요소 중 하나로, 본래 ViewModel이란 이름은 소프트웨어 개발 디자인 패턴중 하나인 MVVM(Model — View — ViewModel) 디자인 패턴으로부터 파생되었다.

MVVM의 관점에서 부르는 ViewModel과 Android Jetpack에 포함된 ViewModel 클래스를 구분하기 위해 흔히 Android Jetpack에 포함된 ViewModel을 Android Architecture ViewModel의 약자인 AAC ViewModel이라고 부르기도 한다.

ViewModel은 왜 필요하지?

MVVM의 관점에서 봤을 때 ViewModel은 View로부터 독립적이며, View가 필요로 하는 …


프레그먼트(Fragment)를 처음 도입한것은 2011년 2월 에 등장한 Android 3.0(Honey comb, API11) 부터다. 안드로이드 등장 초기부터 함께 했기 때문에 프레그먼트를 모르는 안드로이드 개발자는 없을 것으로 생각된다.

하지만, 어떤 UI/UX를 구현하기전에 의문이 들때가 있다.

“액티비티(Activity)와 프레그먼트 중 어느것으로 구현하는게 맞는거지?”

모든 시나리오를 만족하는 정답은 없다. 상황에 따라 액티비티 또는 프레그먼트가 더 나은 선택이 될 수 있다. 액티비티와 프레그먼트 사이에서 고민하는 사람을 위해 선택에 도움이 될만한 몇가지 사항들을 알아보자.

유연한 UI/UX 구현

프레그먼트는 기본적으로 태블릿과 같은 큰화면 …

Charlezz

A passionate developer who’s curious about Android

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store