Android

개발

클린 아키텍처와 SOLID

클린 아키텍처는 이제 안드로이드 진영의 많은 기업들이 선호하는(?) 아키텍처가 되었다. 내가 이 책을 읽었던 작년 이 맘 때와 비교해보면, 이제는 상당히 많은 기업들의 채용 공고 우대 사항에 들어가 있는 것을 보면서 느끼고 있다. 선호한다기보다는 구조적 이해도를 가진 개발자를 원하는 느낌이라 해야할까? "클린 아키텍처를 실무에 적용해 본 적이 있나요?"라는 부분보다, "아키텍처의 중요성과 그에 대한 이해도를 가지고 있나요?"라는 의미에 더 가깝다고 생각한다. 오늘은 아키텍처 설계에서 SOLID 원칙의 역할과 중요성에 대해 알아보고자 한다. Single Responsibility Principle여러 블로그 포스팅에서는 단일 책임 원칙을 "클래스/모듈은 단 하나의 책임만 가져야 한다"고만 설명하고 있다. ..

일상/이직 과정 기록

(2) 카카오뱅크 안드로이드 하이라이트 채용 후기 - 1차 면접

1. 면접 준비 전나는 기술 면접 경험이 한 번도 없다. 신입으로 취업할 때에는 바로 실무에서 배우면서 성장하고 싶은 욕심에 기술 면접이라고 하기 애매한 간단한 면접을 보고 전 직장에 취업했었다. 근데 첫 기술 면접이 카카오뱅크라니.. 설레면서도 엄청난 부담감이 밀려왔었다. 주변에는 온통 백엔드 개발자들 뿐이라 검색을 통해 찾은 래퍼런스들 밖에 없어서 올바른 전략을 세우지 못했다ㅠㅠ 지금 생각해보면 당연한 게, CS 공부는 평상시에 꾸준히 했어야 했고 알고리즘 공부 또한 매주 1-2개씩이라도 꾸준히 했어야 했다. 하지만 난 새로운 프로젝트에 처음 사용해보는 구조, 기술들을 적용해야 했기에 직전 일년 간에는 그런 준비보다는 실무적인 부분에 무게를 뒀으므로 이 부분은 나의 실책이라고 생각한다. CS, 알고리..

일상/이직 과정 기록

(1) 카카오뱅크 안드로이드 하이라이트 채용 후기 - 사전 과제

1. 서류 합격퇴사 직후에 반신반의하며 서류를 제출했고, 당연히 서류 탈락할 거라 생각해서 여행 계획을 짜며 시간을 보내고 있었다. 근데 서류 합격? 신기하고 새로운 도전이라는 생각에 두근두근하기도 했다. 5월 5일에 제출했고, 5월 10일에 서류 합격 메일이 도착했다. 문자로도 왔다는데, 스팸 차단 앱이 필터링해버려서 난 뒤늦게 확인했다 ㅠㅠ2. 사전 과제 전형안드로이드는 백엔드 직군과는 다르게 사전 과제 전형이다. 코테 연습은 작년에 하다 새로운 프로젝트 들어가면서 멈춰있던 상태라, 나에게는 천만다행이였다 ㅠㅠ 사전 과제는 5월 11일 오전 10:00 ~ 5월 16일 오후 11:59 까지 진행되었는데, 석가탄신일이 끼어있어서 하루가 늘어난 것으로 보인다. 다른 포스팅들을 보면 과제 전형에 보통 5일을..

개발/트러블슈팅

[안드로이드] 안드로이드 스튜디오 PluginException

안드로이드 스튜디오 Giraffe patch3로 업데이트 후, 설정에서 experimental 기능인 new UI를 적용하다가 발생한 문제이다. 그 순간에 내 안드로이드 스튜디오는 Plugin들을 업데이트 중이였고,(Dracula, Material icon 등) 업데이트 중에 IDE가 재시작되면서 이 예외가 발생했다. 안드로이드 스튜디오를 근 3-4년간 사용하면서 윈도우 시스템 팝업으로 예외를 뿜어내는 경우는 처음이라, 계속 검색해봤지만 일반적으로 경험해보기 힘든 IDE 오류라서 해답을 찾기가 어려웠다. Plugin 업데이트 중설정 - new UI 적용안드로이드 스튜디오 재구동예외 발생 팝업 출력된 후 안드로이드 스튜디오 진입 불가 오류 메시지com.intellij.diagnostic.PluginExce..

개발/Android

[안드로이드] EXTRA_PICK_IMAGES_MAX 사용 시 주의할 점

