본문 바로가기

Android

(38)
[안드로이드/Android] Databinding 사용하기 Databinding 사용한 예시를 만들기 전에 findViewByid의 작동 방식을 알아보고 가겠습니다. 목차 findViewByid 작동 방식과 문제점 우리가 뷰에 대한 참조를 얻기 위해서 findViewByid() 함수를 사용할 때마다 안드로이드 시스템은 런타임 중에 뷰 구조를(view hierarchy) 살펴보고 원하는 뷰를 찾아내는 작업을 합니다. 규모가 큰 앱의 경우 레이아웃이 많고 수 백개의 뷰가 있을 수 있습니다. 그럼 한 화면을 보여줄 때 안드로이드 시스템은 수 백번 뷰 구조를 보는 작업이 필요합니다. -> 규모가 큰 앱의 경우 안드로이드 시스템에서 뷰를 참조하기 위한 많은 작업이 필요합니다. 적어도 오늘 날의 모바일 폰 시장에서 적어도 60Hz의 화면 재생 빈도(refresh frequ..
android 공식 문서를 영어로 봐야하는 이유 1. 최신 버전에 맞게 내용을 수정해주는 것이 늦습니다. 예시 1 databinding 데이터 결합을 사용하도록 앱을 구성하려면 앱 모듈에서 dataBinding 요소를 build.gradle 파일에 추가해야 합니다. 한글 문서는 다음과 같이 설명해줍니다. 하지만 Android Studio version 4.1 이상 버전에서 다음과 같이 따라하면 밑의 에러가 발생합니다. 한글 문서에서 알려준 방식이 obsolete(쓸모 없는, 구식의)하고 대체될 것이라는 경고 문구를 반환합니다. 영어 문서에는 대체될 방법을 알려줍니다.. 이대로 실행하면 경고 문구가 사라집니다... 영어 공부 해야겠죠?? databinding 공식 문서 :developer.android.com/topic/libraries/data-bin..
[안드로이드] 핸드폰 번호, 기기 고유 id 등 단말기 정보 가져오기 안드로이드 앱 개발하면서 사용자의 핸드폰 번호, 기기 고유 id 등 정보를 많이 필요한데요. (앱 홍보 또는 여러 계정으로 앱에 가입 시 이벤트 제한 등등) 그래서 단말기 정보 가져오는 것을 알아볼 것입니다. ** 참고 Android 11에서는 앱에서 전화번호를 읽을 때 사용하는 전화 관련 권한이 변경됩니다. 앱이 Android 11 이상을 타겟팅하고 다음 목록에 표시된 전화번호 API에 액세스해야 한다면 READ_PHONE_STATE 권한 대신 READ_PHONE_NUMBERS 권한을 요청해야 합니다. TelephonyManager 클래스와 TelecomManager 클래스의 getLine1Number() 메서드 TelephonyManager 클래스에서 지원되지 않는 getMsisdn() 메서드 참고 ..
안드로이드 런타임 퍼미션(runtime permissions) 안드로이드 앱 개발 시 TargetSDK가 마시멜로 버전(APK 23) 이상인 경우, 디바이스의 특정 기능을 사용할 때 권한을 요구하는데 그 권한 중에 위험 권한으로 분류된 권한은 개발자가 직접 사용자에게 권한을 허가받을 수 있게 개발해야 합니다. 위험 권한(카메라, 오디오 녹음 권한) 허가를 받고 사용자가 허가하지 않은 경우 다시 권한 허가 요청을 하도록 하는 앱을 만들어 보겠습니다. 1. 먼저 manifest 파일에 필요한 앱에서 사용할 위험 권한을 선언합니다. 2. java 코드를 통해서 사용자에게 권한을 허가 받겠습니다. 앱이 실행이 됐을 때 chkPermission() 함수를 통해서 모든 위험 권한을 허가받았을 경우 토스트 메시지를 띄우도록 했습니다. @Override protected void..
모던 안드로이드 앱 만들기 (3) - Retrofit, RxJava를 이용한 네트워크 통신 Retrofit2, RxJava RxJava는 asynchronous event based communications (비동기 이벤트 기반 통신)을 위한 라이브러리입니다. 기존 Retrofit 사용 시에는 주로 Call 인터페이스의 enqueue 메서드를 통해서 비동기적으로 API와 통신을 하고 이후에 onFailure와 onResponse로 통신 결과를 전달받습니다. 이번엔 Call 인터페이스 대신 비동기 태스크 처리를 위해 RxJava, 네트워크 통신을 위해 Retrofit을 사용할 것입니다. retrofit2:adapter-rxjava2를 이용하면 기존의 RxJava를 사용하던 타입을 적용해 Retrofit을 통해서 API 호출과 결괏값을 처리할 수 있습니다. RxJava adapter를 추가하여 ..
모던 안드로이드 앱 만들기 (2) - MVVM 구조를 사용한 리스트 구현 저번 앱 소개에 이어서 이번 포스팅에서 만들 것은 국가 데이터를 보여주는 리스트입니다. MVVM을 적용해 앱을 만들기 전에 MVVM이 무엇인지, 각각의 역할과 사용했을 때의 이점을 살펴보겠습니다. MVVM 패턴? business logic를 뷰와 모델로부터 분리하는 아키텍쳐 패턴입니다. 구글이 권장하는 앱 아키텍쳐입니다. 앱 데이터와 상태를 저장하는 데 앱 구성요소를 사용하지 않습니다. Activity 또는 Fragment에 모든 코드를 작성하지 않습니다. 모델에서 가져온 데이터를 통해 UI를 만듭니다. 모델은 앱의 데이터 처리를 담당하는 구성요소입니다. 모델은 앱의 View 객체 및 앱 구성요소와(Activity, Fragment, Service 등) 독립되어 있으므로 앱의 수명 주기 및 관련 문제의 ..
모던 안드로이드 앱 만들기 (1) - 소개 (using Java, MVVM, RxJava) 앱 소개 및 목적 안녕하세요 이번에는 Jetpack의 다양한 라이브러리를 활용하여 리액티브 하고 확장에 유연한 안드로이드 앱 개발을 할 것입니다. 만들 앱은 나라의 정보(이름, 수도, 국가 이미지)를 보여주는 기능을 가지고 있습니다. 이 앱을 만드는 목적은 Java를 사용해 모던 안드로이드 앱을 개발하는 것이며 여러 Jetpack LIbrary의 역할을 알고 사용해보는 것입니다. (Kotlin 버전은 추후에 업데이트할 예정입니다.) Language, Libraries and tools 🛠 Java LiveData Retrofit RxJava Glide butterknife Architecture 이 앱은 MVVM [Model-View-ViewModel] 아키텍처를 사용하여 단방향 데이터 흐름(unidir..
구글 로그인 API - release key hash 등록하기 이전 글에서 구글 로그인을 안드로이드 앱에 연동한 적이 있었습니다. develop-writing.tistory.com/32 [Android] 구글 로그인을 안드로이드 앱에 연동하기 이번에는 구글 로그인을 연동해보겠습니다. 구글 로그인도 카카오 로그인처럼 실 서비스에 적용하기 위해서는 다음 3단계를 거쳐야 합니다. 1. 앱 등록 및 설정 2. 기능 구현 3. 릴리즈 키 등록 저 develop-writing.tistory.com 구글 로그인 기능이 있는 앱을 플레이 스토어 출시하기 위해서 release key hash(sha-1)을 Google Console에 등록해야 합니다. (만약 파이어 베이스를 사용한다면 파이어 베이스 콘솔에서 등록해도 됩니다.) release key hash를 구하는 방법은 2가지 ..