pinkred's mobile program

pinkred mobile programer

Archive for 1월 2016

[Android] OkHttp 3.0 라이브러리 사용법

leave a comment »

OkHttp라이브러리는 항상 사용하고 싶은 라이브러리 중에 하나였다. 하지만 기존의 네트워크 모듈을 수정하기에 큰 이슈가 될것 같아서 머뭇거리고 있다가 Android 6부터 아파치 라이브러리가 제거 되면서 본격적으로 넣기 시작했다. 뭐 그냥 아파치 라이브러리 넣으면 되지만 구글에서도 사용하지 않도록 한 라이브러리를 일부러 넣을 필요도 없고 더 좋은 라이브러리가 있어 대체하도록 했다.

가장 큰 이슈는 세션이였다. 2.x 에서 세션을 처리하는데 문제가 많아서 OkHttp로 넘어오면 세션 이슈가 사라질것 같았지만 쿠키를 만드는 것이 더 문제였다. 기존의 쿠키는 아파치 라이브러리가 필요했다.

2.x대 버전은 여기를 통해서 해결하였다.

3.x대 버전은 CookieJar로 변경되면서  JavaNetcookieJar에 기존의 CookieHandler를 등록하면서 해결되었다.

그이외에는 import와 proguard 등의 옵션을 바꾸면서(패키지명이 변경됨) 수월하게 변경할수 있었다.

  • Fresco 와 OkHttp3.0라이브러리 연동에 이슈가 있어 여기를 통해서 해결하였다. 단 OkHttp 3.0.1로 업데이트 되면서 약간의 수정사항이 있어 해당 내용은 기존의 OkHttpImagePipelineConfigFactory 와 관련된 클래스와 비교하면 수정하면 된다.

추후 업데이트

 

Written by pinkredmobile

2016/01/19 at 2:40 pm

프로그래밍(programming)에 게시됨

Tagged with ,

[Android] Fresco 이미지 라이브러리 사용법

leave a comment »

Glide 이미지 라이브러리를 사용하다가 Fresco라이브러리를 알게 되었다.  이전글 참조

본격적으로 써보기 위해서 프로젝트에 적용해보고 ‘Glide 이미지 라이브러리 사용법‘처럼 업데이트 하는 식으로 진행하려고 한다.

  1. fresco.recrack.com 지원 사이트로 한국어로 되어있어 좋지만, 영어 버전이 더 최신업데이트 되어서 영어 버전으로 보는것을 잊지 말아야 한다.
  2. Glide와 비교해서 처음 네트워크를 통해서 뜨는 시간이 Fresco가 더 빠르다. 같은 버전을 두고 비교해도 더 빨리 뜨는것을 확인할수 있다. 물론 이미지 용량과 크기에 따라서 어떻게 될지는 모르겠지만 현재 프로젝트 테스트 결과 더 빠르다. 다른 곳처럼 표와 동영상으로 올리고 싶지만 여기까지다.
  3.  Glide 에서 Fresco로 바꿀때 어려울것 같지만 실제 사용하는 네트워크로 받는 화면들이 한정적이여서 쉽게 전환이 가능했다.  또한 사용방법도 쉬어서 금방 수정 가능하다.
  4. 용량이 문제다 정말 모든것을 다가지고 있어서 그런지 패키지시에 약 5메가 정도가 늘었다. 이건 배보다 배꼽이 더 큰경우가 되겠다. 페이스북이야 워낙 용량이 커서 5메가쯤은 별거 아니겠지만 앱크기가 5메가인데 이미지라이브러리가 5메가인셈이다. ㅜㅜ
  5. 리스트 스트롤 속도는 Glide보고 감동했는데 Fresco는 더 좋다. 역시 모든게 다있어서 그런지 잘구현했다.
  6. 앱의 가장 중요한점의 하나가 Activity간에 중복된 이미지를 보여줄때가 있는데 캐쉬 접근이 어려워서 어떻게 할지 고민 중이였는데 (Glide, Fresco) 둘다 캐쉬를 적중하는 방법이 해당 ImageView의 사이즈가 동일해야 캐쉬가 적중되기 때문에 다음 화면에서 이전의 화면과 동일하게 ImageView 크기를 설정하고, listener를 등록하여 캐쉬에서 이미지를 읽어오면 Layout크기를 원래 크기로 변경하여 해결 가능하다.
  7. 용량문제 해결 방안으로는 사용하지 않는 ndk라이브러리 제거를 하거나 ndk라이브러리 별로 apk를 제작하는 방식이 있다. 후자는 apk가 많이 생기고 관리가 어려워서 포기 전자로 하기로 한다.  ndk에서 x86관련 항목을 제거하는 방식이다. 그러나 해당 방식이 deprecated가 되어있어 gradle.properties에
    android.useDeprecatedNdk=true 해당 라인을 추가해주어야 한다.

추후 업데이트


2016.4.26.

Fresco 라이브러리가 0.9.0 -> 0.10.0 업데이트 되었습니다. 필요한 부분별로 라이브러리를 추가할수 있어서 용량이 대폭 감소하였습니다. 릴리즈 apk사용시에 기존보다 약 2메가 용량이 감소하였습니다. 정말 이제는 필수 라이브러리가 될것 같습니다. 기존의 버그도 많이 수정되었습니다.

okhttp 3.0라이브러리도 정식으로 지원합니다.

Written by pinkredmobile

2016/01/14 at 2:52 pm