본문 바로가기

코틀린43

[Android-Compose] 컴포즈 NavHost에서 ViewModel 공유 예제를 통해 알아보기 - Screen끼리 공유 이번 포스팅은 Compose에서 NavHost 사용 시 다른 Screen끼리 ViewModel을 공유해야 할 상황이 생긴다.이때 ViewModel을 공유하는 방법을 포스팅해보겠다. 해결법을 바로 보고 싶으신 분은 결론으로 넘어가면 된다!# 예제이번 예제는 ScreenA와 ScreenB가 있고 같은 ViewModel를 사용해 데이터를 공유하는 상황이다.또한 DI 라이브러리를 사용 안 하는 상황프로세스를 자세히 표현하자면 아래와 같다.## Before 코드### MainActivityclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedI.. 2024. 12. 7.
[Android] 안드로이드 중요 값 숨기기 - local.properties를 사용하여 키 관리하기 예제(Kotlin) / Unresolved reference: BuildConfig 해결 방법 개발을 하다 보면 API키 값이나 중요 값등을 숨기고 싶을 때가 있다. 그럴 때는 local.properties를 사용하면 간단하게 숨김이 가능하다. 이제 차근차근 알아보자! ✅ 깃을 사용한다면. gitignore에 /build , /local.properties 이 두 가지가 들어가 있다고 가정하고 시작해 보겠다!# 사용방법아래 예제에서는 API_KEY값을 숨기는 예제를 해보겠다.## local.properties 변수 값 설정우선 가장 먼저 해야 할 것은 local.properties파일에 숨기고 싶은 값을 키 - 값 형식으로 작성해 준다. local.properties>API_KEY = "12345678910" ## build.gradle.kts(app) 키 값 불러오기앱 수준의 gradle에서 .. 2024. 8. 31.
[오류] app:minifyReleaseWithR8 FAILED / AGPBI: {"kind":"error","text":"Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in 이번 오류 포스팅은 debug 모드로 빌드했을 때는 문제가 없었는데 release 모드로 빌드하니 오류 발생에 대해 해결방법을 포스팅해 보겠다. 물론 다른 경우에 따라 이 해결방법이 아닐 수도 있지만 나에 경우는 이 오류였기 때문에 혹시나 나랑 같은 분이 계실까 봐 공유를 한다.# 오류 발단기존 프로젝트에서 Active Build Variant를 release로 바꾸고 빌드하니 아래와 같은 오류가 발생했다. AGPBI: {"kind":"error", "text":"Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /Users/(폴.. 2024. 6. 19.
[Kotlin-Coroutine] coroutine Mutex(상호배제) 예제를 통한 사용법 이번 포스팅은 이전 개발자분이 만들어 놓은 코드 분석 중 처음 접한 Coroutine의 Mutex를 사용한 코드가 있어 알아둬야겠다고 생각해서 적어본다. 우선 아래 정리를 통해 Mutex대해 알아보자!# Mutex란? (특징)- Mutual Exclusion의 약자로 "상호 배제"를 의미한다. ("상호 배제"에 관해서는 시간이 난다면 따로 블로그 포스팅을 해야겠다..) - 여러 코루틴이 동시에 공유 자원에 접근하지 못하게 하여 데이터 일관성을 유지시켜 준다. - 한 코루틴이 Mutex를 획득하면, 다른 코루틴은 해당 Mutex가 해제될 때까지 대기하게 된다.# Mutex 사용 이유그럼 Mutex는 왜 사용하냐? 위 Mutex에 특징과 거의 비슷한데 간단하게 정리하면 이유는 아래와 같다여러 코루틴이 동시에.. 2024. 6. 9.
[Android] 네트워크 보안 구성 SSL 핀셋(pinset) 검증 SHA-265 키 구하기 - 공개키 핀닝 (android network-security-config pin-set key setting) SSL Pinning을 해야하는 이유 with android Glide javax.net.ssl.SSLHandshakeException: Pin.. 이번 공부노트는 안드로이드 SSL Pinning 할 때 여러 가지 방식이 있지만 Network Security Configuration 방식에서 pin-set SHA-265 Key를 구하는 방법을 포스팅해 보겠다. 나도 회사에서 받은 프로젝트에 Network Security Configuration로 SSL Pinning이 되어있어서 키 값을 구해야 하는 상황이었다. 구글링을 해보면 전부 Gradle를 통해서 다른 SHA-265 Key 즉 D9:8F:58~~~~ 이런 식으로 되어있는 키 값 구하는 법 밖에 안 나와서 나처럼 pin-set SHA-265 key를 구하고 싶은 사람을 위해 포스팅을 하기로 결정했다. 본 포스팅은 SHA-265 key 값을 구하는 게 주목적이기 때문에 SSL Pinning을 해.. 2024. 3. 20.
[디자인패턴 - 전략패턴] 전략패턴이란? 예제를 통해 이해하기 (Strategy Pattern) for Head First Design Patterns (헤드퍼스트 디자인 패턴 참조) 이번 포스팅을 시작하기 앞서 개념과 포스팅의 전체적인 내용은 한빛미디어 / 에릭 프리먼 , 엘리자베스 롭슨 / 헤드 퍼스트 디자인 패턴(개정판)을 참조했음을 밝히고 시작하겠다. # 전략패턴(Strategy Pattern)이란? 전략 패턴 ( Strategy Pattern ) 은 알고리즘 군을 정의하고 캡슐화해 서 각각 의 알고리즘 군을 수정해서 쓸 수 있게 해 줍니다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있습니다. 위에서 나오는 말은 책에서 가져온 전략패턴의 사전적 정의이다. 나는 처음에 저런 말을 듣고 전혀 이해가 가지 않았다. 그러므로 디자인패턴을 전혀 모른 상태에서 저 내용이 이해가 안 가는 건 정상이니 너무 걱정 안 해도 될 것이다. 이제 아래에서 예제를.. 2024. 1. 31.