안티 패턴 안티 패턴이란? 안티패턴(anti-pattern)은 소프트웨어 공학 분야 용어이며, 실제 많이 사용되는 패턴이지만 비효율적이거나 비생산적인 패턴을 의미한다. 안티패턴은 1995년 앤드루 케이니그가 디자인 패턴을 참고하여 처음 사용한 말이다. 내가 사용한 안티 패턴 viewModelScope.launch(Dispatchers.IO) { val travelers = homeRepository.getCalculationTravelers( responseCount = 1000, startDate = getPastDateString.first, endDate = getPastDateString.second ) when (travelers) { // APIResponse가 안티 패턴으로 적용 됨 is A..
Firebase BOM dependencies { // ... // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:X.X.X') // BoM을 사용하기 때문에 Firebase들의 버전을 명시할 필요가 없다. // 파이어베이스 컴포넌트 추가 implementation 'com.google.firebase:firebase-auth' implementation 'com.google.firebase:firebase-firestore' } 파이어베이스 공식문서를 따라가다보면 디펜던시를 추가하는 부분이 있다. 여기서 파이어베이스 컴포넌트 이외에에, firebase-bom이란 것을 추가시키는데 이건 어떤 것을 의미하는..

원인 및 시도 로컬에서만 관리되는 키 값(local.properties)이 있는데, 이것은 gitignore를 통해 github에 올라가지 않는다. build.gradle에서는 local.properties에 있는 키 값을 가져와 사용을 해야 하는데, github action을 통해 빌드를 하면 local.properties파일이 없기 때문에 정상적인 빌드가 되지 않는다. 그래서 github 상에서 secret으로 값을 주입을 해서 사용해야 되는데 키 값이 제대로 주입이 안되는 현상이 발생하여 build.gradle에서 키 값을 찾지 못해 null로 리턴하는 현상을 발견하였다. A problem occurred evaluating project ':app'. > Parameter specified as ..
인앱 업데이트 표시 플레이스토어 출시 후, 앱 버전을 올리게 되면 사용자는 앱을 업데이트해야 원활한 앱 사용이 가능하다. 하지만 기본적으로는 앱내에서 업데이트를 알려주지 않기 때문에, 플레이스토어에서 직접 확인하지 않는 한 업데이트 내역을 알아차리긴 힘들다. 여기서 구글의 인앱 업데이트를 전송할 수 있도록 하는 라이브러리가 있다. AppUpdateManager이다. 이걸 활용하면 간단하게 앱 내에서 업데이트를 확인하고 그에 따라 알림을 띄워 볼 수 있다. // update check (app - build.gradle) implementation 'com.google.android.play:app-update-ktx:2.1.0' // 앱 시작 시 앱 버전을 체크함 (activity or fragment)..

GPS 상태 확인 원인 기기의 GPS가 꺼져 있을 떄, 위치 권한을 획득하여 좌표를 구할 떄 null 값이 발생해 앱이 꺼지는 현상이 있었다. GPS가 켜져 있지 않은데, 좌표를 가져오려다 보니 생기는 현상이였다. 해결 과정 해결하기 위해 위치 권한을 가져오기 전에 GPS 상태를 확인 할 필요가 있었다. 그래서 먼저, GPS 가 켜져있는지 확인하는 변수를 두었다. 그리고 앱을 시작할 때 checkGPSStatus라는 메소드를 만들어 GPS 상태를 확인했다. GPS 상태는 LocationManager의 isProviderEnabled(LocationManager.GPS_PROVIDER)를 통해 확인 할 수 있었다. isGpsOn 변수를 이용하여 위치를 가져오기 전 isGpsOn 값을 확인한다. 만약 GPS..
원인 앱을 플레이스토어에 게시하고 직접 다운로드를 받아 확인하던 중, 카카오맵이 뜨지 않는 현상을 발견하였다. 구글 플레이 개발자 콘솔에서 Google play app signing 기능을 활성화 시켰다면 구글 플레이에 앱이 릴리즈되기 전에 개발자의 로컬 개발 환경에서 릴리즈 키스토어의 시그너쳐가 삭제되고 구글 서버에 저장되어 있는 사이닝키의 시그너쳐로 교체된다. 그렇기 때문에 이 사이닝키로 생성한 키해시 또한 등록해줘야 되는 것이 원인이였다. (구글 키로 사용한 이유는 내 개인 키스토어는 잃어버리거나, 비밀번호를 까먹거나 하는 휴먼 에러때문에 서버에 저장되는 구글 키를 사용) 해결 과정 구글 플레이 콘솔에 있는 SHA-1키를 가져와서 카카오 키 해시로 등록을 해주었더니 해결 되었다. 카카오 키해시는 b..
일일 회고 최종 발표 D - 1 !! 마지막까지 버그 수정하고 배포하느라 정말 바쁘다!! 마지막까지 힘내자! 오늘의 키워드 인앱 업데이트 인앱 업데이트 표시 구글 플레이 디펜던시에서 인앱 업데이트를 확인 할 수 있도록 지원해준다. AppUpdateManager 활용 // update check implementation 'com.google.android.play:app-update-ktx:2.1.0' // 앱 시작 시 앱 버전을 체크함 private fun checkNewVersion() { val appUpdateManager = AppUpdateManagerFactory.create(requireActivity()) homeViewModel.checkNewVersion(appUpdateManager..
일일 회고 프로젝트 정리 및 발표 준비로 바쁘다..ㅎㅎ 이제 3일 밖에 남지 않았다 발표준비를 잘해서 유종의 미를 거둬보자 오늘의 키워드 트러블 슈팅 https://aaapple.tistory.com/133 [Android] 앱 출시 후 카카오 맵이 보이지 않는 현상 원인 앱을 플레이스토어에 게시하고 직접 다운로드를 받아 확인하던 중, 카카오맵이 뜨지 않는 현상을 발견하였다. 구글 플레이 개발자 콘솔에서 Google play app signing 기능을 활성화 시켰다면 구 aaapple.tistory.com

일일 회고 프로젝트 정리 및 발표 준비로 바쁘다..ㅎㅎ 이제 3일 밖에 남지 않았다 발표준비를 잘해서 유종의 미를 거둬보자 오늘의 키워드 트러블 슈팅 https://aaapple.tistory.com/134 [Android] GPS 상태 확인 GPS 상태 확인 원인 기기의 GPS가 꺼져 있을 떄, 위치 권한을 획득하여 좌표를 구할 떄 null 값이 발생해 앱이 꺼지는 현상이 있었다. GPS가 켜져 있지 않은데, 좌표를 가져오려다 보니 생기는 현상이 aaapple.tistory.com
일일 회고 정말 일주일 밖에 안남았다... 시간이 참 빠르다... 최종 발표 준비를 잘 해보고 유종의 미를 거둬보자.. 오늘의 키워드 기술 면접 문답 작성 Sealed class란? 여러 자식 클래스들이 하나의 부모 클래스를 상속받았다고 할 때, 컴파일러는 어떤 클래스들이 부모 클래스를 상속받았는지 알지 못한다. 그래서 이 문제를 해결하기 위해 sealed class라는 개념이 나왔는데 sealed class는 자신은 추상클래스이고, 자신을 상속받는 자식 클래스의 종류를 제한하는 특성을 가지고 있다. 컴파일 시 sealed class의 자식이 어떤 것이 있는지 알 수 있다는 것이다. 자식 클래스의 종류를 제한하기 때문에 다음과 같은 특성이 있다. 실드란 '봉인된'이라는 의미로 무언가 안전하게 보관하기 위..