Android 개발에 Google Guava 라이브러리를 사용하는 것이 좋은 생각입니까?


122

저는 웹 서비스를위한 다소 "두꺼운"모바일 클라이언트 인 Android 애플리케이션 개발에 참여하고 있습니다. 서버와 많이 통신하지만 내부 논리도 많이 있습니다. 그래서 Google Guava개발 과정을 단순화하기 위해 라이브러리의 일부 기능을 사용하기로 결정했습니다 . 다음은 제가 매우 관심을 갖고있는 기능 목록입니다. 변경 불가능한 컬렉션, 기본 유틸리티, 컬렉션 확장, 함수형 프로그래밍 설탕 및 관용구 ( common.collectcommon.base), 기본 유틸리티 ( common.primitives), 해싱 유틸리티 ( common.hash), 동시 유틸리티 (미래 및 AsyncFunction). Android에서 사용 하고 싶지 않은 것 : common.cache(아래 질문 참조), common.eventbus( Otto 와 같은 더 나은 Android 전용 라이브러리 common.io가 있습니다 ), ( okio 를 사용할 수 있습니다 . Android 용).

: 나는 안드로이드 구아바를 사용하는 것은 상당히 느린 다운 컴파일 과정은 또한 전체 런타임 성능 감소시킬 수 있음을 읽을 수 안드로이드에 구아바 캐시와 나쁜 성능 (이 합리적이며, 안드로이드 구아바의 캐시를 사용할 필요가 없습니다이 경우) 및 추가 구글 Guava to Android 프로젝트-빌드 속도가 크게 느려집니다.

그렇다면 Android 프로젝트에서 Guava 라이브러리를 사용하는 것이 효율적 입니까? 아니면이 라이브러리가 서버 측 개발 에만 사용되도록 설계되었는데 표준 솔루션을 사용해야합니까? 어떤 설명이라도 대단히 감사하겠습니다.


2
" 하지만 나는 [...] "당신의 출처는 무엇입니까?
jlordo 2013

3
좋아 @jlordo 내 편집을 참조
올렉산드르 Karaberov

2
사용하는 것은 안전하지만 물론 : 필요에 따라 라이브러리의 각 클래스를 확인해야합니다. Guava Cache는 서버 측 (문서에 적절하게 작성 됨) 용으로 구현되었으므로 Android에서 사용하지 마십시오. 빌드 시간은 일반적으로 실제로 문제가되지 않으며 런타임이 더 중요합니다.
John Smith

4
appbrain.com/stats/libraries/details/guava/google-guava 는 Guava가 많은 Android 앱 에서 사용됨을 나타냅니다 .
Louis Wasserman 2013

3
새로운 답변을 게시 할 수 없다는 점이 부끄러운 일입니다 (재 개설에 투표했습니다). 주목할만한 65k 방법 제한 과 관련된 실제적이고 흥미로운 문제 가 있습니다.
Jonik

답변:


117

(댓글이 너무 커서 답변을 게시합니다.) 개인적으로 저는 모든 Java 프로젝트에서 전체 Guava 라이브러리를 사용하며 중요하고 적절하게 프로파일 링 된 성능 문제 가 없을 때 사용 합니다. 예를 들어 Android 환경에서와 같은 메모리 문제가있는 경우 ProGuard 를 사용 하여 실제로 필요한 Guava의 이러한 부분 만 얻을 수 있습니다 .

또한 Guava를 사용하는 Android 앱이 많이 있습니다. Google에서 직접 제공하는 Google 검색 및 Youtube와 같은 작은 앱뿐 아니라

( 호환성 정보 도 표시되어야합니다 .)


105
Guava 및 APK 크기 가 궁금했습니다 . 간단한 테스트를 통해 다음과 같은 결과가 나왔습니다. "Hello world"및 그다지 많지 않은 (디버그) : 27KB ; Guava (15.0) 종속성 및 사소한 Guava 사용 (디버그)이있는 "Hello world": 705KB ; ProGuard로 최적화 된 동일한 릴리스 빌드 : 22KB . 이 테스트는 Guava를 사용하면서 대규모 실제 앱을 개발하는 것과 함께 Android에서도 Guava가 완전히 괜찮다는 믿음을 확인했습니다!
Jonik 2014 년

2
또한 ProGuard가 Guava 종속성과 함께 작동하는 데 문제가 발생하면 방금 게시 한이 답변을 참조하십시오 .
Jonik 2014 년

2
Guava를 사용하는 상위 앱 링크에 대한 관찰입니다. 저는 페이스 북, 스포티 파이, 구글 번역을 많이 사용하고 있는데 그들은 거기에서 실행되는 가장 빠른 앱이 아닙니다. 사실 그들은 나쁘다. FB 말할 필요가 없습니다. 최신 업데이트가 포함 된 Spotify를 사용하면 Premium에서 Grooveshark로 이동할 수 있습니다. Facebook과 Spotify는 모바일에서 사용자 경험으로 인해 어려움을 겪고 있으며, 흥미롭게도 Google 번역이 그렇게 단순한 일로 인해 속도가 많이 느려 졌다는 것을 알게되었습니다. 이제 나는 구아바를 시도하지 않았습니다. 그러나 나는하기 전에 두 번 생각할 것이다. 이 링크입니다 appbrain.com/stats/libraries/details/guava/google-guava
albertpeiro

7
Guava lib에는 13,000 개 이상의 메서드가 포함되어 있기 때문에 Guava에서 알아야 할 사항은 Android 65k 메서드 제한입니다. Multidex 를 사용할 수 있으므로 한계에 도달하는 것은 문제 가되지 않습니다 (하지만 그에 대한 직접적인 경험은 없습니다). Futurice Android 모범 사례 가이드에서 관련 토론 을 참조하십시오 .
Jonik

3
@Jonik 더 많은 사람들이 언급하지 않는 이유를 모르겠습니다. 물론 당신은 proguard가 있지만 그만한 가치가 있습니까? 디버그 빌드는 어떻습니까? 이것에 대해서도 proguard를 실행해야합니다. 나는 multidexing도 해결책이라고 생각하지 않습니다. 앱에 쉽게 2 ~ 5 초의 로딩 시간을 추가합니다. 정말 큰 프로젝트에서 65k 제한에 도달하는 것은 그리 어렵지 않습니다. Imo Guava는 정말 팬이 아닌 그런 단일체입니다. 차라리 특정 기능 세트를 가져 오는 더 작고 집중된 라이브러리를 사용하고 싶습니다.
Joao Sousa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.