한 걸음 두 걸음

android Open Source / Open Source Library / Butterknife / Okhttp3 / Retrofit 2 / Glide / Firebase Auth 본문

FrontEnd/Android

android Open Source / Open Source Library / Butterknife / Okhttp3 / Retrofit 2 / Glide / Firebase Auth

언제나 변함없이 2019. 5. 1. 23:56
반응형

Open Source

오픈소스란, 공개 소프트웨어는 저작권자가 소스코드를 공개하여 누구나 특별한 제한 없이 자유롭게 사용, 복제, 배포, 수정할 수 있는 소프트웨어입니다.
(오픈소스는 소스를 공개한다는 면에서 Freeware, Shareware와 다릅니다.)

오픈소스의 특징

오픈소스는 무료로 소스코드를 사용할 수 있기에 이를 재사용하여 개발하는 경우 개발비용이 저렴합니다. 뿐만 아니라 많은 사람들이 직접 개발과 디버깅 작업에 참여한 결과물이기 때문에 오랜 시간 많은 사람들로부터 사용된 코드의 경우 신뢰성과 안정성이 보장되어있습니다.
하지만 오픈소스는 리눅스 기반으로 개발된 애플리케이션이 대부분이기 때문에 윈도우즈 기반 애플리케이션과 호환되지 않는 문제점이 발생하기 쉽습니다. 뿐만 아니라, 회사에서 개발되는 것이 아닌 개인의 자발적인 참여를 통해 개발되기 때문에 업그레이드 또는 항상성이 보장되지 않습니다.

오픈 소스 라이브러리란 무엇인가?

오픈 소스 라이브러리란 위의 오픈 소스를 기반으로 만들어진 것으로, 다른 프로그램에서 호출하여 사용할 수 있도록 목파일로 컴파일되어 제공하는 일종의 함수 집합입니다.

이러한 라이브러리는 정적 라이브러리와 동적 라이브러리로 나뉩니다.
정적 라이브러리는 라이브러리에 포함된 목적 코드가 실행 프로그램 컴파일 시에 실행 파일에 복사되어 배포되는 방식입니다.
기본적으로 필요한 기능이 실행 파일과 동일한 위치에 존재하기 때문에 프로그램 실행파일이 커지는 단점이 있지만, 배포해야 하는 파일 하나만으로 충분하다는 것이 장점입니다.

반면 동적 라이브러리는 실행 프로그램에 항상 라이브러리를 포함시키는 것이 아니라 필요할 때만 라이브러리를 메모리로 불러 들입니다.
동적 라이브러리는 정적 라이브러리의 단점을 보완하여, 실행 파일의 크기를 줄여주며 사용이 끝나면 메모리에서 삭제합니다.
그러나, 프로그램 배포시에 exe 파일과 함께 dll 파일이 추가로 배포해야 한다는 단점이 있습니다.
dll 파일이 없으면 컴파일 시에는 에러가 나지 않지만 실행 시에는 라이브러리를 찾을 수 없다는 오류가 발생하며,
라이브러리의 이름은 정확하지만 만일 버전이 적절하지 않다면, 역시 문제가 발생할 우려가 있습니다.

안드로이드 오픈소스 라이브러리 링크 모음집
https://coding-factory.tistory.com/209

Butterknife

ButterKnife는 안드로이드용 뷰 바인딩 라이브러리로, 오픈소스의 일종입니다.
이는 반복적인 코드를 작성하는 번거로움을 없애주며, 안드로이드 앱 개발에서 View 변수 선언, 연결, 리스너를 연결하는 노가다를 줄여줍니다.
즉 findviewbyid를 좀 더 간편하게 사용하게 해주는 오픈 api라 보면 됩니다.

버터나이프 홈페이지 URL : http://jakewharton.github.io/butterknife/

Okhttp3 / Retrofit 2

Okhttp3와 Retrpfit2는 네트워크 구축시 필요한 쿠키, 캐시등을 지원해주고 예외 상황에 대한 풍부한 리소스를 제공하는 대표적인 네트워크 오픈소스 라이브러리입니다.

Okhttp3는 HTTP & HTTP/2 통신을 위한 클라이언트 라이브러리로, 네트워크 구현 시 스레드의 개념을 적용하고 여러 메소드를 오버라이드 해야하는 복잡한 방식의 AsyncTask<>를 사용하여 만들어졌습니다.
덕분에 이제 어렵게 스레드를 사용하지 않아도 네트워크를 구현할 수 있게 되었습니다. 그리고 싱글톤 디자인 패턴을 적용하였기에
네트워크에 관련한 설정들을 매번 클래스를 호출 시 마다 해당 내용이 변경되거나 지속적으로 유지가 되어야할 내용들이 변경되지 않습니다.
오픈소스 URL : https://github.com/square/okhttp

Retrpfit2는 REST통신을 위한 클라이언트 라이브러리로, REST API를 자바 인터페이스로 변환해줍니다. 이를 통해 거의 모든 RESTful API와의 통신을 위한 코드를 자바로 작성할 수 있습니다.
Retrofit2는 기본적으로 OkHttp를 네트워킹 계층으로 활용하며 그 위에 구축됩니다.
레트로핏 URL : http://square.github.io/retrofit/

Retrofit2 + OkHttp3 사용하기 URL : https://jongmin92.github.io/2018/01/29/Programming/android-retrofit2-okhttp3/

Glide

Glide는 구글에서 2014년에 공개된 이미지 라이브러리로, 웹 상의 이미지를 로드하여 보여주기 위해 고려해야 할 사항들을 미리 구현하여 사용자가 이용하기 쉬운 라이브러리입니다.
예를 들어, 비트맵으로 처리할 때는 메모리 관련 Out of Memory, 병렬처리, 디코딩, 이미지 재활용 등의 다양한 고려사항을 체크해주어야하는데, Glide를 사용하면 이와 같은 고려사항을 생각지 않고
사용하기만 하면 됩니다. 게다가 다른 이미지 라이브러리에서는 찾아보기 힘든 썸네일보기, GIF로딩, 동영상 스틸 보기 기능까지 지원하는 것이 특징입니다.

구체적인 사용방법에 대한 포스팅 URL : http://dktfrmaster.blogspot.com/2016/09/glide.html

Firebase Auth

Firebase란 구글에서 인수한 모바일 및 웹 애플리케이션 개발 플랫폼입니다.
이를 사용하면 서버 관리를 구글에서 해주기 때문에 편리하고, Firebase 하나만으로도 앱 하나를 만들 수 있습니다.
이러한 Firebase에서 제공되는 Firebase 서비스 중 하나인 Authentication는 앱에서 사용자 인증 시 필요한 백엔드 서비스와 사용하기 쉬운 SDK, 기성 UI를 제공하는 라이브러리입니다.
예를 들어, Firebase Authentication를 이용해 Firebase를 안드로이드 스튜디오에 연결하고 Google 로그인을 통해 앱에서 사용자의 신원 정보 등을 얻을 수 있습니다.

Open Source Library 실습 (실습6 하단에 첨부)
실습 4에 ButterKnife를 활용한다.
실습 4에 MVP pattern을 활용한다.
로딩화면 -> 로그인화면 -> 메인화면
로딩화면에서 5초 경과 후 로그인화면으로 연결한다.
로그인 화면에서 Firebase Auth를 활용해 구글 로그인을 연결한다.
로그인이 성공하면 메인화면이 나오도록 한다.
로그인이 실패하면 Toast 안내메시지를 띄운다.

반응형