전체 글 186

[안드로이드] 화면단위로 모듈화 하는 feature module이란? #멀티모듈

안녕하세요 이번 시간에는 안드로이드 아키텍처들 중 요새 연구 중인 아키텍처에 대해서 소개하려고 합니다. 자료도 많이 없고 그냥 제 뇌피셜(?)과 동료의 조언을 통해 구축해봤습니다. 컨셉 각 피처 간의 관심사를 완전 분리해놓는 아키텍처입니다. 즉, 각 화면들이 뭘 하든 관심이 전혀 없습니다. 화면이 이동하면 필요한 feature-bradige 를 Dependency 하여 Interface로 정의한 것대로 호출합니다. 안드로이드 스펙 우선 해당 아키텍처에 대해 스펙을 공유드리면 DI 라이브러리로는 Hilt를 사용했습니다. 나머지는 스펙은 필요 없듯합니다. 장점 어떤 서비스업에서 팀원들이 각각 다른 Feature 들을 가지고 병렬적으로 개발하고 난 이후 브렌치에 머지하면 100000% 소스 충돌이 발생하게 됩..

android 2022.09.06

[안드로이드] ReactiveX 개념 소개

안녕하세요. 안드로이드에서 주로 사용하는 비동기 라이브러리중 하나인 Rx 에 대해서 설명 해보도록 하겠습니다. 안드로이드에서 어떤 서비스나 프로젝트를 만들때 네트워크 통신을 합니다. 그러면 자연스레 따라오는 비동기 네트워크 통신을 해야 합니다. 이유는 아래와 같습니다. 어쩔수 없이 WorkThread 로 접근하여 네트워크 통신을 해야 합니다. 현재 Java 비동기를 자체적으로 지원해주는건 Callable, Runnable, ExecutorService .. 등이 있는데 이것들은 사실상 네트워크를 통해서 데이터를 가져오고 그걸 UiModel 에 맞게 가공하고 처리하는 과정을 간단하게 처리하는게 어렵습니다. 간단하게 Callable 과 Rx 을 사용 했을때 코드 스타일이 어떻게 다르고 어떤게 좋아 보이는지 ..

android 2022.07.03

[안드로이드] LiveData, MutableLiveData 사용법

요새 안드로이드에서 인기 있는 디자인 패턴이 MVVM 패턴이고 LiveData에 대해서 정확히 알아야 하는 클래스 입니다. 정의야 다른 블로그에 글들이 많으니까 배제하고 실제로 적용해보고 어떤 문제가 있고 어떻게 풀어나가는지.. 그리고 몇가지 유의사항이 있는데 그런 이슈는 어떻게 풀어내야 하는지 알아보도록 하겠습니다. 🤔 LiveData, MutableLiveData 차이 LiveData 의 UI 업데이트는 언제 실행 하는지 RecyclerView -> ViewHolder 에서 ViewModel 의 LiveData 를 어떻게 처리하는지? 또한 이러한 구조는 지양 해야 하는지? List 형식을 LiveData 에서 처리하는 방법 Fragment in Fragment 구조에서 LiveData 사용시 유의 사..

android 2022.06.26

[안드로이드] 딥링크 테스트 어플 소개

안녕하세요. 이번에는 제가 딥링크 테스트를 하고 있다가 너무 귀차니즘이 발동하여 앱을 하나 만들었는데 한번 소개해볼까 합니다. https://play.google.com/store/apps/details?id=com.hmju.deeplink 퀵딥링크(Quick DeepLink) - Google Play 앱 딥링크 테스트를 아주 간단하게 도와주는 앱입니다. play.google.com 안드로이드 개발하면서 거의 웬만한 서비스에서 "딥링크" 를 많이 사용합니다. 딥링크 관련 테스트를 할 때 몇 가지 방법들이 있습니다. 1. 명령어를 쳐서 테스트 하는 방법 https://developer.android.com/training/app-links/deep-linking?hl=ko#testing-filters 앱 ..

android 2022.06.05

학부시절 게임 프로젝트 했던 흑역사..

안녕하세요 오늘 개인 나스에서 머좀 찾아보다가 예전 학부시절 졸업 작품으로 게임 프로젝트를 했던 자료가 있더군요.. 정말 맨땅에 해딩하는 식으로 팀원들과 무언가를 만들었던 시절.. 학교에선 "게임" 이라는 카테고리라는 이유만으로 지원을 못받았지만 팀원들끼리 으쌰으쌰 돈 모아서 캐릭터랑 오브젝트 등..샀던 그시절... 지금은 잘지내고 있는지 ㅋㅋㅋ 물론 다들 게임쪽으로는 전혀 안가고 다른 포지션 개발자로 갔다는게 현실..(게임 개발자가 참...그렇슴다) 각설하고 그때 제작해둔 영상 보여드립니다ㅋㅋㅋ (아마 나중에 올린걸 후회할수도 있는데 그거 또한 아름다운 추억이...) 근데 보면서 정말 닭살이 돋습니다 ㅋㅋㅋㅋ 1. 최종 졸업작품 영상 2. 중간 졸업작품 영상 3. 서버 & 유니티 연동 영상 4. 서버 ..

