728x90
반응형
- [ pinslog/Log.daily() ]android.view.WindowManagerGlobal: findViewLocked / android memory leak 해결하기 (근데 이제 fragment 를 곁들인)2022-08-06 00:22:40android.view.WindowManagerGlobal: findViewLocked 🥺 activity 가 finish 상태일 때 dialog 를 dismiss() 하려고 할 때 생기는 오류 에러 발생 상황 로그인 화면에서 로그인 저장 체크박스에 체크를 하고 로그인 버튼을 바로 누르는 경우 체크를 하면 CustomToast 가 뜬다. 로그인 버튼을 누르면 홈 화면으로 이동한다. (LoginActivity.finish()) 로그아웃하는 경우 로그아웃을 클릭하면 한번 더 확인하는 CustomConfirmDialog 가 뜬다. ‘네’ 를 선택하면 로그아웃 되어 로그인 화면으로 이동한다. 해결 방안 💡 activity 가 finish 되기 전에 dialog 를 dismiss 해야한다. 첫번째 해결책 acti..
- [ pinslog/Log.daily() ]commit 복구하기 / java list 자르기2022-08-04 23:42:17git reset 을 reset 하기 (commit 복구하기) 개발 브랜치에서 작업을 하고 있었는데 다른 요청이 들어왔다. 우선 순위가 더 높은 작업이었기 때문에 지금 하고 있던 작업을 다른 브랜치에 옮겨 놓고, merge 하기 전, 아무튼 기준이 되는 포인트로 돌아가서 깨끗한 상태에서 작업을 하려고 했다. 옮기고..reset 명령어를 사용해 원하는 포인트로 돌아갔다. 실시간으로 작업해둔 것들이 사라지는 것을 확인했다. 그리고 옮겨놓은 브랜치로 이동했는데... 변경한 작업 이력이 모두 사.라.졌.다! 음? 휴가에서 갓 돌아온 나..아직 시차적응이 안됐나보군(집콕했죠?) 하며 reset 을 reset 하는 방법을 찾아봤다. git reflog 명령어를 통해서 git 이력을 확인할 수 있다. 돌아가고 싶은 ..
- [ pinslog ]10개월차 주니어 안드로이드 개발자의 회고록2022-08-03 23:09:42들어가며 어느덧 입사한지도 10개월 차에 접어들었습니다. 집-학원 집-학원 하던 게 엊그제 같은데 어느새 집-회사 집-회사 하는 직장인이 되었네요. 감회가 새롭습니다. 취업 준비를 하던 당시 어떤 분의 회고를 읽고 '나도 입사하면 글 써야지'라고 마음을 먹은 것도.. 엊그제 같은데.. 시간이 벌써 이렇게나 흘러버렸습니다. 하지만 늦었다고 포기하는 것만큼 아쉬운 것이 없겠지요? 이제라도 그동안 신입 개발자로 일하며 느꼈던 것을 정리해보도록 하겠습니다. 누구세요? 먼저 짧게 제 소개를 해보자면 저는 스마트 헬스케어 스타트업에 재직중인 안드로이드 개발자입니다. 입사와 동시에 기존 레거시 프로젝트를 토대로 자사 신규 플랫폼을 개발하는 프로젝트에 투입이 되었고 현재 실서비스를 앞두고 있습니다. 작고 소중한 개발팀..
- [ Android/Android ]fastlane 으로 Android 앱 배포 쉽게 하기 (feat. windows)2022-07-05 23:40:38들어가며 개발이 어느정도 마무리가 되면..(끝은 없으니까요 ^_ㅠ?) 사용자를 만나기 위한 준비를 해야한다. 여차저차 준비를 하고 내 자식같은 아이가 세상에 나오면.. 높은 확률로 다시 고쳐야할 일이 생긴다. 수정하고 내놓고 수정하고 내놓고.. 안드로이드 앱의 경우 출시 및 출시 준비 과정은 다음과 같다. (간략하게 작성한것으로 상이할 수 있습니다.) 1. 출시 전 속성 지정 및 설정 - debuggable = false (안하면 앱이 안올라가는거 아시죠) - app signing (빌드할 때 보통 자동으로 되지만 일단 넣었다.) - versionCode++ - versionName 지정 2. buildType 지정 후 build 진행 3. play console 에서 업로드 진행 4. 내부 테스트용 앱..
- [ Android/Android ]Android Jetpack Compose 맛보기2022-07-03 23:03:42Android Jetpack Compose 네이티브 Android UI를 빌드하기 위한 최신 도구 키트 Jetpack Compose 선언적 UI 방식 💡 상태를 UI 로 변환한다. UI는 변경할 수 없고 한번 생성하면 업데이트가 불가능하다. 앱 상태가 바뀌면 새로운 상태를 새로운 표현으로 변환하는 것 ⇒ 동기화 문제가 완전히 해결된다. 문장을 읽었을 때는 상태가 바뀌면 다시 그림을 그리겠다는 것으로 이해되어 비효율적이지 않을까 생각했다. 하지만 compose 는 지능적이기 때문에 변경되지 않은 요소의 작업은 건너 뛴다고 한다. 따라서 코드는 특정 상태에 대한 UI 형태를 설명할 뿐 생성 방법을 지정 하지는 않겠다는 것이다. Declarative UI Toolkit 요즘의 앱들은 데이터가 동적이고 실시간으..
- [ 배경지식/배경지식 ]Class | Object | Instance | IoC | DI2022-07-02 23:30:05Class, Object, Instance 👉🏻 Class : 설계도 👉🏻 Object : 실체화가 가능한 것 👉🏻 Instance : 실체화 된 것 예를 들어 내가 집을 꾸미기 위해 가구를 사자! 라고 한다면 이말을 들은 사람은 어떤 가구? 라고 되물을 것이다. 가구는 추상적인 것으로 ‘개념'에 가깝다. 그래서 나는 의자를 살것이라고 대답한다. 의자를 주문하면 실제 의자가 집으로 배달되어 올테니.. 의자는 실체화가 가능한 Object 가 된다. 그렇게 구입해 도착한 내 눈 앞의 의자는 실제 세계에 존재하는 것이 된다. 이때의 의자는 instance 가 된다. IoC (Inversion of Control), 제어의 역전 집에 가구를 배치한다고 생각해보자. (위에서 의자를 예로 들었기 때문에 여기서도 의..
- [ Android/Android ]안드로이드 애플리케이션 설계 패턴2022-06-18 14:35:56MVC 패턴 💡 애플리케이션 구조를 Model, View, Controller 세개의 측면으로 관심사를 분리한다. 개발을 배울 때 가장 먼저 배운 패턴이다. 그렇기 때문에 이해하기도 가장 쉬웠다고 생각한다. 안드로이드에서 activity, fragment 가 view 역할을 한다. 동시에 controller 의 역할을 하기도 한다. 장점 직관적이다. 위에서 이해하기 쉬웠던 이유가 바로 이 장점 때문이 아닐까? 코드를 파악하기 쉽다. 단점 (안드로이드에서는) 위에서 말했듯 activity, fragment 가 뷰와 컨트롤러의 역할을 겸하다 보니 앱의 규모가 커지면 수천줄의 코드가 작성되어 유지보수가 힘들어진다. 컨트롤러는 뷰와 모델에 의존적이고, 뷰는 모델에 의존적이기 때문에 결합도가 높아 유닛 테스트가 ..
- [ Android/TroubleShooting ][android] reCAPTCHA 사용하기 : Invalid Dynamic Link - Blocked 이슈2022-06-13 22:35:06🛠 나는 어쩌다 삽질을 하게 되었나 보안 관련 기능 추가를 위한 논의 끝에 reCAPTCHA 를 검토해보자는 말이 나왔다. 모르는 것을 처음할 때는 모름지기 공식문서가 최고라는 믿음으로 android reCAPTCHA 를 검색해 안드로이드 공식문서로 들어갔다. reCAPTCHA 로그인 몇번 실패하면 로봇이 아님을 밝히라며 우리에게 수많은 신호등과..자전거를 고르게 했던 바로 그친구! reCAPTCHA는 스팸 및 남용으로부터 사이트를 보호하는 무료 서비스입니다. 고급 위험 분석 기술을 사용하여 인간과 봇을 구분합니다. 동작 방식 reCAPTCHA 사이트에서 사이트 키와 비밀 키를 발급 받는다. (사이트 키는 클라이언트 쪽에서 사용되고 비밀키는 서버에 있어야한다.) 사이트 키를 사용해 reCAPTCHA가 생..
728x90
반응형