본문 바로가기

[Android] 앱 검토 때 필요한 로그인 정보 추가하기 요즘 플레이스토어에서 수동으로 앱을 검토하는 방식을 도입한 것 같다. 이것 때문에 리젝을 받은 이슈도 있어서 일단 관련해서 정리하고자 한다. 누구나 사용이 가능하다면 이것을 설정하지 않아도 되지만 그렇지 않다면 아래의 과정을 통해 필요한 로그인 정보와 테스트 안내를 제공해줄 수 있다. 1. [특정 앱] - [정책] - [앱 콘텐츠] - [앱 액세스 권한]으로 이동 2. 아래 화면에서 2번째 옵션 활성화 3. 이름에는 시나리오에 해당되는 이름을 적고 아래에 이름, 전화번호에는 아이디를 비밀번호에는 비밀번호를 적어준다. 추가적으로 설명이 더 필요하다면 다른 안내라는 곳에 적어주면 된다. -끝-
[Android] 백그라운드에서 클립보드 이용 시 주의사항 Android Q(10) 이상부터는 백그라운드에서 클립보드에 대한 데이터를 받아올 수가 없다. 기존 프로젝트에선 잘 돌아갔던 코드인데 타겟 SDK를 올리면서 클립보드 정보가 null로 오는 이슈가 발생했다. 원인을 찾아본 결과는 다음과 같다. 링크 설명에 의하면 앱이 IME 편집기이거나 혹은 현재 자신의 앱이 포커싱되어 있는 경우에만 클립보드 내용에 접근할 수 있다. 따라서 기존에 백그라운드에서 클립보드를 접근하는 로직이 있었다면 지금은 그렇게 구현하면 안 되고 해당 내용이 필요할 때 액티비티를 띄워 포커싱을 가져온 다음 클립보드를 주는 형태로 구현할 수는 있다. 포어그라운드일 때랑 백그라운드일 때를 구분해서 동작하게 하려는 의도는 뭔지 모르겠지만 구현상으로는 좀 로직이 더럽게 구현되는 것 같아 아쉽긴 ..
[개발] 개발자가 성장하려면?(개인적인 의견) 5년 동안 안드로이드 개발자로 일하면서 성장하게 된 계기와 느꼈던 점을 정리하려고 한다. 돈에 포커싱이 맞춰져 있는 것은 아니고 실력적으로 이렇게 해야 늘고 개발자 수명도 길게 가져갈 수 있지 않을까라는 생각으로 정리해보았다. 1. 기술 부채는 자산이 아니다. 다른 분야(부동산, 주식 등등)에서의 부채는 자산일 수도 있다. 하지만 개발 분야만큼 기술적 부채 혹은 TODO 리스트가 많아지는 것은 최악이라고 생각한다. 후에 저 기술적 부채 혹은 TODO 리스트 때문에 다음 스텝으로 못 넘어가거나 혹은 엄청 오래 걸리는 상황이 발생할 수도 있다. 처리해야할 것들은 최대한 빨리 처리해주는 것이 좋다. 2. 사이드 프로젝트를 하자. 안정성 혹은 시간적인 문제 때문에 실무에서 신기술 혹은 트렌디한 기술을 적용하기란..
[Android] 카카오 SDK 설치 안 되는 이슈(Fox 버전 이후) 프로젝트를 새로 파야해서 카카오 SDK를 연동하기 위해 가이드 문서대로 했는데 계속 SDK를 못 찾는다고 하는 상황이 발생했다. 분명 Project gradle과 app gradle 둘 다 제대로 입력했었는데 말이다...... 그래서 알아보니 Android Studio Fox 버전 이후부터 해당 상황이 발생한 것으로 확인되었다. 방법은 settings.gradle에 repositories에 카카오 저장소를 추가하면 된다. 참고 : https://devtalk.kakao.com/t/sdk/118212/2
[Android] MVP 패턴에서 각각의 역할 회사 면접에서 면접관으로 들어가게 되면 대부분 물어보는 것 중 하나가 MVC, MVP, MVVM 중 하나인 것 같다. 본인들 포트폴리오에도 써 있는 부분이기도 하기 때문에 검증을 하려고 하다보니 물어보게 되는 것 같은데... 생각보다 각각의 역할에 대해 제대로 대답한 지원자들이 없었던 것 같다. 신입들은 물론이고 그래도 년차가 쌓이신 분들도 간혹 잘못 알고 계신 분들이 많은 것 같아 정리하고자 한다. M(Model) - 비즈니스 로직 담당 - 데이터 처리 및 가공 P(Presenter) - UI 비즈니스 로직 담당 - 데이터 처리 혹은 가공이 여기서 일어나면 안 됨 - 데이터가 필요한 경우 : View로부터 입력을 전달받음 -> 비즈니스 로직이 필요한 경우 Model에 요청 -> UI 비즈니스 로직에 따..
[Android] 멀티스레드에 대한 개인적인 생각 Java를 공부하다보면 Thread라는 녀석을 볼 수 있다. 공부할 당시에는 '이게 왜 필요하지?'라는 생각이 처음에 들었었고 또 이걸 실제로 적용을 어떻게 시키는지에 대해서도 이해가 잘 안 되었던 것 같다. 그래서 첫 회사에서 멀티스레드로 구현을 하면서 많은 이슈(에러 및 버그)를 겪었었고 그 과정에서 정리할 수 있었던 포인트에 대해 정리해보려고 한다. 아마 신입들한테 도움이 되지 않을까 싶다.(스레드 고수들은 굳이 안 읽어도 됩니다...) 1. 멀티스레드는 왠만하면 피해라. 이제 막 신입 아니면 스레드에 익숙치 않은 개발자라면 특히 해당된다. 멀티스레드로 에러가 발생한다면 사수 없이 찾기란 거의 불가능에 가깝다고 생각한다. 경험이 좀 쌓이고 나서 해도 늦지 않다...... 2. 라이브러리를 잘 활용하..
[Android] 로그에 대한 개인적인 생각 개발자라면 업무 중에 무조건 볼 수 밖에 없는 것이 로그다. 개발을 하면서 로그를 좀 더 현명하게 사용할 수 있지 않을까라는 생각 때문에 이 글을 쓰게 되었다.(안드로이드 기준이지만 다른 분야에도 적용가능한 부분일 듯......) 로그에 대해 아무런 생각이 없었을 때 - 단순하게 디버깅을 위한 용도로 많이 사용 - 안드로이드의 Logcat에서 내가 찍은 Debug 로그와 죽을 때 받는 Error 로그들만 주로 확인. 아마 대부분 초보 개발자 분들이나 혹은 구현이 목표인 개발자 분들은 로그를 위와 같이 생각하고 대하지 않을까 싶다. 하지만 서비스를 운영하고 유지보수하게 되면 위와 같이 생각할 경우 매일 버그와 뒹굴다가 지치는데 많은 힘을 쏟게 되는 경우가 흔한 것 같다.(정말 잘 개발하시는 분이 아니고서야..
[Node.js] 기존 프로젝트에 Swagger 연동하기 1. express용 swagger 모듈 설치 > npm i swagger-jsdoc swagger-ui-express --save-dev npm i swagger-jsdoc swagger-ui-express --save-dev 2. app.js 수정(api-docs 대신에 다른 걸 써도 됩니다.) 이러면 세팅 끝. const { swaggerUi, specs } = require('./modules/swagger'); ... app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(specs)); ※ 추가 - swagger.js 설명 definition: { openapi: "오픈 api 버전", // 정보 info: { title: '제목', version: '..