Skip to content

workspace/DroidKnights2023-app-with-media3

 
 

Repository files navigation

�banner

DroidKnights2023 App with media3

2023년 9월 12일 드로이드나이츠에서 발표한 <Jetpack Media3로 좋은 콘텐츠 소비 경험 구현하기>에서 소개한 데모 앱을 공개합니다.

발표 자료

https://speakerdeck.com/workspace93/jetpack-media3ro-joheun-kontenceu-sobi-gyeongheom-guhyeonhagi

Guide

Emulator 만들기

각 Configuration에 맞는 Emulator를 Android Studio Device Manager에서 생성.

image

Desktop Head Unit Emulator 만들기 (Android Auto)

공식 가이드를 따라 Desktop Head Unit Emulator(DHU)를 설치. 모바일 에뮬레이터 또는 실기기가 연결된 상태에서 DHU 실행하면 Android Auto 활성화

image

Run Configurations

실행 해보고 싶은 것과 Emulator를 고른 뒤 Run

image
  • app (통상적인 모바일 앱, Android Auto)
  • app-wear-os (워치 앱)
  • app-tv (Android TV 앱)
  • app-automotive (Android Automotive 앱)

Resources

Youtube

Android Developers - Media3

Android Developers - Wear OS, TV, Auto

Github

DroidKnights2023 App ReadMe 원문 �banner

DroidKnights2023 App

드로이드나이츠는 기술 세션으로 개발자들의 경험을 공유하는 안드로이드 컨퍼런스입니다.

Guide

Contributions Welcome!

드로이드나이츠 행사 정보를 볼 수 있는 앱을 개발하고 있습니다. 여러분들의 참여로 함께 만들어 나가길 기대합니다!

자세한 내용은 CONTRIBUTING.md 를 참고해 주세요.

Design

Figma에서 디자인을 확인하실 수 있습니다.

Development

Required

  • IDE : Android Studio Giraffe (Download)

  • JDK : Java 17을 실행할 수 있는 JDK

    • (권장) Android Studio 설치 시 Embeded 된 JDK (Open JDK)
    • Java 17을 사용하는 JDK (Open JDK, AdoptOpenJDK, GraalVM)
  • Kotlin Language : 1.8.21

Language

  • Kotlin

Libraries

  • AndroidX

    • Activity & Activity Compose
    • AppCompat
    • Core
    • Lifecycle & ViewModel Compose
    • Navigation
  • Kotlin Libraries (Coroutine, DateTime, Serialization)

  • Compose

    • Material3
    • Navigation
  • Landscapist & Landscapist Coil

  • Dagger & Hilt

  • Square (Retrofit, OkHttp)

Test & Code analysis

  • Compose Test(UI, Navigation)
  • JUnit4
  • Mockk
  • Turbine
  • Kotest
  • Detekt

Gradle Dependency

Gradle Version Catalog 를 활용하여 종속성과 플러그인을 관리하고 있습니다.

자세한 내용은 libs.versions.toml 를 참고해 주세요.

Architecture

Layer

본 프로젝트는 Layered Architecture 형태로 설계되어 있습니다. 현재 Presentation/Domain/Data 레이어 구조를 띄고 있습니다.

img

UI Layer

상태는 아래로 이동하고 이벤트는 위로 이동하는 단방향 데이터 흐름(UDF)으로 구성되어 있습니다.

img

Module

본 프로젝트는 Multi-module 구조이며 각 Feature마다 모듈 형태로 구성되어 있습니다.

Module Graph 생성 방법

1. 그래프를 시각화하는 오픈소스 설치
- brew install graphviz (예시 Homebrew)

2. 그래프 생성 Gradle Task 실행
./gradlew projectDependencyGraph

Thanks

참여해주신 모든 분들 감사합니다!