728x90

Android (안드로이드) 88

[Android] Build Variants (1) - 빌드 변형 구성으로 앱 파생하기 / ProductFlavors / BuildTypes

빌드 변형(Build Variants)을 구성하여 단일 프로젝트에서 다양한 버전의 앱을 빌드하는 방법을 알아본다.       ✅ 빌드 변형을 구성하는 이유?  앱의 전체적인 구조와 기능들이 동일한 상황에서,아주 약간의 기능만 변경 · 추가된 앱을 만들어야 하는 상황에 놓였다.  기존 프로젝트와 99% 이상 겹치는 신규 프로젝트를 1개 더 제작할 것인가?보일러 플레이트 코드 한 줄도 기겁하는 개발자들에게는 끔찍한 일이 아닐 수 없다.   위와 같은 상황은 빌드 변형 구성을 통해 손쉽게 해결할 수 있다. 빌드 변형을 구성하면 단일 프로젝트에서 여러 버전의 고유한 앱을 빌드할 수 있다.즉, 기존 앱을 재사용, 파생하여 고유한 앱으로 찍어낼 수 있는 것이다.    🎈 고유한 앱? 안드로이드에서 고유한 앱의 기..

[Android] R8 full mode 적용으로 인한 예외 발생 / Unable to create call adapter for interface g5.h for method a.r / Call return type must be parameterized as Call<Foo> or Call<? extends Foo>

웬만한 Exception은 거의 만나봤다고 생각했지만 역시 한참 멀었다. Unable to create call adapter for interface g5.h for method a.rCall return type must be parameterized as Call or Call 처음보는 에러를 만나게 되었고, 구글링을 통해 R8과 Retrofit에 대한 문제라는 것을 확인했다.       ✅ R8 ? R8은 기존 Proguard를 대체하는 공식 최적화 도구이다. ● 그럼 Proguard는 뭐에요?주로 앱을 release 버전으로 배포할때 사용하며,소스를 난독화 · 최적화하여 보안성을 높이고 용량을 줄여주는 도구다. 즉, 2가지 도구의 역할은 유사하며 기존에는 Proguard가 해오던 일을 이제는 R..

[Android] SMS / 문자 메시지 앱 연결 / 문자 메시지 전송