[안드로이드] Github Action 을 이용한 자동 배포

안녕하세요 이번 글에서는 안드로이드 앱을 직접 운영하는 사람들에게만 필요한 포스팅이 되겠습니다. 앱을 운영 하다 보면 기능, 버그 들이나 수정사항이 발생하면 앱을 '배포' 할 때가 있습니다. 손수 배포하는 과정은 아래와 같습니다. 배포할 내역들을 한 브렌치 (develop or master) 에 머지합니다. 릴리즈 모드로 .aab or .apk 버전을 생성합니다. aka 배포 버전 만다. (구글에서 작년부터 aab 를 적극 지향하기 때문에 이제는. apk는... 보내줘야 합니다..ㅠㅠ) 플레이 스토어 앱 콘솔에 들어갑니다. 배포할 앱 선택 파일 업로드 및 변경사항 적기 검수 요청 증말 복잡하죠.. 일단 배포 버전 파일을 말고 나서 콘솔에 들어가고~ 변경사항도 적고.... 개발자들은 정말 귀찮고 반복적인 ..

android 2022.06.05

안드로이드 개발시 HTTP 트레킹 라이브러리 소개

안드로이드 앱 개발시 OkHttp 를 활용해서 HTTP 통신을 합니다. 이때 개발중에 서버나 클라 쪽에 이슈가 생기면 API 쪽에 어떤 Query Paramter 를 날렸는지 Response 는 어떻게 오는지에 대한 핑퐁을 주고 받습니다. 일반적으로 Logcat 에서 요청한 API 를 찾아서~ 복사한다음에~ 서버팀에 알려주고..... 벌써부터 귀차니즘이 시작 됩니다.. 그래서 이런 귀차니즘을 해소할 그런 것들이 없을까 하다가 옆에 iOS 개발자분이 흔들어서 요청한 HTTP 로그들을 보여주는 라이브러리인 (netfox) 를 보여주더군요.. https://github.com/kasketis/netfox GitHub - kasketis/netfox: A lightweight, one line setup, iO..

android 2022.05.05

[안드로이드] Json Converter는 이제 Kotlinx Serialization로 변경해야 하는 이유

요약 (Summary) 안드로이드 프로젝트가 코틀린이 주로 구성되어 있다면 HTTP 통신 시 역/직렬화는 Kotlinx Serialization을 사용해야 합니다. 배경 (Background) HTTP 통신시 Json Converter로는 Java 구성된 Gson이나 Moshi 가 대표적으로 있습니다. 하지만 이것들은 Java 기반이라 Kotlin에 적합하지 않은 문제가 있습니다. 예를 들면 서버에서 field 값을 안 주거나, null로 줬을 때 대응에 어려움이 있습니다. 비교 (Compare) Gson, Moshi, Kotlinx Converter 를 비교하기 전에 제가 Json Converter 라이브러리를 지정하는 기준은 아래와 같습니다. - Default Argument 를 사용자가 그때그때..

android 2021.12.18

[안드로이드] Visual 라이브러리 "widget" 소개

안녕하세요. 이번에는 제가 여러 앱을 사용하면서 인상 깊었던 View 들의 애니메이션이라던지 프로젝트 개발하면서 Ui 측면에서 비용이 많이 들었던 것들을 시간 날 때마다 개발해서 사용했던 것을 소개해볼까 합니다. https://github.com/sieunju/widget GitHub - sieunju/widget: Visual 적인 View 들을 모아놓은 라이브러리입니다. Visual 적인 View 들을 모아놓은 라이브러리입니다. Contribute to sieunju/widget development by creating an account on GitHub. github.com 기능 - SurfaceView 기반의 ProgressView - Coordinator.Behavior 기반의 Transla..

android 2021.11.02

[안드로이드] SimplePermissions 소개

안녕하세요. 시간이 좀 됐지만 안드로이드 appCompat이 1.3.0 이상 올라가면서 권한에 대한 프로세스가 전면 수정됐습니다. 그래서 그에 맞게 대응하면서 간단하게 적용할 수 있는 라이브러리를 만들어봤습니다. https://github.com/sieunju/SimplePermissions GitHub - sieunju/SimplePermissions: AppCompat 1.3.0 이상 권한 라이브러리 입니다. AppCompat 1.3.0 이상 권한 라이브러리 입니다. . Contribute to sieunju/SimplePermissions development by creating an account on GitHub. github.com 기능 - build 패턴으로 전체 권한이 승인 여부 및 거부..

android 2021.11.02