모두열기 184

Droid Knights 2023 다녀오고 나서

생애 처음으로 오프라인 개발자 세미나를 다녀왔다. 그전에 21년 온라인으로 듣고, 최근에 플러터 온라인으로 들었지만, 오프라인은 처음이라 뭔가 쭈뼛쭈뼛 거리는 대학생 1학년 신삥 같았다. 아래는 인증샷 제가 들었던 세션들은 아래와 같다. 1. Gradle Version Catalog 적용하기 (차영호) 2. Jetpack Media3으로 좋은 콘텐츠 소비 경험 구현하기 (류기민) 3. 서버 개발자도 작성하는 안드로이드 테스트 (박재성) 4. Compose로 위젯을 만든다고?! Glance를 이용한 차량 위젯 개발기 (정태훈) 5. GradleKotlin 컨벤션 플러그인으로 효율적으로 멀티 모듈 관리하기 (윤영직) 6. Re:Android Studio 설정으로 생산성 올리기 (노현석) 7. Coroutin..

Flutter Web App + Jenkins CI/CD 환경 구축해보기

서론 Flutter를 3년 전 수박 겉핥기로 하다가 안 되는 게 너무 많아서 접은 그 플랫폼이 지난 4월 1일 세미나를 보고 나서 엄청 발전했다는 걸 느꼈습니다. 내 미래 밥줄이 Flutter 겠구나 생각이 들어 이제라도 시작해보려고 합니다. 현재 진행중인 사이드 프로젝트에서 제가 담당하는 부분은 html로 페이지 구성하는 건데 이걸 Flutter Web으로 하면 좋은 발판이 되겠구나 생각이 들어 바로 변경하기 전 기술 스펙을 확인해야 하기 때문에 몇 가지 들을 확인 했습니다. 1. web 지원하는가? 2. 개인 나스 Jenkins 에 서버 올려서 사용할 수 있는가? 3. 엑셀 파일 입/출력 가능한가? 4. http 통신 가능한가? 1번 같은 경우 세미나를 통해 강력한 Flutter PWA 가 있다고 해..

flutter 2023.04.05

[안드로이드] 앱 모듈화 그 두번째 이야기

app modularization Summary (요약)이전에 제시한 앱 모듈화 설계에서 이슈가 될만한 요소들을 해소 하면서 새로운 앱 모듈화를 제시합니다.Background (문제점)core 모듈에서 repository 패턴을 넣는다면 결국엔 해당 repository 를 사용하는 여러 feature 에서 “변화” 가 생긴다면 유지보수단에서 소스 충돌에 대한 이슈는 필연적으로 발생하게 됩니다.Solution (해결책)feature 모듈들은 core 모듈을 의존하지만, 최소한으로 의존을 두면서 각 feature 에게 “독립성” 을 부여합니다.core 모듈은 feature 에서 주로 사용되는 network, local 라는 데이터 소스를 최소한으로 사용할수 있는 클래스로만 모듈화를 하고 feature 에서 ..

android 2023.03.27

2022년 회고

성장 1. 개발 생산성 높이기 위한 많은 고민과 연구 지난 한 해 동안 개발 생산성을 높이기 위한 많은 고민과 연구를 했고, 실 서비스에서 적용하면서 많은 성장을 했던 거 같습니다. 예를 들면 개발자가 반복적인 코드를 자주 선언하는 부분을 없애거나, https://jsieun73.tistory.com/192 해서 생산성을 대폭 증대하는데 기여를 했습니다. 수치상으로는 30% ~ 40% 이상 올라갔습니다. 2. 개인 라이브러리 고도화 및 추가 기존에도 개인적인 라이브러리를 만들고, 좀더 '기능' 기준으로 나눠서 원하는 기능만 추가할 수 있도록 만들었습니다. 다른 팀들과 현업을 하면서 HTTP 로그를 UI로 볼 수 있는 라이브러리를 만들어서 좀 더 수월하게 협업할 수 있는 환경을 구성했습니다. 3. CI ..

