Android 12

[Android/ReactNative] 카카오 로그인 SDK v2 적용기 (+ Native 모듈 적용)

현재 진행 중인 프로젝트는 하이브리드 앱으로, 내부 웹뷰를 네이트브로 감싸고 있다. 네이티브 쪽에서 로그인 프로세스를 진행하고 이제 웹뷰와 소통하는 방식으로 소셜 로그인이나 프로젝트 자체 API 를 적용하고자 했다. 처음에는 react-native-seoul 에서 제공하는 라이브러리를 사용하려 했지만, 웹뷰가 아닌 앱으로 이동되는 UX 를 충족시켜주기 위해서 actbase 라이브러리를 참고했다. (위 라이브러리도 추가 처리를 해주면 된다는데 왜인지 계속 오류 지옥 .. 🤦‍♀️) 정리하자면, 1. 안드로이드 네이티브에서 React 모듈 (bridge) 생성 2. 모듈 내 카카오 로그인 SDK 관련 코드 작성 3. ReactNative (js) 코드 상에 안드로이드 Module 주입 카카오 로그인 카카오 ..

Android/study 2021.12.09

[Android] WebView 쿠키에 관하여 ... 🍪

프로젝트를 진행하며 오류를 파헤쳐본 결과, 안드로이드 상에서는 웹뷰가 크게 문제되는 부분이 없었다. 그래도 며칠간 조사한 부분이니까 쿠키 매니저에 관해 기록하고 싶어서 챱 챱 챱 🍪 주로 CookieManager 에 대해 다룰 것이며, 추가적으로 CutomTabIntents 와 WebView 간의 쿠키 공유에 대해서 (이 부분은 조금 더 조사가 필요하지만) 서술하고 마무리할 예정이다 ! 본격적인 글 작성에 앞서 기본 개념부터 다루어 본다면, 세션 = 서버에서 가지고 있는 정보 쿠키 = 사용자에게 발급된 세션을 열기 위한 열쇠 Cookie 쿠키는 웹 사이트에 방문한 사용자의 디바이스에 저장해 놓은 작은 데이터 파일로, 주로 사용자가 사이트를 재방문했을 때 편리함을 제공하기 위해 데이터를 저장한다. 사이트별..

Android/study 2021.11.25

[Android] WebView (+ Chrome Custom Tabs)

근 한 달 간 웹뷰 이슈 다루며 지겹게 마주한 웹뷰에 대해서 차근차근 정리하고, 쿠키 공유 관련 정책에 대해서도 작성하고자 한다. 웹뷰의 난이도에 대해 생각해본 적이 없는데, 생각보다 많은 시간을 쏟게 되면서 개발의 길은 멀고도 험하구나 . . 를 다시 실감 . . 아자아자 파이팅 🏳‍🌈 네이티브앱 vs 하이브리드앱 현재 다루고 있는 프로젝트에서 차용하고 있는 방식은 웹을 토대로, 모바일 앱에서는 그를 보여주기 위해 웹뷰를 이용해 창을 띄워주는 형식을 사용한다. 이러한 하이브리드 앱을 다루는 것은 처음이라, 네이티브 앱과 정확히 어떠한 차이가 있는 지부터 찾아보게 되었다. (1) 네이티브 앱 Native Application 모바일 기기에 최적화되어있는 스마트폰 앱으로 android, iOS 코드를 별도..

Android/study 2021.11.22

[Android] MVVM 패턴 (vs MVC & MVP)