내 앱에서 SMS 문자 메시지를 전송하는 방법을 알아보자.당연히 안드로이드 시스템 기본 앱을 통해 메시지를 전송하는 방식이다.      지난 '전화 앱 연결하기' 포스팅과 동일하게 2가지 방법을 소개한다. - 앱에서 입력받은 데이터를 (전화번호, 메시지 내용) 가지고 문자 앱으로 이동- 앱에서 직접 문자 메시지 전송     ✅ 문자 메시지 앱으로 이동 메시지를 보낼 상대의 전화번호와 메시지 내용을 가지고문자 메시지 앱으로 이동하는 방법이다. 문자 메시지가 전송까지 한 번에 실행되지는 않지만,전송하기 전에 한 번 더 체크할 수 있다는 장점이 있다.   MainActivity.ktbutton.setOnClickListener { val phoneNumber = "smsto:01012345678" val ..

[Android] 전화 앱 연결하기 / 내 앱에서 전화걸기

이번 포스팅에서는 내가 개발하는 앱에서안드로이드 시스템 기본 앱인 전화 앱을 이용하여 전화 연결하는 방법을 알아본다.       2가지 방법을 소개한다. 첫 번째는 입력 받은 전화 번호를 가지고 전화 앱으로 이동하는 방법이고,두 번째는 입력 받은 전화 번호로 직접 전화 연결하는 방법이다.      ✅ 전화 앱으로 이동 앱에서 전화를 직접 연결하지 않고, 상대방의 전화번호 데이터를 가지고 전화 앱으로 이동한다.사용자가 직접 통화 버튼을 눌러야지만 전화를 걸 수 있다. 직접 전화를 걸지 못해서 불편한 감도 있지만,전화하기 전에 한 번 더 체크하는 용도를 생각하면 나름 수요 있는 방법이라고 생각한다.   MainActivity.ktbutton.setOnClickListener { val phoneNumber..

[Android] DrawerLayout / 서랍장 화면

이번 포스팅에서는 안드로이드 위젯 중 하나인 DrawerLayout에 대해 알아보자.      ✅ DrawerLayout ?  *Drawer : 서랍, 서랍장 많은 앱에서 찾아볼 수 있는 화면의 왼쪽 · 오른쪽에서 튀어나와 열리고 닫히는 느낌의 화면이다.  대표적인 예시로는, 카카오톡 채팅방 내 서랍장을 떠올릴 수 있다.   DrawerLayout이 화면의 최상위 영역에 위치하여야 하고,자식 요소로 DrawerView를 선언하여 열고(open) 닫는(close) 느낌으로 활용한다. *여기서 말하는 DrawerView는 서랍장으로 사용할 임의의 View를 뜻한다.예제에서는 LinearLayout을 DrawerView로 사용할 예정이다.   그 외의 특징을 간단히 설명하자면, ● DrawerView는 화면의..

[Android] Snackbar / 스낵바 사용해보기

이번 포스팅에서는 Snackbar에 대해 알아보고 직접 사용해본다.      ✅ Snackbar ?   화면 하단에 표시되는 간단한 알림 역할의 위젯이다.사용자 환경을 중단하지 않고 새로운 작업을 제공할 수 있다.   Toast와 상당히 유사하지만, 차이점 또한 존재한다.- Snackbar에 포함된 액션 버튼을 통해 상호작용을 할 수 있다.- Material Design을 기반으로 하여 비교적 깔끔한 사용자 경험을 제공할 수 있다.- Service 등 UI가 존재하지 않는 환경에서는 사용할 수 없다.   공식 문서에서는 다음과 같은 사례에서 스낵바를 사용할 것을 권장한다.- 작업 확인: 사용자가 실행한 어떠한 작업 직후에 '실행 취소'를 제공하는 스낵바 표시- 네트워크 상태: 인터넷 연결이 끊어지면 현재..

[Android] Context / Application Context / Activity Context

이번 포스팅에서는 Context에 대해 정리해본다.     ✅ Context 란? 사전적 의미로는 맥락, 문맥 등이다. 안드로이드에서의 Context 또한 비슷한 의미로 사용된다고 느낄 수 있다.앱이 흘러가는 맥락으로 볼 수도 있고, 앱의 현재 상태로 볼 수도 있다.    ● Context 사용처 - 시스템 서비스에서 제공하는 API를 사용하기 위해- 시스템 입장에서는 앱의 정보 또는 액티비티의 정보를 얻기 위해    ● Context 종류 - Application Context- Activity Context *Application, Activity 2개의 클래스 모두 Context 클래스를 상속한다.    Context가 필요한 상황에서,위 2개의 Context 중 어떤 것을 사용해도 무방한 경우가 ..

[Android] DownloadManager / HTTP 통신으로 파일 다운로드하기

DownloadManager 클래스를 활용하여 인터넷 상의 파일을 앱에서 다운로드해 본다.      ✅ DownloadManager ? DownloadManager는 HTTP 다운로드를 처리하는 시스템 서비스다.엄밀히 말하면 장기적인 HTTP 다운로드를 처리한다. 클라이언트는 다운로드할 파일의 경로, 즉 URI만 알고 있다면 다운로드를 요청할 수 있다. DownloadManager는 기본적으로 백그라운드에서 작업을 수행하도록 설계되어 있어서,개발자가 별도로 백그라운드 작업 처리를 해주지 않아도 된다. 또한, 다운로드가 진행 중일 때는 알림 드로어에 진행 상황이 자동으로 표시된다.      ✅ 샘플 파일 경로 먼저, 다운로드해 볼 파일의 경로는 다음과 같다.// 이미지"http://commondatasto..

728x90