본문 바로가기

안드로이드 기술 공유

(15)
간편하게 Retrofit 쿠키 유지하기! 일반적으로 API 기반의 네트워크 통신이 주가 되는 안드로이드에서는 쿠키 유지를 허용하는 경우가 드뭅니다. 하지만, 로그인 정보의 유지나 웹과의 데이터 통신을 하는 경우에는 쿠키 유지가 필요한 경우가 생깁니다. 기존에는 Interceptor를 사용하여 Preference에 쿠키를 저장해서 쓰는 방식이었지만, 이보다 훨씬! 간편하고 안정적으로 쿠키를 유지할 수 있는 방법이 있습니다. 바로 Retrofit에서 사용하는 Okhttp3의 cookieJar 를 사용하여 쿠키를 유지하는 방법입니다! okhttp-urlconnection 라이브러리 추가 implementation "com.squareup.okhttp3:okhttp-urlconnection:4.9.1" (square/okhttp github 페이지 참..
Dagger Hilt로 안드로이드 의존성 주입하기 Dependency Injection 의존성 주입(Dependency Injection)은 여러 컴포넌트간의 의존성이 강한 안드로이드에서 클래스 간 의존성을 낮춰줍니다. 객체 생성 시 클래스 간 의존성이 생기게 되는데 이때, 객체의 생성을 클래스 내부에서 하는 게 아니라 클래스 외부에서 객체를 생성하여 주입시켜주는 디자인 패턴을 말합니다. 그렇다면 의존성 주입이라는 용어는 어떤 의미일까요? 의존성? 클래스 간의 의존 관계를 가지는 상황으로 A클래스 내부에서 B클래스가 생성, 사용되는 경우라고 볼 수 있습니다. class B { val id = "newtopia" } class A { val data = B() //의존관계 생성 } >>> println(A().data.id) //A클래스는 B클래스에 의존..
[코틀린] 하이브리드 앱을 위한 안드로이드 웹뷰(WebView) 완벽 셋팅! 하이브리드 앱을 위해 현재 제가 사용하고 있는 안드로이드 웹뷰(WebView)의 주요 셋팅을 공유하고자 합니다! 저는 웹뷰를 공통으로 사용하기 위해 "CommonWebView"라는 이름으로 커스텀 웹뷰를 만들어서 사용하고 있습니다. ^^ 바로 보시죠! class CommonWebView(context: Context, attrs: AttributeSet?, defStyle: Int) : WebView(context, attrs, defStyle) { constructor(context: Context) : this(context, null) constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) init { with(se..
Retrofit으로 SSL 인증서 없이 HTTPS 우회 접속 통신하기! 대부분의 도메인은 SSL이 적용되어 있고, SSL 통신을 하려면 기본적으로는 SSL 인증서가 필요하지만, 간혹 인증서가 만료되었거나 자체 서명된 인증서를 포함하는 도메인인 경우가 있습니다. 물론, 신뢰할 수 있는 특정 인증서만 통신을 수락하는 경우가 가장 일반적이며 이상적인 시나리오입니다! 하지만 일반적이지 않은 경우, 이러한 인증서 없이 앱에서 HTTPS 우회 접속 통신이 가능하기 때문에 구현 방법에 대해 소개해드리겠습니다. 다시 말씀드리지만, 우회하는 방법보다는 제대로 된 인증 절차를 통한 통신이 가장 좋은 솔루션입니다! Unsafe OkHttp Client 구현 Retrofit에서 SSL 인증서 체크는 네트워크 모듈에서 이뤄지고 있기 때문에, 우회할 수 있는 OkHttp Client Builder를..
프로답게 UI 디자인 가이드 요청하기! 우리가 안드로이드 앱 개발을 할 때, 개발 협업에 있어 가장 중요한 부분 중 하나가 바로 "디자이너와의 협업" 입니다. 우리의 앱을 아주 멋지게 디자인해주시는 디자이너분들과 개발 협업을 하기 위해서 기본적인 개념을 알아둔다면, 더욱 효과적이고 서로 해피(Happy)한 협업을 할 수가 있겠죠? 디자이너 : 해상도 몇으로 작업해서 디자인 가이드 넘겨드리면 될까요? 개발자 : (몇으로 달라고 하지...?;;;; 고민...난감...) 위와 같은 경우를 겪어본 적이 있으신가요? 어떤 해상도 기준으로 달라고 해야 하는지 난 잘 모르겠고, 그냥 혼자 있고 싶고, 멍해졌던 적이 있으신가요? 이럴 때, 더 이상 고민하지 않고 프로답게! 디자인 가이드 요청을 하기 위해서 모바일 앱 UI 디자인 요청 시에 가장 중요한 요소..
초간단! 안드로이드 WiFi로 ADB 연결하기! (간편한 플러그인 사용) 안드로이드 개발을 하다 보면, 여러 디바이스를 동시에 테스트해야 하는데 USB 포트의 개수는 한정적이라, 매번 USB 케이블을 뺐다 꽂았다 하는 번거로움이 있었습니다 ㅠㅠ 책상에는 USB케이블들이 여기저기 정신없이 너저분하게 흩어져있고요... 케이블 상태에 따라, 접촉불량으로 계속 연결이 끊기기도 하고... 또한, 제 PC에서는 장시간 USB케이블로 디바이스를 연결해둘 시 Log가 안 찍히는 현상이 자주 발생하여... 엄청난 삽질을 하게 만드는 일들이 너무 빈번했습니다 ㅠㅠ 이런 불편함을 해결하기 위해, 무선 WiFi로 ADB를 연결할수 있는 방법을 알려드리고자 합니다! 기존에 안드로이드 공식문서에도 보면, Android Debug Bridge(ADB) 가이드가 아주 잘 나와있지만, 해당 방법은 터미널에..
Repository Pattern 이해하기 Repository Pattern? Repository(리포지토리) 패턴은 디자인 패턴 중 하나로, 데이터가 있는 여러 저장소(Local, Remote)를 추상화하여 중앙 집중처리 방식을 구성하고, 데이터를 사용하는 로직을 분리시키기 위한 디자인 패턴입니다. ViewModel은 필요한 데이터를 Repository에 요청하고 Repository는 적절한 저장소에서 요청받은 데이터를 가져옵니다. Repository가 추상화되어 있기 때문에 ViewModel은 언제나 같은 인터페이스로 데이터를 요청할 수 있으며, 실제로 어떤 데이터를 사용하는지 전혀 알 필요가 없기 때문에 앱 환경에 맞는 적절한 데이터를 사용하기에 편리합니다. 왜 쓰는가? - 데이터 로직을 분리시킬 수 있습니다. - 중앙 집중처리 방식으로, ..
맥 OS 에서 프로젝트 빌드 속도 개선을 위한, 간단한 체크사항! 꿀팁! 맥 OS 를 사용하고 계신 개발자분들 중에, '내 PC에서는 왜 이렇게 빌드가 느릴까...' 하시는 분들을 위해! 프로젝트 빌드 속도 개선을 위한, 간단하지만 아주 확실한 꿀팁 체크 사항에 대해 소개하도록 하겠습니다! FileVault 비활성화 맥 OS에는 보안 및 개인 정보 보호를 위해, 디스크에 있는 콘텐츠를 자동으로 암호화하는 기능이 있기 때문에, 이 기능 탓에 프로젝트 빌드 시간이 오래 걸릴 수가 있습니다! 이 기능을 비활성화 시키게 되면 드라마틱! 하게 빌드 속도가 빨라지니, 디스크 보안보다 프로젝트 빌드가 더 중요하다! 생각하시는 분들은 아래와 같이 FileVault 기능을 비활성화 시켜주시면 됩니다! 시스템 환경설정 > 보안 및 개인 정보 보호 > FileVault 탭 > FileVault 끄기