Android 삽질일지

29
Android 삽질 일지

Transcript of Android 삽질일지

Page 1: Android 삽질일지

Android 삽질 일지

Page 2: Android 삽질일지

Android 개발 - 간단한 디자인 소개

마치 분필로 칠판에 쓴듯한 추억을 자극하는

개발자 답지 않은 세련된 디자인

Page 3: Android 삽질일지

Android 개발 - 간단한 구조 소개

누가 봐도 한 눈에 이해되는 몹시 깔끔한

MVC 구조

M

C

V

Page 4: Android 삽질일지

Android 개발 - 간단한 구조 소개

Command 패턴을 적용하여

Class 이름만 봐도 무슨 역할을 할지 알 수 있을 것만 같은

감동적인 네트워크 전담 패키지

Page 5: Android 삽질일지

지금부터 상세하게 삽질을 공유해 드리겠습니다.

개쩌니까 잘 들어주세요!

Page 6: Android 삽질일지

Android 개발 - 삽질 1 : Authorization

로그인 없이 간편하게 게시판을 사용하게 해주고 싶은데…

하지만 자기가 쓴 글을 수정하거나 삭제하려면 각각의 휴대폰을 식별 할 수 있는 ID가 필요해…

Page 7: Android 삽질일지

Android 개발 - 삽질 1 : Authorization

Device ID라는게 있다는데??

Page 8: Android 삽질일지

불법

Page 9: Android 삽질일지

Android 개발 - 삽질 1 : Authorization

Device ID를 대신 할 수 있는 Unique한 ID는 없을까?

java.util의 UUID(Universally Unique Identifier)클래스를 사용해

UUID를 랜덤으로 뽑습니다.

Page 10: Android 삽질일지

Android 개발 - 삽질 1 : Authorization

“UUID를 누군가 관리하면서, 중복되지 않게 할당해 주어야 하는게 아닌가요?”

“랜덤으로 만든 값을 쓰다보면, 누군가와 겹치지 않을까요?”

Page 11: Android 삽질일지

Android 개발 - 삽질 1 : Authorization

로또 당첨 확률

약 8000000 분의 1

Page 12: Android 삽질일지

Android 개발 - 삽질 1 : Authorization

UUID 2개가 중복될 확률

“16자리의 16진수가 순서에 맞게 같아야 한다.”

약 350000000000000000000000000000000000000분의 1

Page 13: Android 삽질일지

Android 개발 - 삽질 1 : Authorization

Server Client

첫 진입

POST{UUID : %@#$}UUID를

DB저장, 암호화된 token 발행 RESPONSE

{token : ^$@!}

SharedPreference로 token을 로컬에 저장

HTTP Header Authorization : token

이후 네트워크 통신 시 HTTP Header에 token을 함께 보냄

HTTP Header에서 token정보를 가져와 사용자 식별

Page 14: Android 삽질일지

Android 개발 - 삽질 2 : Network

Android 네트워크 삽질의 추억…

“어, 왜 5.0에서만 POST가 보내지지??” “4.2, 4.3은 안되고 또 4.1은 되네.. 뭐지???ㅠㅠ”

“왜 두번 클릭해야 POST를 하지??”

대 체 왜 !!!

오픈 소스 사용하자!!!

Page 15: Android 삽질일지

Android 개발 - 삽질 2 : Network

“오픈소스 뭐 쓰지?”

여러 라이브러리를 고르던 중, Android에 특화되어 가벼운 용량과 간편한 사용법이 장점인

Async-HttpClient를 사용하기로 결정!

Page 16: Android 삽질일지

Android 개발 - 삽질 2 : Network

토큰을 가져와 HTTP Header에 집어넣고,

Page 17: Android 삽질일지

Android 개발 - 삽질 2 : Network

이렇게 URL과 call back만 구현하면 끝!

Page 18: Android 삽질일지

Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계

MVC… 듣기는 많이 들어 봤는데, 어떻게 설계 해야 하나??

Page 19: Android 삽질일지

Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계

일단 패키지를 나눠서 MVC와 Entity, Network를 구분해보자!

M

C

V

Entity

Network깔끔한데??

Page 20: Android 삽질일지

Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계

깔끔하긴 하지만… MVC로 구조를 짜는 이유는 뭘까?

조금 더 아래에 깔려 있는 원칙은??

“Component 단위의 분리”

Page 21: Android 삽질일지

Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계

“Component 단위의 분리”를 통해 유지, 보수를 하기가 쉬워진다!

즉, 하나의 컴포넌트를 수정함에 있어 다른 컴포넌트에 영향을 최소화하기 위함!

Page 22: Android 삽질일지

Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계

ViewModel

Controller

Model과 View를 생성 View의 이벤트를 처리할 Listener 인터페이스 구현

내부 인터페이스 Listener를 선언

Model Listener를 구현

내부 인터페이스 Model Listener를 선언

Page 23: Android 삽질일지

Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계

ViewModel

Controller

Model과 View를 생성 View의 이벤트를 처리할 Listener 인터페이스 구현

내부 인터페이스 Listener를 선언

Model Listener를 구현

내부 인터페이스 Model Listener를 선언

사용자에게 이벤트를 받아

Controller로 넘기면

Page 24: Android 삽질일지

Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계

ViewModel

Controller

Model과 View를 생성 View의 이벤트를 처리할 Listener 인터페이스 구현

내부 인터페이스 Listener를 선언

Model Listener를 구현

내부 인터페이스 Model Listener를 선언

Controller는 Listener인터페이스의

구현에 따라 Model을 호출

Page 25: Android 삽질일지

Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계

ViewModel

Controller

Model과 View를 생성 View의 이벤트를 처리할 Listener 인터페이스 구현

내부 인터페이스 Listener를 선언

Model Listener를 구현

내부 인터페이스 Model Listener를 선언

Model의 변화를 View가 감지하고 Model Listener의 구현에 따라 화면 변경

Page 26: Android 삽질일지

Android 개발 - 삽질 3 : MVC 패턴을 사용한 구조 설계

이렇게 나눠놓으니 확실히 코드 변경이 쉬워졌습니다!

Page 27: Android 삽질일지

Android 개발 - 그 외 삽질들

그 외에도 JSON Parser로 어떤 라이브러리를 사용할까를 선택하는 과정,

인터넷 폰트를 적용하는 것 등등

사소하지만 해보지 않았던 부분들을 삽질해 보았습니다.

Page 28: Android 삽질일지

Android 개발 - 그 외 삽질들

아직 진행중인 무한스크롤 이슈와 이미지 Resizing에 관한 이슈 등 훨씬더 다양한 삽질로

학기말에 공유하도록 하겠습니다.

Page 29: Android 삽질일지

감사합니다.