전체 글

안드로이드 공부 중인 컴붕이 블로그입니다.
· Android
정말 오랜만에 블로그 글을 작성하는 것 같다. ㅎ.ㅎ  마지막 글을 작성한 후부터 8개월이라는 시간이 흘렀고, 그동안 YAPP이라는 IT 동아리에 들어가게 되어가 WeSpot이라는 서비스를 만들게 되었다.  우리팀은 Android, iOS, PM, Designer, Backend로 구성된 팀으로, 3달전쯤 성공적으로 앱을 런칭했다. WeSpot 서비스는 틴즈를 위한 쪽지/문답 서비스를 제공하는 서비스로, 청소년기 학생들이 같은 학교 친구들과 투표를 할 수 있고, 쪽지를 주고 받을 수 있다. 해당 서비스를 관리하는 입장에서, 투표의 질문지의 경우 우리가 직접 작성해서 DB에 삽입해야하는 번거로움이 있었다. 이런 점들에서 팀원들 간 어드민 서비스가 있으면 좋을 것 같다는 이야기가 많이 나왔고, iOS에서 이..
· Android
이번 WAPP를 출시하기 위해, Google Play Console에 등록을 하고, 심사를 기다렸다. 그러나,, 와피 1.0.0v의 앱 심사 결과는 알 수 없는 ANR 문제로 거절당했다. 당연히 거절은 당할 수 있다고 생각했는데, 어떤 화면에서, 어떤 로직에서 발생했는지 확인할 수 없어 너무 답답했다. (나와 동료 개발자분 뿐만아니라, 다른 많은 분께서도 릴리즈 앱 테스트를 도와주셨는데, ANR 문제는 그동안 겪은 적도 없기 때문이다.) 이런 상황을 해결하기 위해 동료분과 논의하며, 일단 의심이 가는 로직을 소거하고, Analytics Event를 통해 기록을 남기는 것으로 결정했다. NowInAndroid의 Firebase Analytics을 기반으로 하여 구현하였습니다. 무엇을 기록해야 할까 ? 앱 ..
· Android
와피 프로젝트의 기능 개발을 마무리하며, 드디어 앱을 배포할 시기가 다가왔다 ! 처음 프로젝트를 시작할 때 CI 환경을 직접 구축하고, 관련된 블로그 글을 올린지 6개월이 지났다. 이번에는 Github Actions를 활용하여 APK를 빌드하고, APK Signing 그리고 Firebase App Distribution까지 자동으로 수행하는 프로세스를 구축하고자 한다. 아래에서는 자동 앱 배포 프로세스에 대한 방법과 구현하며 마주친 문제와 해결방법에 대해 소개한다. (Github Actions와 CI 관련된 내용은 이전 내용을 참고하세요 !) Android CI/CD : Github Action을 통해 CI/CD 구축하기 Android CI/CD : Github Action을 통해, Discord + J..
· 프로젝트
이번에 UMC에서 주관하는 "모여봐요 해커톤"에 참가하게 되었다. 해커톤을 진행하며 많은 트러블을 겪었는데, 그 중 가장 기억에 남는 multipart/form-data 이슈에 대해 소개하고, 또 공부한 내용을 기록하고자 한다. (마지막에 해커톤 후기도 포함되어 있다.) 기존 나의 multipart/form-data 지식 ? 이미지와 같은 큰 사이즈의 요청을 보낼 때 사용하는 하나의 프로토콜? 정도로 알고 있었고, multipart/form-data 전송 방식 및 키워드에 대한 지식은 전혀 없었다. 구글링을 통해 Retrofit2 @Multipart를 활용하여 단순히 이미지를 전송하는 방식만 알고 있었다. (사실 단일 이미지 전송만을 위해서만 주로 사용했고, 사용 빈도가 높지 않아 지식의 필요성을 못 느..
· Android
SideEffect는 Composable 함수 외부에서 발생하는 변화이며, Composable 함수는 Recomposition에 대한 특성과 Composable 함수의 알 수 없는 생명주기 때문에 지양해야 한다고 소개했다. 이러한 SideEffect를 처리하기 위해 SideEffect Handler를 소개하였고, 이번에도 이어서 SideEffect, produceState(collectAsState, collectAsStateWithLifecycle), derivedStateOf, snapshotFlow에 대해서 순서대로 소개한다. SideEffect 여기서 소개하는 SideEffect는 SideEffect Handler중 하나로, 부수효과 SideEffect와 다르다. SideEffect는 Compos..
· Android
SideEffect SideEffect란, Composable 함수 외부에서 발생하는 앱 상태의 변화를 의미한다. Compose에서 SideEffect는 지양하고 있다. 왜냐하면, 외부에서 Composable 함수의 생명주기를 알 수 없으며, Recomposition에 대한 속성 떄문이다. 간단한 예시를 통해 SideEffect를 알아보자 ! class MainActivity : ComponentActivity() { private var i = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { var text by remember { mutableStateOf("") }..