모바일 개발자로서 최우선 순위 중 하나는 최신 정보를 유지하고 최신 발표를 확인하는 것입니다. 작년에 Android 에는 몇 가지 흥미로운 것들이 있었지만 2022년에 시작해야 할 가장 중요한 것들이 있습니다.

android_trend_2022

Jetpack Compose

작년의 가장 큰 발표 입니다. UI 레이어를 위한 것일지라도 많은 개발 영역에 영향을 미칩니다. 이는 Android에서 View를 생성하는 완전히 새로운 방법입니다.

마침내 XML에서 물러나고 명령적 사고 방식을 선언적 방식으로 대체할 수 있습니다. Android는 마침내 UI를 만드는 현대적인 스타일로 다른 플랫폼을 따라잡았습니다.

명령형 프로그래밍이란 ‘어떻게’를 정의하는 프로그래밍이다. 반면 선언형 프로그래밍이란 ‘무엇을’을 정의하는 프로그래밍이다.

당신은 당신의 가족과 함께 애슐리에 외식을 하러 왔다. 당신은 안내 데스크에 가서 말한다.

  1. 명령형 방식(HOW) : “저희 가족은 11번 테이블로 걸어가서 앉을 것입니다.”
  2. 선언형 방식(WHAT) : “4명 앉을 테이블 부탁해요.”

Jetpack Compose는 Kotlin을 기반으로 작성되었으며 실제로 복잡한 View를 생성할 때 약간의 제한이 있음에도 불구하고 Google의 큰 지원을 받고 있습니다. 그러나 새로운 탐색, 저장 상태 및 테마에 대한 지원을 찾을 수 있습니다. 튜토리얼이 포함된 많은 기사와 비디오도 있으므로 이미 시도해 볼 가치가 있습니다. 특히 2021년에 또 하나의 빅 뉴스인 Material You 에 대한 지원이 예정 되어 있습니다.

@Composable
private fun AppTheme.StepsView(
  modifier: Modifier,
  numberOfSteps: Int,
  currentStep: Int,
  accentColor: Color,
) {
  val inactiveColor = colors.textGray

  Row(
    modifier = modifier,
    horizontalArrangement = Arrangement.Center,
    verticalAlignment = Alignment.CenterVertically,
  ) {
    
    (1..numberOfSteps).forEach {
      when {
        it < currentStep  -> Checkmark(accentColor)
        it == currentStep -> Step(it, accentColor)
        else              -> Step(it, inactiveColor)
      }

      if (it < numberOfSteps) {
        val color = if (it < currentStep) accentColor else inactiveColor
        Line(color)
      }
    }
  }
}

또한 Jetpack Compose 사용을 시작하는 경우 Compose 지원 라이브러리인 Accompanist 에 익숙해져야 합니다.

Hilt

Hilt는 가장 인기 있는 도구인 Dagger를 기반으로 구축된 새로운 종속성 주입 도구입니다. Android용으로 특별히 제작되었으며 viewModels, Activities, Fragments 및 이미 언급한 Jetpack Compose를 지원합니다. Dagger와 비교하면 구성이 정말 간단하고 오류가 더 명확하므로 종속성 주입에 대한 경험이 적은 사람들도 충분히 이해할 수 있을 것입니다.

@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
  
  private val viewModel by viewModels<MainViewModel>()
}

@HiltViewModel
class MainViewModel @Inject constructor() : ViewModel() 

@Module
@InstallIn(SingletonComponent::class)
class AppModule 

보시다시피 Hilt에는 Android 개발을 위한 많은 편의 기능이 포함되어 있습니다. 그것이 우리 미래를 위한 것 같으니, 아직 시도하지 않으셨다면 지금 시도해볼 필요가 있습니다.

Kotlin Flow

Kotlin은 몇 년 전에 공식 프로그래밍 언어로 발표되었습니다. Kotlin Coroutine은 얼마 전에 대중화되었습니다. 이제 다음 단계인 RxJava의 경량 대안인 Kotlin Flow를 사용할 때입니다.

Kotlin Flow는 비동기적으로 계산된 여러 값을 반환하는 방법입니다. 가장 인기 있는 옵션은 아마도 StateFlow현재 값을 노출하는 변경 가능한 옵션일 것입니다. 그런 다음 SharedFlow 및 Flow 빌더에 익숙해질 수 있습니다.

Kotlin Flow는 비동기적으로 계산된 여러 값을 반환하는 방법입니다. 가장 인기 있는 옵션은 아마도 StateFlow 일 겁니다. 그런 다음 SharedFlow 및 Flow 빌더에 익숙해질 수 있습니다.

RxJava와 유사한 연산자를 많이 가지고 있지만 정말 단순한 디자인을 유지하려고 합니다. Kotlin Coroutine을 사용하는 경우 가장 먼저 선택해야 합니다. LiveData를 지원 하지만 LiveData는 Flow를 위해 포기하는 방향으로 이동하고 있습니다.

class FavoritesListUseCase @Inject constructor() {

  private val _viewState = MutableStateFlow<FavoritesListViewState>(FavoritesListViewState.Loading)
  val viewState: Flow<FavoritesListViewState> = _viewState
  
  suspend fun refreshFavoritesViewState() {
    _viewState.value = FavoritesListViewState.Loading
    _viewState.value = requestFavorites()
}
  
@HiltViewModel
class FavoritesListViewModel @Inject constructor(
    private val useCase: FavoritesListUseCase,
) {
 
  val viewStateLiveData: LiveData<FavoritesListViewState> = useCase.viewState.asLiveData()
  
  fun refreshFavoritesViewState() {
    viewModelScope.launch { requestFavoritesViewState() }
  }
}

Kotlin Flow에 대해 더 자세히 알고 싶다면 JetBrains에서 만든 정말 훌륭한 문서 가 있습니다.

요약

주제가 3개뿐인 것처럼 보일 수 있지만 코드베이스의 모든 계층을 다루기 때문에 Android 앱 프로그래밍 방식을 완전히 바꿀 수 있습니다.

또한 이 3가지 도구를 함께 사용하여 더 우수하고 강력하며 테스트하기 쉬운 코드베이스를 만들어야 한다고 생각합니다. 이것들은 최신 Android 트렌드이며 이러한 도구를 배우는데 시간을 할애하는 것이 확실합니다.

원본 글