[안드로이드] 갤러리 라이브러리 소개

앱을 개발하다보면 앨범을 불러와서 처리해야 하는 경우가 있습니다. 파일 읽기 / 쓰기 라던지 이러한 것부터 시작해서 정말 귀찮은 작업들이 꽤 있는데요. 이때를 대비해서 쓸만한 라이브러리를 소개하겠습니다. https://github.com/sieunju/gallery GitHub - sieunju/gallery: Android Gallery Libaray 🤩! And Simple is Best! Android Gallery Libaray 🤩! And Simple is Best! Contribute to sieunju/gallery development by creating an account on GitHub. github.com 이 라이브러리의 특징으로는 사용자가 원하는 '기능' 기준으로 라이브러리가 분..

android 2023.01.03

[안드로이드] RecyclerView 공통 어댑터 개편기

안녕하세요. 이번 포스팅에서는 제가 서비스중인 곳에 공통 어댑터를 구축하면서 발생한 이슈들 그리고 개편한 내용에 대해 포스팅 해보겠습니다. 각 타입별 어댑터들의 장, 단점은 아래와 같이 정리해볼수 있겠습니다. 여러 개발자들과 동시에 다른 개발을 하다보면 공통 어댑터는 오히려 마이너스 요소라 화면 단위로 어댑터를 생성하는것이 좋아보입니다. 하지만, 단순 반복적인 행위를 하다보면 클래스들은 점차 많아지고 이 또한 리소스 낭비라고 생각이 듭니다. 저는 개발자의 단순 반복 작업은 최대한 줄이고, 개발에만 집중하는 방식을 추구합니다. 따라서, 공통 어댑터를 사용하고 대신 어떻게 해서든 소스 충돌이 발생하지 않는 어댑터로 만들기로 했습니다. 소스 충돌이 발생하는 곳은 아래와 같습니다. 공통 DiffUtil Clas..

android 2022.12.25

[안드로이드] Fastlane & Google Play 배포 환경 구축 해보기

저는 Fastlane 을 사용하기전에는 triplet 을 이용하여 자동 배포 환경을 구축 했었습니다. https://jsieun73.tistory.com/183?category=611190 참고 [안드로이드] Github Action 을 이용한 자동 배포 안녕하세요 이번 글에서는 안드로이드 앱을 직접 운영하는 사람들에게만 필요한 포스팅이 되겠습니다. 앱을 운영 하다 보면 기능, 버그 들이나 수정사항이 발생하면 앱을 '배포' 할 때가 있습니 jsieun73.tistory.com 이전에 Fastlane & Firebase App Distribution 을 이용한 앱 자동 배포하는 환경을 구축 해봤습니다. fastlane 설치방법과 GCP 설정 방법은 아래 링크 참고 하시면 되겠습니다. :) https://j..

android 2022.10.03

[안드로이드] 앱 테스터에 자동 배포 도전해보기!

앱을 서비스 하다 보면 QA 팀이나 디자인팀한테 앱을 배포해서 디자인검수, QA검수를 진행하는 일이 번번히 발생합니다. 그럴 때마다 수동으로 앱을 설치해주다 보면 서로 피곤해지는 문제가 발생합니다. ㅠ.ㅠ 이번 포스팅에서는 Firebase Appdistribution 활용한 앱 배포 환경 구축에 대해서 안내해드리겠습니다. :) 앱 테스터 자동 배포를 구축하기 위해선 아래와 같은 환경이 필요합니다. 1. Mac homebrew 설치된 상태 (Window 라면..잘 모르겠지만, fastlane 를 설치할수 있으면 됩니다.) 2. 자동 배포 환경 툴 'Fastlane' 사용 3. 구축하고자 하는 앱과 Firebase 연결된 상태 4. Google Could Platform 을 진입할수 있는 계정 GCP 서비스..

android 2022.09.29

[안드로이드] 화면단위로 모듈화 하는 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