개발을 하다 보면 이미지 업로드를 위해 갤러리 사진 선택 기능을 사용하는 경우가 있다. 내가 구현하고자 했던 기능은 이미지를 최대 N장 선택 및 리사이클러뷰에 추가, 이후 서버에 업로드하는 기능이였는데, Tiramisu 이상에서 추가된 MediaStore.ACTION_PICK_IMAGES의 MediaStore.EXTRA_PICK_IMAGES_MAX라는 Intent extra를 설정하다 문제에 직면했다. 트러블 val maxPhotoCount = MAX_PHOTO_COUNT - currPhotoCount val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply { putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, maxNumPhotos..

개발/UI & UX

[안드로이드] UI/UX - 사용자의 인지 부하를 고려하라!

이번 포스팅은 앞에 "안드로이드"라고 태그가 달려있지만, 사실 모든 분야에서의 UI/UX에 적용할 수 있는 내용입니다. 보시다시피 "사용자의 인지 부하를 고려하라"는 것이 이번 포스팅의 주제인데, 이 인지부하에 대해 알아보기 전에 우선 UI/UX 설계 시에 가장 중요한 4가지 항목들에 대해 알아보겠습니다. 🎈 UI/UX 설계 원칙 사용자 인터페이스는 사용자 경험을 기반으로 설계해야 합니다. 이 부분에 있어서는 모바일이 PC와 차이가 있는데, 일반적으로 사용자들은 PC를 사용할 때보다 휴대폰을 사용할 때 더 짧고 간결한 UX를 기대한다는 점입니다. 따라서 모바일에서는 웹보다 사용자가 더 쉽고 빠르게 사용할 수 있도록 설계하는 것이 중요합니다. 긴 로딩 시간과 수많은 광고처럼 지나친 비용을 요구하는 작업은 ..

개발/Android

[안드로이드] 클린 아키텍처 - (3) 멀티 모듈 패키지 구조

이번 포스팅에서는 안드로이드 스튜디오에서 클린 아키텍처 구조를 적용한 멀티모듈 프로젝트를 생성하는 예제를 설명하도록 하겠습니다.계층별, 클래스별 세부적인 코드들은 들어있지 않으니 우선 전체적인 구조를 이해한다는 마음으로 읽어주시면 감사하겠습니다.다음 포스팅에서는 간단한 실습 앱을 만들면서 각 클래스별 역할/세부 코드와 전체적인 플로우에 대해 알아보겠습니다. 프로젝트 설정우선 전체적인 구조로 보면 기본으로 있는 app 모듈은 Application 클래스가 위치하며, 사용하는 DI에 따라 모든 Module들이 이곳에 존재할 수도, 또는 각 계층에 존재할 수도 있습니다. ✔️ 좌측 상단 File - New - New Module을 선택합니다. ✔️ 좌측 메뉴들 중에서 Android Library를 선택한 뒤,..

개발/Android

[안드로이드] 오픈소스 라이선스 고지

개발자들은 다양한 오픈소스 라이브러리들을 사용한다.오늘은 그 중에서 내가 사용하는 여러 라이브러리들의 라이선스에 대해 알아보고, 상업적인 목적으로 사용하는 경우에 어떤 방식으로 표기하는 것이 올바른 라이브러리 사용법인지 알아보고자 한다.대부분의 라이브러리는 프로젝트의 라이선스 고지를 요구하는 경우가 많기 때문에, 이를 정확히 알아야 앱을 출시하고 운영하는데에 있어서 문제가 발생하지 않을 것이다.1. RxJava- 라이선스: Apache License 2.0- 고지 방법: 라이선스 텍스트를 포함한 복사본을 프로젝트의 라이선스 고지 문서에 포함해야 한다. 2. Retrofit- 라이선스: Apache License 2.0- 고지 방법: 라이선스 텍스트를 포함한 복사본을 프로젝트의 라이선스 고지 문서에 포함해..

개발/트러블슈팅

[안드로이드] is not abstract and does not implement abstract member public abstract fun getActionId() 오류

> Task :presentation:compileDebugKotlin FAILED e: file:///C:/Users/Minkyu/AndroidStudioProjects/Ratel/android/presentation/build/generated/source/navigation-args/debug/com/project/presentation/view/ListFragmentDirections.kt:9:16 Class 'ActionListFragmentToMemoFragment' is not abstract and does not implement abstract member public abstract fun getActionId(): Int defined in androidx.navigation.Nav..

개발/트러블슈팅

[안드로이드] Could not resolve com.android.tools.build:gradle:7.4.2 오류

멀티모듈에다 여러 써드파티 라이브러리들까지 뭉탱이로 넣은 프로젝트 설정은 너무 힘들다.. 오늘만 열개 정도는 해결한 것 같은데, 난 보통 이런 오류를 마주할 때마다 무지성 수정을 하는 경우가 많다. 특히 하루에 열댓개씩 터져나오는 경우에는 스트레스 때문에 더더욱.. 정확히 요점을 짚어내기 보다는 조금 읽고 이 부분이 문젠가? 수정 -> 아니네 여긴가? 수정 -> 반복.. 이런식이다. 하지만 아무리 갑갑해도 에러 메시지를 꼼꼼히 읽고 가려운 부분을 정확하게 긁어줘야 금방 해결할 수 있다. 아래 에러 메시지는 그 중에서 제일 해결이 오래 걸린 오류이다. A problem occurred configuring root project 'MyApp'. > Could not resolve all files for ..

최선의 최선
'Android' 태그의 글 목록