본문 바로가기

Android

(38)
Android Main Thread [안드로이드 공식문서] 프로세스 및 스레드 개요 | App quality | Android Developers 프로세스 및 스레드 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 애플리케이션 구성 요소가 시작되고 애플리케이션에 실행 중인 다른 구성 요소가 developer.android.com 메인 스레드 기본 동작 메인 스레드는 프로세스가 시작되어 프로세스의 시작점인 main() 함수에서 실행됩니다. 즉, 메인 스레드가 생성되고 시작되는 곳을 main() 함수라고 부릅니다. 메인 스레드는 다른 스레드를 생성하고 관리하는 역할을 수행합니다. 안드로이드 메인 스레드 안드로이드의 어플리케이션을 실행하면 어플리케이션에 실행 중인 다른 구성 요소가 없다면 안드로이드 시스템은 ..
Anroid REST API 연동기 [GET] 드디어 안드로이드에서 REST 서버와의 연동이 끝났습니다!! 처음엔 그냥 안드로이드와 MySQL을 연동하려고 했던건데 하다보니까 Node JS, Docker, Nginx를 사용하게 됐고 모두 처음 사용해 보는거라 너무 어렵고 머리 아팠지만 다 하고나니까 너무 뿌듯하고 눈물이 날거 같네요 😭 😭 😭 😭 우선 저는 안드로이드와 MySQL을 연결하기 위한 백엔드를 구축하기에 앞서 NodsJS로 리버스 프록시를 하기 위해 웹 서버로 Ngix를 사용했습니다. 이제 GET, POST, PUT, DELETE 차례대로 코드를 하나 하나 살펴보면서 리뷰 해볼겠습니다. 이번장은 GET Process에 관한 글 입니다. 도커에 대한 내용은 다른글을 참조해 주세요 Docker + Node.js + Nginx 4 이번엔 MyS..
Android Gallery Permission https://chanho-study.tistory.com/48 Android Runtime Permission Permission 퍼미션은 AndroidManifest.xml에 들어가는 설정입니다. 안드로이드 컴포넌트를 이용한 앱과 앱 사이의 연동이 빈번한데, 특정 앱이 을 부여했다면 그 앱을 이용하는 앱은 을 선언해야 합니다. chanho-study.tistory.com 이전 글에서 안드로이드 RunTime Permission에 대해 알아 봤으니 이제 프로젝트에 적용해 보겠습니다. 가장 먼저 갤러리에 접근하기 위한 권한을 선언해 줍니다!! AndoridManifest.xml 외부 저장소에 대한 읽기와 쓰기 권한을 요청하기 위한 상수 배열을 정의 해줍니다. class Constants { compani..
Android Runtime Permission 안드로이드 어플리케이션은 예전엔 AndroidManifest.xml 파일에 권한을 명시해주기만 하면 됐지만 Android 6.0(API 수준 23) 이상의 경우 안드로이드 정책에 따라 사용자가 직접 권한을 허용 해야 합니다. Test App에서 Target APP의 컴포넌트를 실행한다고 가정했을 때, Target App에서 해당 컴포넌트의 을 부여했다면 testApp에서 해당 컴포넌트를 실행하기 위해선 반드시 을 선언해 사용해야 합니다. [Android Runtime Permission 공식 문서] 런타임 권한 요청 | Android 개발자 | Android Developers 런타임 권한 요청 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 모든 Android 앱은 액세스..
OkHTTP httpLoggingInterceptor 이번엔 OKHttp Logging Interceptor를 사용하여 HTTP 통신 로그를 기록하는 방법 입니다. 단순히 Retrofit 을 사용해 네트워크 통신만 하려 했는데 하면 할 수록 다양한 방법들을 접하는게 너무 잼있네요 okHttp3 logging interceptor을 사용하기 위해 Gradle Dependencis에 아래 빌드 종속 항목 중 okhttp 관련 종속성을 추가해주세요. implementation 'com.squareup.okhttp3:logging-interceptor:4.9.2' 메소드를 그대로 사용해도 되지만 제가 원하는 형태대로 메시지를 만들고 싶어서 오버라이딩 해줬습니다. private fun httpLoggingInterceptor(): HttpLoggingIntercep..
Retrofit Network Time out 안드로이드에서 서버로 이미지를 전송하기 위해 REST API로 통신 하는 과정에서 시간이 오래 걸려 Android Client에서 connection Error로 인식해 오류가 발생 했습니다. Retrofit은 기본적인 네트워크 타임아웃 설정을 가지고 있지만 다양한 상황에서 기본 타임아웃 시간을 변경해야 합니다. Retrofit의 기본 타임아웃 시간 설정값 Connection timeout : 10초 Read timeout : 10초 Write timeout : 10초 Connection Timeout 네트워크 요청을 시작한 후 서버와의 TCP handshake가 완료되기까지 지속되는 시간으로 Retrofit이 설정된 연결 시간 제한 내에서 서버에 연결할 수없는 경우 해당 요청을 실패한 것으로 계산합니다..
안드로이드 HTTP 보안 정책 안드로이드와 서버와의 통신중 에러가 발생했습니다. 원인은 안드로이드 9 Pie 부터 강화된 네트워크 보안 정책으로 HTTPS가 아닌 HTTP 프로토콜은 안드로이드가 보안상의 이유로 접속을 제한 합니다. HTTPS는 SSL/TLS 프로토콜을 사용하여 데이터의 암호화 및 통신을 제공합니다. 보통 로컬 환경에서 테스트 경우 AndroidManifest.xml 파일에 android:usesCleartextTraffic="true"을 설정해주거나특정 도메인만 허용 시키는 xml 파일을 작성해 테스트하는 방법이 있는데 이왕 하는거 SSL에 대해서 알아보고 직접 적용 시켜 보겠습니다. 제목은 안드로이드 HTTP 보안 정책인데 사실 내용은 기존 Nginx 서버에 SSL 적용하기랍니다 HTTPS 및 SSL을 사용한 보안..
Android Network Programming 2 Android Network Programming 1 이 글 을 마지막으로 기본적인 Docker 기반의 서버 구축이 완료 되었습다. 추후 테이블도 변경하고 수정할 사항이 많겠지만 빨리 내가 직접 만든 서버와 통신을 해보고 싶어서 메다닥 달려왔습니 chanho-study.tistory.com 이전 글에서는 Retrofit Annotation을 알아보며 마무리 했었습니다. 이번엔 Retrofit으로 이미지를 전송하기 위한 Annotation에 대해 알아볼게요. 이 함수는 이미지 전송을 위한 예시 함수입니다. 하나씩 뜯어보죠 @Multipart @POST(URL_TO_UPLOAD_IMAGE) suspend fun uploadImage( @Part image: MultipartBody.Part ): Respon..