Android

· 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..
· 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("") }..
· Android
현재 프로젝트에 의존성 주입을 위해 Hilt를 사용하고 있다. Hilt는 Android에서 Dagger를 쉽게 사용할 수 있게 만들어주는 매퍼 라이브러리이다. 필자는 Hilt를 도입하면서, 제대로 알지 못하고 사용하여 많은 문제를 겪었다. 1. Hilt Scope 리뷰처럼, 필자는 코드의 유스케이스를 Hilt Scope Annotation을 처리하였다. 단순히 매번 호출할 때마다 인스턴스 생성하는 것을 방지하기 위함이였다. 리뷰를 통해 레퍼런스를 찾아보다, Hilt Scope를 잘못 사용하면 메모리 누수를 발생시키고 더 나아가 성능 저하까지 일으킨다는 내용이 많았다. 아무래도 생명주기와 연관있다 보니, GC에 수집되지 않는 부분이 가장 큰 것 같다. 2. Hilt Component ActivityComp..
정자이노
'Android' 카테고리의 글 목록