분류 전체보기
-
Android) ImageURL -> Bitmap 으로 변경하기 feat) HttpURLConnection, CoroutinesAndroid 2021. 6. 24. 16:26
String to Bitmap ※조건※: retrofit이나 외부 라이브러리를 사용하지 않고 통신을 구현해야 합니다. HttpURLConnection 안드로이드는 서버와 통신하기 위한 방법으로 HTTP 통신과 Socket 통신이 있습니다. HTTP 통신은 소켓을 이용한 TCP/IP 통신을 기반으로 수행되지만, 거기에 HTTP 규약이 추가된 형태로 수행됩니다. HTTP 통신은 URL 접속을 통해 데이터를 읽어오는 방법입니다. 안드로이드의 특성상 외부 DB에 직접 접근할 수가 없도록 되어 있어 중간 매개체인 WEB을 활용해야 합니다. Caution 그런 다음 바로 위의 loadImage 함수를 사용하여 bitmap을 적용하면 아래와 같은 에러가 발생합니다. 이유는 IO 작업을 한 동일한 스레드에서 바로 UI..
-
Android) Navigation Component IllegalStateException, IllegalArgumentException 예외Android 2021. 6. 10. 20:43
Navigation Component를 사용한 앱을 배포했다가, 다음과 같은 예외를 만나게 되었습니다. java.lang.IllegalStateException... java.lang.IllegalArgumentException... 일단 검색을 해본 결과 navigate()를 빠르게 2번 호출, 즉 광클하면 이런 예외가 발생하는 것 같습니다. 1. graph.xml내의 fragment에 종속된 Action을 Global Action으로 바꾸기 네비게이션 그래프에서 선언된 action을 전역 action으로 바꾸는 것입니다. (저는 이 방법이 통하지 않았습니다.) 2. RxJava의 debounce 오퍼레이터 이용하여 중복된 이벤트 방지하기 중복 클릭을 예방하기 위해 debounce 오퍼레이터를 사용하는..
-
Android) 안드로이드 고유 식별자 뭘로할까?Android 2021. 6. 7. 23:51
앱 설치 시 사용자 디바이스의 행동을 추적하기 위한 Device Unique Key를 생성하는 여러 방법들을 알아보려고 합니다. 1. Secure Android ID val androidId = Settings.Secure.getString(context.contentResolver, Settings.Secure.ANDROID_ID) 디바이스가 최초 부팅 시에 생성됨 초기화 전까지는 삭제 되지 않고 저장되어 있어 디바이스 식별에 유용 기기를 초기화하면 값이 바뀜 READ_PHONE_STATE 권한 필요 2. Serial Number android.os.Build.SERIAL로부터 값을 받아 올 수 있음 안드로이드 2.3부터 사용 가능 전화 기능이 없는 디바이스의 경우 유일한 값을 반환하지만, 전화 기능이..
-
핀테크) 망분리란 무엇인지 알아보자핀테크 2021. 6. 1. 22:35
예전에 망분리란 용어를 듣고 망을 분리하면 불편해서 개발을 어떻게 하지?라고 생각했던 적이 있었습니다. 망분리 설명에 앞서 실생활에서 간단하게 보안을 위해 실천되고 있는 것을 살펴보자면, 백화점 내 고객용 매장 통로와 직원용 내부 통로를 나눠, 고객은 백화점 내 매장만 오갈 수 있고, 직원은 사무실과 창고를 오갈 때는 내부 통로 이용, 매장으로 가려면 매장 통로로 오가며 백화점 보안을 유지하는 것이 있겠습니다. 망분리(Network Separation) 말 그대로 인터넷 망 / 업무 망을 분리하는 것을 의미합니다. 망(network)에는 인터넷에 접속되는 외부 망(WAN, Wide Area Network)과 사내 서버/PC가 연결되는 내부 망(LAN, Local Area Network)이 포함됩니다. 즉..
-
Android) 앱 서명 키 안전하게 보안하는 방법Android 2021. 5. 30. 13:15
이전 포스팅에서 release 모드에서 앱을 테스트해보는 방법을 알아봤습니다. signingConfigs { release { storeFile file('keystore 경로') storePassword '비밀번호' keyAlias 'keyAlias 이름' keyPassword '비밀번호' } } 기본 방법은 위와 같은데, 이처럼 keystore 정보가 노출된 채로 Git이나 외부에 공유된다면 악용될 가능성이 있거나 보안상 좋지 않겠죠? 그래서 별도의 파일을 생성해서 keystore 정보를 관리하는 것을 권장하고 있습니다. 1. 프로젝트의 루트 디렉토리에 keystore.properties 파일을 생성합니다. 2. keystore.properties 파일 안에 keystore의 정보를 넣어줍니다. //..
-
Android) logcat의 ResourceType Warning 지우는 방법Android 2021. 5. 26. 12:49
진행하던 프로젝트의 배포 주기가 다가옴에 따라 릴리즈를 하고 테스트를 하고 있었는데, 언제부턴가 위와 같은 warning들이 무수히 많이 logcat에 노출되었습니다. Solution Android Studio의 Run -> Edit Configuration Installation Options -> Deploy를 "Default APK"로 바꿔줍니다. 저 같은 경우는 Deploy가 app bundle로 설정되어 있어 있었고, 위의 방법으로 해결할 수 있었습니다.
-
Android) Firebase Analytics 알아보기Android 2021. 5. 24. 19:13
다양한 analytics SDK(Google Analytics, Firebase Analytics, Yahoo Flurry, Facebook)가 분석을 위해 제공되고 있는데, 그중 하나인 Firebase Analytics에 대해 글을 작성해보겠습니다. Firebase Analytics 기본적으로 무료이고 모바일 중심. Big Query는 유료. 퍼넬 분석 : 퍼넬 분석은 깔때기 분석으로 사용자 가입에서부터 최종 목표인 주문 결제까지 이루도록 단계별로 이탈률을 분석하여 서비스를 개선하고, 이탈률을 줄이는 데 사용. 코호트 분석 : 데이터를 집단으로 나누어서 분석하는 방법으로 일일 사용자 데이터(DAU: Daily Active User) 그래프가 있을 때, 일일 사용자가 연령별로 어떻게 분포가 되는지 등을 ..
-
Android) Debug 모드에서는 작동하는데 Release 모드에서 Crash 발생할때 (Debug, Release 차이점)Android 2021. 5. 23. 14:48
배포한 앱이 긴 심사기간을 거쳐 어제 출시가 되었습니다. 디버그 모드에서 테스트도 여러 번 해봤기 때문에 별 걱정 없이 기쁜 마음으로 앱을 설치하고 켜는 순간 엥? 키자마자 앱이 죽어버렸습니다.. 즉, 디버그 모드에서는 작동하지만, 릴리즈 모드에서는 앱이 죽는다.. 어제 하루종일 삽질한 내용들을 정리해보겠습니다. 디버그 모드 실행파일에 디버깅 정보를 삽입하여 언제든지 디버깅을 할 수 있도록 하며 Debug 서브 폴더에 실행파일을 만들어줌. 디버깅 정보가 들어가 있기 때문에 실행파일 상태를 확인할 수 있다. 디버그 빌드와 릴리즈 빌드에서 서로 실행 결과가 다른 경우 -> 특히 디버그 빌드에서는 괜찮은데 릴리즈 빌드에서만 오류가 발생하여 앱이 죽는 경우가 있는데, 이런 경우는 대부분 메모리가 깨진 경우 발생..