전체 글

Never stop acting like the new one on the team
Android/Development Tips

Google login errorCode 12500 인 경우

먼저 1. Firebase console -> 설정 -> 내프로젝트 항목에서 지원 이메일이 제대로 등록되어있는지 체크하기 2. Firebase console -> 설정 -> 내 앱 항목에서 SHA-1 타입의 인증서가 잘 추가가 되어있는지 체크하기 3. Debug 앱 등이 있어도 BuildType 에 맞게 들어있다면 google-services.json 에 모두 담겨 오기 때문에 크게 문제 없습니다. 4. 이모든게 모두 잘 되어 있다면 Google 사용자 인증 정보에 들어가서 OAuth 2.0 클라이언트에 해당 앱의 패키지 혹은 디버그 버전 패키지가 잘 추가되어 있는지 확인 하기 저는 4번 케이스로 보통은 google 에서 자동으로 추가시켜주는데(키에 was created auto by google 식으로..

Android/번역

LiveData, Coroutine, Flow 를 이용한 반응형 UI - Part 3

LiveData, Coroutine, Flow 를 이용한 반응형 UI - Part 1 LiveData, Coroutine, Flow 를 이용한 반응형 UI - Part 1 https://medium.com/androiddevelopers/livedata-with-coroutines-and-flow-part-i-reactive-uis-b20f676d25d7 LiveData with Coroutines and Flow — Part I: Reactive UIs This article is a summary of the t.. nanamare.tistory.com LiveData, Coroutine, Flow 를 이용한 반응형 UI - Part 2 LiveData, Coroutine, Flow 를 이용한 반응형..

Android/번역

LiveData, Coroutine, Flow 를 이용한 반응형 UI - Part 2

LiveData, Coroutine, Flow 를 이용한 반응형 UI - Part 1 Jetpack 에서 제공하는 AAC 는 안드로이드 개발에 간편한 기능들을 제공합니다. 따라서 코루틴의 작업 및 취소(Jobs and cancellation)들에 대해서 걱정할 필요가 없습니다. 단순히 작업의 범위(scope of operation)를 잘 선택해주기만 하면 됩니다. 다양한 스코프에 대해 알아봅시다! ViewModel Scope 해당 스코프는 코루틴을 사용할 때 가장 많이 사용하는 스코프중 하나입니다. 보통 ViewModel 에서 데이터 관련한 작업들이 시작되기 때문입니다. 따라서 viewModelScope extension 을 사용하면, ViewModel 의 onCleared 메서드가 호출될 때 자동으로 ..

Android/Development Tips

Proguard 로 난독화 된 코드 복호화

앱 개발을 하다보면, Proguard 를 적용하게 되고 이로인해, 간혹 crashlytics 혹은 google console 에 난독화가 적용된 코드가 전달 되는 경우가 있습니다.(AAB를 적용하게되면, Mapping 파일을 따로 추가하지 않아도 되지만, 난독화된 코드들이 Crashlytics 에 기록되는 경우가 있었습니다.) 따라서 해당 코드라인을 수정하려면 de-obfucated 가 필수 입니다! 매번 잊어버려서 이후에 참고할 수 있게 블로그에 정리해둡니다. 1. $ANDROID_SDK_DIRECTORY/tools/proguard/bin/proguardgui.sh 실행 ANDROID_SDK_DIRECTORY 는 안드로이드 스튜디오를 켜고, local.properties 의 sdk.dir 를 참고하시면..

Android/번역

LiveData, Coroutine, Flow 를 이용한 반응형 UI - Part 1

https://medium.com/androiddevelopers/livedata-with-coroutines-and-flow-part-i-reactive-uis-b20f676d25d7 LiveData with Coroutines and Flow — Part I: Reactive UIs This article is a summary of the talk I gave with Yigit Boyar at the Android Dev Summit 2019. medium.com 해당 글은 아래 링크의 번역본 입니다. 따라서 의역 오역이 있을 수도 있습니다. Part 1: 반응형 UIs 안드로이드 초기부터, 엣지 케이스가 가득한 안드로이드 생명주기 을 이해하는 것은 매우 어렵다는 것을 잘 알고 있습니다. 그래서 ..

Android/Development Tips

Bitmap, contentUri 를 Retrofit RequestBody 에 담을 때 Tips

보통 Retrofit 를 통해 RequestBody 를 만들어 서버로 보낼 때, Bitmap -> file 저장 -> file 을 RequestBody 로 변경하여 서버로 보내는 예제들이 간혹 보입니다. contentUri 도 마찬가지로 file 로 저장하고 RequestBody 로 변경하여 서버로 보내곤합니다. 그리고 코드도 올바르게 동작합니다. 하지만 해당 과정에는 파일로 저장할 필요가 없는 케이스도 있습니다. 해당 케이스의 경우 아마 위의 방식을 사용하면 이후에 파일을 삭제하는 로직 혹은 버전이 올라가면 해당 파일을 포함한 폴더를 비워주는 작업들이 필요하게 됩니다. 이런 경우 불필요한 파일 IO 작업을 생략할 수 있는 방법들이 있습니다. 1. Bitmap 의 경우 class BitmapRequest..

Android/Development Tips

Hilt 수박 겉핥기

www.youtube.com/watch?v=gkUCs6YWzEY 앞으로 Hilt 를 사용할 것 같은 느낌이 강하게 들어, 드로이드 나이츠 2020 옥수환님이 발표하신 영상 보면서 정리해봤습니다 Dependency Injection(의존성 주입) 이란 ? - 생성자 또는 메세드 등을 통해 외부로부터 생성된 객체를 전달받는 행위 의존성 주입의 특징? - 클래시간 결합도를 느슨하게 만든다 - 인터페이스 기반으로 설계되며, 코드를 유연하게 변경 가능하도록 한다 - Stub 또는 Mock 객체를 사용하여 단위 테스트를 하기가 더욱 쉬워진다 간단한 예제코드 // 의존성 주입이 없는 코드 class MemoRepository { private val db = SQLiteDatabase() fun load(id: St..

Android/번역

코루틴을 뷰에 적용하기

해당 글은 아래 글의 번역본으로 오역이 있을 수 있다는 점 미리 공유드립니다. medium.com/androiddevelopers/suspending-over-views-19de9ebd7020 Suspending over Views How coroutines can make UI programming easier medium.com 코틀린의 코루틴은 비동기적인 문제들을 마치 동기적으로 처리할수 있도록 도와줍니다. 해당 방식으로 사용되는 것은 매우 좋습니다. 그러나 코루틴을 사용하는 대부분은 동시성의 작업들 혹은 I/O 작업에만 집중하여 처리되는 것 처럼 보입니다. 코루틴은 여러 스레드(멀티 스레드)를 오가며 문제를 해결할 수 있도록 모델링 되어 있습니다. 그러나 하나의 스레드에서도 비동기 문제를 해결할 ..

Android/번역

코루틴 플로우(Flow) 읽어보기

해당 글은 아래 글의 번역본 입니다. 오역이 있을 수 있으니, 코멘트 남겨주시면 감사합니다. kotlinlang.org/docs/flow.html#sequences Asynchronous Flow - Help | Kotlin kotlinlang.org Flows ? 순차적으로 값을 배출해서, 정상적으로 완료하거나 에러를 던지는 비동기 데이터 스트림 입니다. 일시중단할 수 있는 함수는(Suspending function) 비동기적으로 하나의 값을 반환합니다. 하지만 비동기적으로 계산되어진 값을 여러개를 어떻게 반환해야할까? 이때 Flow 를 사용해아합니다. 여러값 표현하기 - List 다양한 값들은 코틀린의 Collections 을 사용하여 표현될 수 있습니다. 예를 들어 우리는 3개의 숫자를 반환하는 리..

Nanamare
TEAM > SELF