AOS
-
[Android] Firebase 배포 자동화 (Github Actions)AOS 2023. 11. 21. 00:19
어제는 Github Actions를 이용하여 Github Release 를 자동화하였습니다. 2023.11.19 - [AOS] - [Android] “캐치 테이프” CD 구축 - 2. Github Actions 을 이용한 배포 자동화 [Android] “캐치 테이프” CD 구축 - 2. Github Release 자동화 캐치 테이프를 개발하며 CI/CD 를 구축하게 되었다. CI 는 다른 팀원 분이 맡아주셨고, 나는 Github Action 을 이용하여 태그를 푸쉬하여 apk 파일을 빌드하고 파일을 release 하는 워크플로우 를 만들게 tral-lalala.tistory.com Firebase 앱 배포 테스터들에게 출시 전에 배포해서 테스트할 수 있도록 Firebase 에 앱을 배포하는 것을 자동..
-
[Android] Github Release 자동화 (Github Actions)AOS 2023. 11. 19. 02:10
캐치 테이프를 개발하며 CI/CD 를 구축하게 되었습니다. CI 는 다른 팀원 분이 맡아주셨고, 저는 Github Action 을 이용하여 태그를 푸쉬하여 apk 파일을 빌드하고 파일을 release 하는 워크플로우 를 만들게 되었습니다. Github Action을 처음 사용해봐서 Github Action 이 뭔지 알아보았습니다. Github Actions 이란? 공식문서 Github 에서 제공하는 CI/CD 플랫폼으로 Workflow를 구성하여 빌드, 테스트, 배포를 자동화시키는 파이프라인을 구축할 수 있습니다. Github Action 구성요소를 살펴보자 Workflows Workflow는 YAML 파일로 정의되며 Repository의 이벤트에 의해 트리거 됩니다. Repository의 .github..
-
[Android] Clean Architecture 기반의 Multi Module 도입하기AOS 2023. 11. 15. 11:43
네이버 부스트 캠프에서 안드로이드 프로젝트 설계를 하면서 Clean Architecture 기반의 Multi Module 도입하기 로 결정했다. 이전에도 관련 글을 작성한적이 있는데 미흡한 것 같아서 다시 작성해보려고 한다. 이 전에 프로젝트를 할 때, Domain layer 가 없는 안드로이드 앱 아키텍처 가이드를 기반으로 개발하였다. 거의 모든 비즈니스 로직이 서버에 있었고, 빠른 속도로 개발하고 출시해야했기 때문에 domain layer를 포함하지 않았다. 간단한 기능들만 있을 때는 위의 구조로도 커버가 가능했다. 하지만 점점 서비스가 커지고 비즈니스 로직이 늘어날 수록 view model이 복잡해지고 코드를 파악하기 어려워졌고, 반복되는 비즈니스 로직들도 생겨났다. Domain layer 를 도입..
-
[Android] LiveData에서 StateFlow 이전한 이유 (LiveData VS StateFlow)AOS 2023. 7. 5. 19:07
🚜 LiveData에서 StateFlow(Flow)로 이전한 이유? 플레옹 프로젝트는 domain layer가 없는 안드로이드 앱 아키텍처 가이드를 기반으로 개발하였다. 거의 모든 도메인 로직이 백엔드 서버에 있어서 클린 아키텍처로 구현할 이유가 없었고 빠른 속도로 개발하고 출시해야했기 때문에 domain layer를 포함하지 않았다. 하지만 Marvel 프로젝트를 클린아키텍처(domain layer가 있는)기반으로 진행하였다. Domain Layer는 다른 프레임워크에서도 사용할 수 있도록 Android에 의존성을 가지지 않은 순수 Java/Kotlin 코드로 구성해야하는데 LiveData는 Android 플랫폼에 종속적이다. 그래서 Domain Layer에 Android 에 의존성이 없는 Flow를 ..
-
[Andorid] local.properties를 이용하여 API URL, KEY 안전하게 숨기기AOS 2023. 6. 13. 20:24
앱 배포 시에 API URL 또는 API KEY를 안전하게 숨기기 위해 local.properties 파일을 사용하는 방법이 있다. 1. local.properites 파일을 연다 BASE_URL="https://example.com/api" 파일에 api url을 추가한다. 2. 필요한 모듈의 gradle 파일을 연다. (build.gradle) android { compileSdk rootProject.ext.compileSdkVersion defaultConfig { minSdk rootProject.ext.minSdkVersion targetSdk rootProject.ext.targetSdkVersion // 추가 def localProperties = new Properties() localP..
-
[Android] 무한스크롤 Infinite ScrollAOS 2023. 5. 17. 02:26
무한스크롤이란? API 데이터가 처음부터 모드 로드되지 않고, 사용자가 요청했을 때 다음 데이터가 로드되는 방법으로는 무한스크롤과 pagination(페이지 매기기)가 있습니다. 그 중 무한스크롤은 사용자가 스크롤 하면서 페이지의 하단에 도달했을 때, 다음 데이터가 로드되는 되는 UX 입니다. pagination은 페이지를 분할하여 사용자가 페이지를 클릭해야 다음 데이터가 로드됩니다. 스크롤은 클릭보다 상호작용 비용이 낮아 더 나은 UX를 제공합니다. 무한스크롤을 구현해보기 1. 데이터 불러오기 (ViewModel) class PlantListViewModel(private val repository: PlantRepository) : ViewModel() { private val _plantList =..
-
[Android] 이미지 라이브러리(glide)없이 URL로 이미지 나타내기AOS 2023. 5. 12. 21:54
glide 는 android 에서 대부분 사용하는 이미지 라이브러리이다. glide 는 기본적으로 비동기로 이미지를 로드하여 이미지뷰에 보여주고, 캐시처리를 해준다. 이러한 기능이 어떻게 동작하는지 glide 없이 직접 처리하여 공부해보자 1. 비동기 처리 ( 코루틴 ) ⭐️ 비동기 처리가 필요한 이유? 네트워크를 통해 이미지를 가지고 오면서 시간이 소요된다. 이미지 다운로드를 Main thread(UI Thread)에서 구현한다면 화면이 멈춘다. ( Main Thread를 5초 이상 사용하면 ANR 이 발생한다. ) 시간이 오래걸리는 작업은 별도의 Thread에서 처리하고 비동기적 처리해야한다. Android는 네트워크를 사용하는 작업이 Main Thread 에서 처리하지 못하게 하고 있다. 별도의 T..
-
[Android] LiveData 와 Observer PatternAOS 2023. 3. 20. 21:53
LiveData는 관찰 가능한 데이터 홀더 클래스이다. 관찰 가능한 일반클래스와 다르게 LiveData는 생명주기를 인식한다. LiveData 의 장점 - UI와 데이터 상태 일치 LiveData는 Observer 패턴을 따른다. 기본 데이터가 변경될 때 Observer 객체에게 알린다. 그래서 앱 데이터가 변경될 때 마다 Observer(관찰자) 가 UI를 업데이트한다. 2023.03.20 - [Book/헤드퍼스트 디자인패턴] - [Design Pattern] Observer Pattern/옵저버 패턴 [Design Pattern] Observer Pattern/옵저버 패턴 [헤드퍼스트 디자인 패턴] 책을 읽으며 정리한 글입니다 옵저버 패턴 ( Observer..