돌고 돌아 다시 안드로이드로 돌아왔다. 우리의 코드인듯 아닌듯한 아이를 분석하면서 프로젝트에 적용된 MVVM 패턴에 대해 정확히 학습해보고, 올해 클론코딩을 진행했던 "배달의 민족" 앱에 적용할 계획이다 ! 💫 MVVM 에 대한 본격적인 분석에 앞서 많이 사용되는 디자인 패턴 MVC/MVP 도 살펴보고 가자 아자자 MVC vs MVP vs MVVM 안드로이드 앱을 논리적 구성 요소들로 체계화하려는 노력은 지속되어왔다. 가장 기초적인 MVC (Model-View-Controller) 패턴으로 시작하여 더 모듈화되고 테스트 가능한 패턴으로 발전해왔다. MVC 를 대체하기 위해 가장 많이 쓰이는 두 가지 대안책으로 MVP (Model-View-Presenter) 와 MVVM (Model-View-ViewMod..

Android/study 2021.11.12

[Android Studio] 이미지 로딩 라이브러리 Glide 사용하기

Glide 란 ? 2014년 구글에서 공개한 이미지 로딩 라이브러리 가장 성능이 좋은 이미지 로딩 라이브러리로 알려짐 (UIL, Picasso, Fresco 中) 썸네일 보기, GIF 로딩, 동영상 스틸 보기 기능까지 지원함 반복 스크롤 시 메모리를 많이 쓰는 만큼 빠른 속도와 안정성 보장 공식 Gihub 페이지 : https://github.com/bumptech/glide GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling An image loading and caching library for Android focused on smooth scrolling - GitHu..

Android/study 2021.09.17

[Android] 안드로이드 이벤트

이벤트(event)란 사용자와 애플리케이션 사이 또는 애플리케이션들 사이에 일어나는 어떤 일을 의미한다. 사용자가 프로그램을 사용하기 위해 화면을 터치하거나 키를 누르는 일 등이 이벤트에 해당된다. 사용자가 그러한 행위를 했을 때, 앱이 그에 대한 반응을 보이는 부분이 개발자가 해야 할 일이다. 이벤트 처리 방식은 크게 이벤트 구동 방식과 폴링 방식 2가지로 나뉜다. 폴링(Polling) 방식 폴링 방식은 어떤 상태인지를 주기적으로 확인하는 방식, 즉 사용자의 입력을 기다리는 방식이다. 예를 들면 우편물이 왔는지를 매번 내가 가서 보는 것이다. 이렇게 매번 오가는게 폴링이다. 주기적으로 알아보는 만큼 오지 않았을 때 나가보는 동안 비효율이 발생한다. 이벤트 구동(Event-driven) 방식 이벤트 구동..

Android/study 2021.09.07

[kotlin] 입력과 출력 (Scanner, BufferedReader)

콘솔에서 데이터를 입력 받는 두가지 방법에 대해 알아보자. Scanner Scanner 객체에 System.in(InputStream)을 넣어 생성한 인스턴스를 사용한다.System.in 은 키보드와 연결된 자바의 표준 입력 스트림으로 사용자가 키보드를 통해 입력한데이터를 컴퓨터를 통해 프로그램에 전달해주는 역할을 한다. Scanner 객체는 System.in을 통해 전달된 데이터를 언어의 기본타입으로 변환해준다.아래 예제는 이름과 나이를 입력받아 출력해주는 코드이다. fun main(args: Array){ val sc : Scanner = Scanner(System.`in`) val name = sc.next() val age = sc.nextInt() println("name : $name") pr..

Android/kotlin 2021.09.02

[Android] 인텐트의 정의와 종류 (+ 플래그)

안드로이드 애플리케이션은 4개의 컴포넌트로 구성되어 있다.각 요소는 하나의 독립적인 형태로 존재하며 고유한 기능을 수행한다.이들은 일종의 메시지 객체 Intent 를 통해 서로 상호작용한다. 인텐트 란? 인텐트란 애플리케이션 구성요소(4대 컴포넌트) 간에 작업 수행을 위한 정보를 전달하는 역할을 한다. 예를 들어 인텐트를 활용해 화면 전환을 할 수 있다. 인텐트는 컴포넌트 A가 컴포넌트 B를 호출할 때 필요한 정보를 담고 있으며, 이 정보에는 호출되는 컴포넌트 B의 이름이 명시적으로 표시되어있거나, 속성들이 암시적으로 표시되기도 한다. 또한 호출된 컴포넌트 B가 호출한 컴포넌트 A로 어떠한 결과를 전달할 때도 인텐트가 사용된다. 서로 독립적으로 동작하는 4대 컴포넌트 간의 상호 통신을 위한 장치이다. 컴..

Android/study 2021.09.02

[Android] 매니페스트 파일 (AndroidManifest.xml) 분석

모든 안드로이드 앱 프로젝트는 프로젝트 소스 세트의 루트에 AndroidManifest.xml 파일이 있어야 한다. 매니페스트 파일은 안드로이드 빌드 도구, Google Play 에 앱에 관한 필수 정보를 설명한다. 해당 파일의 정의뿐만 아니라, 구성요소들을 살펴보자. Manifest 란? 사전적 의미 [동] 나타내다, 분명해지다 [형] 분명한 [명] (배ㆍ비행기의) 화물 목록, 승객 명단 ⚓ 화물 수송 절차에서 화물 목록이 선원 및 화물을 나열하는 것으로부터 가져온 용어 컴퓨팅적 의미 컴퓨팅에서 집합의 일부 또는 논리 정연한 단위인 파일들의 그룹을 위한 메타데이터를 포함하는 파일 이다. 예를 들어, 컴퓨터 프로그램의 파일들은 이름, 버전 번호, 라이선스, 프로그램의 구성파일들을 가질 수 있다. 안드로이..

Android/study 2021.09.02

[Android] 안드로이드 레이아웃과 속성

안드로이드 UI 프로그램에서 화면 구성을 위한 뷰 클래스도 중요하지만, 해당 뷰들을 화면에 어떻게 배치할 것인가도 중요하다. 뷰를 적절하게 배치하는 데 사용하는 레이아웃 클래스를 살펴보자. 레이아웃 클래스는 화면에 출력되는 대상이지만, 자체 UI는 갖지 않는다. 레이아웃 클래스는 Button 같은 뷰들을 자신에게 포함(Add)하고 적절하게 배치해 화면에 한꺼번에 출력한다. 레이아웃 클래스마다 포함된 뷰의 정렬 규칙이 다른 것이지, 특정 화면을 특정 레이아웃으로만 구성할 수 있는 건 아니다. 화면을 작성할 때 무조건 특정 레이아웃을 사용해야 완성할 수 있는 경우도 있지만, 대부분 개발자의 선택에 따른다. 레이아웃 이란? (명) 책이나 신문, 잡지 따위에서 글이나 그림을 효과적으로 정리하고 배치하는 일 ⇒ ..

Android/study 2021.08.08