Android Lollipop Arrival – Google Calendar Update – Samsung Galaxy S6 Rumor Jayce talks about what is delaying the Lollipop update, Google calendar being revised, and the rumors surrounding the Galaxy S6! Good... source
seen from United Kingdom

seen from Singapore
seen from Chile
seen from Russia
seen from Japan
seen from China

seen from Singapore
seen from United Kingdom

seen from United Kingdom
seen from Japan

seen from United Kingdom

seen from United Kingdom

seen from Australia
seen from Singapore
seen from China
seen from Austria
seen from China
seen from China

seen from Malaysia

seen from Singapore
Android Lollipop Arrival – Google Calendar Update – Samsung Galaxy S6 Rumor Jayce talks about what is delaying the Lollipop update, Google calendar being revised, and the rumors surrounding the Galaxy S6! Good... source
Android Wear, Motorola 360, LG G Watch, Oppo Find 7 Rocks! - Android Weekly - Join Jayce as he talks about what is in store for new wearable devices running Android Wear. Oppo tries to make a splash with thier new high-end smart phone, the Oppo Find 7. Galaxy S5... source
Google Smart Contact Lens & Endgame: New Augmented Reality – Android Weekly Join Jayce as he talks about Google's new Smart Contact Lens and their new augmented reality game based on author James Frey's new book series called Endgame. source
What HTC One M8 Means for Selfies? Android for Business & Google Now Comes to Chrome - Jayce talks about why the HTC One M8 has only a 4 megapixel rear facing camera, but a 5 megapixel front facing camera? Good news on Android for business, and how Google Now card features come to Chrome. HTC... source
What is Wrong with Samsung? - Android Weekly
What is Wrong with Samsung? – Android Weekly
Join Jayce as he talks about what could be in store for Samsung. Can Samsung innovate? Can they remain at the top of Android OEMs?
Android Weekly:
LG… source
View On WordPress
Android Weekly 171 ~ 180 리뷰
밀린 Android Weekly 몰아보기!
171
Testing Intents With Espresso Intents
오, espresso intent를 사용하면 espresso에서 간단하게 1) 외부에서 넘겨받을 인텐트의 값을 만들어낼 수도 있고, 2) 호출된 인텐트의 값이 제대로 들어왔는지 확인할 수 있네!
Unit Testing RxJava Observables and Subscriptions
RxJava를 안써서 잘 모르겠지만, 나중에 단위테스트라도 적용할라치면 도움이 될 듯 하다.
Observable 테스트 하고 싶다면 TestSubscriber 써라
subscribe 하는 클래스 동작 테스트하고 싶다면 observable 목킹하고, 기본 스케쥴러를 override
Observable 실행 훅을 등록해서 observable 트래킹하라.
Android Feature Graphic Generator
플레이 콘솔에 앱을 출시하려면 아이콘 외에도 몇 가지 이미지 리소스를 더 올려야 한다. 스샷은 어찌어찌 만들겠지만 피쳐 이미지만 해도 디자인이랑 친하지 않은 개발자에겐 만들기 귀찮은 노릇인데, 대충 글자만 휘갈긴 이미지를 손쉽게 만들 수 있는 사이트이다.
172
Speed up your app
도전적인 제목에 걸맞게 아주 훌륭한 글이다. Systrace, Traceview, AllocationTracker 등 여러 성능 측정 도구들을 소개하고, 메모리나 드로잉 쪽에서 신경써야 할 부분을 총망라한 글이다. 굳굳! 근데... 알아도 실상 몇개만 쓰게 되네.
Approaching Android with MVVM
data binding을 이용해서 안드로이드에 MVVM 모델을 구현하는 방법을 소개한다. 코드까지 제시한 꽤 친절한 포스팅이니 찬찬히 보면 도움이 될 듯 하다.
Archi
또 다른 MVP / MVVM 예제. 너무 많다 ㅎㅎ
173
Optimizing Android bytecode with ReDex
페이스북이 만든 코드 최적화 도구인 redex를 소개하는 글이다. proguard 등도 이미 bytecode 최적화를 하고 있는데, 어떤 점에서 더 나은 지 모르겠네.
Android development like a pro
fragment의 단점을 지적하며 presentation 계층을 도입했는데 내가 보기엔 fragment보다 훨씬 더 복잡해보이는데 내가 잘못 이해를 했나? 게다가 WeakReference까지 총출동하고 구현체 하나밖에 없을 interface를 선언하는건 좀 이해가 안된다. @_@
Async Android
여러 안드로이드의 비동기 구현 모델을 소개하며, RxJava의 상대적인 장점을 설명한다. 기승전RxJava.
Functional Android (II): Collection operations in Kotlin
kotlin엔 정말 다양한 collection 함수들이 있구나! 당장 써먹을 수 없어서 군침만 흘리게 되네.
Annotations to support your contracts
support annotation에 대한 간단한 소개이다. @IntDef 류, @Nullable 류, @UiThread 류의 애노테이션을 잘 쓰면 정적분석의 도움을 받아 잠재적 오류를 찾아낼 수 있으니 적극적으로 사용합시다!
ExplosionField
뷰를 폭발시키는 애니메이션을 제공하는 재밌는 라이브러리이네. 우와! 소스를 살짝 보니 ValueAnimator를 만들어서 뷰로 부터 bitmap을 만들고, bitmap 기반으로 부서진 조각(Particle)을 만들어서 애니메이션을 돌리네. 아이디어 멋지다!
RxJava for Android App Development
O'Reilly가 제공하는 RxJava for Android App Development라는 공짜 e-Book을 받을 수 있다. 30페이지 남짓하지만 RxJava를 처음부터 익히려는 사람(나?)에겐 도움이 될 듯.
174
Sharing files on Android in a world with runtime permissions
안드로이드 M의 런타임 퍼미션은 참 많은 괴로움을 만들었는데, 이 글에선 action_send 를 받아 처리하는 쪽에서 READ_EXTERNAL_STORAGE 퍼미션을 처리해야하는 괴로움을 다룬다. 글에서 언급한 mike murphy 아저씨의 글 Runtime Permissions, Files, and ACTION_SEND에선 이 내용을 좀 더 다루고 있다.
file:// 가 넘어오면 READ_EXTERNAL_STORAGE 퍼미션 취득해서 접근하면 되고, content uri 가 넘어오면 FileProvider를 "잘" 쓰면 된다. 난 ContentProvider를 직접 써서 잘 몰랐는데, FileProvider엔 문제가 있나보군. 크으...
175
Vectors For All (almost)
내가 쓴 글, 안드로이드 프로젝트에 vector drawable을 적용해보려고 삽질했던 기록과 비슷한 결론이다. 아직 svg -> vector drawble 변환 도구의 완성도가 높지 않아, 디자이너가 만들어준 svg를 이용해 벡터를 본격적으로 활용하기 쉽지 않다.
Develop a secured Android application
보안 측면에서 더 안전한 앱을 만들기 위한 몇 가지 방안을 제시한다. 우선 네트웍 보안 강화를 위해 X509TrustManger를 확장한 커스텀 클래스를 제안한다. 다음으로 SharedPreference 보안 강화를 위한 방안을 제안한다. 마지막으로 소스코드 리버스엔지니어링을 어렵게 만드는 방법을 제안한다. 첫 두가지는 재밌는데 마지막은 난독화하고 native library 쓰라는 좀 뻔한 이야기이네.
Beware EditText on API 21
api 21에서만 edit text의 하단 padding이 다른가보다. 이건 또 몰랐네. 으으으...
TextSurface
텍스트로 꽤 멋진 애니메이션을 만들어주는 라이브러리이다. 멋지네! 이름대로 surface view로 만들었나?
176
Android Basic Project Architecture for MVP
또다른 MVP 글. 근데 Domain Layer 라는 게 좀 난데없다. Model layer 를 다르게 언급하고 싶었던 것 같은데, 그냥 모델 레이어라고 하는게 맞지 않았을라나. 그리고 GetPopularTitlesUsecaseController 코드를 보면 막 이쪽 이벤트 버스에서 unscribe 하고 저쪽 이벤트 버스에 subscribe 하는데, 이게 관리가 되려나. 갸우뚱...
MVP 라는 타이틀을 빌어 사람마다 다 맘대로 구현한다는 느낌이 무럭무럭 든다.
Material ProgressBar
롤리팝 프로그래스 바와 머티리얼 프로그래스 바를 비교한 영상이 첨부되어 있는데, 난 뭐가 다른지 잘 모르겠다 -_-;
Testing the Geofencing API
genymotion , genymotion shell 을 이용해 geofencing API 테스트를 이야기하는데, genymotion shell을 이용해 위치조작하는 방법이라고 이해하면 될 듯 하다. 잘 이용하면 위치 simulation을 자동화하는 데 좋은 힌트가 될 듯 하다.
Using hardware layers to improve Android animation performance
하드웨어 레이어를 이용하면 애니메이션 성능을 올릴 수 있다는 글. 요약하면 애니메이션 시작 전 hardware layer 설정 -> 애니메이션 실행 -> layer 리셋하라. min api lv 16+ 이고, ViewPropertyAnimator 를 쓴다면 간단히 withLayer() 메서드만 붙여도 된다. 하지만 여러 자식들이 animation 되는 와중에 parent에 hardware layer를 적용한다면 invalidate 될 때 마다 GPU 캐싱이 일어나 성능이 오히려 떨어질 수 있으니 조심해서 적용하라고 한다. 이런 문제는 개발자 옵션에서 "Show hardware layers updates"를 켜서 계속 녹색불이 들어오는지를 보고 확인할 수 있다.
마지막 부분에 샘플을 가지고 테스트한 내용도 있으니 앱에 애니메이션을 사용하고 있다면 꼭 알아둬야 할 내용으로 보인다. 굳굳
Build a Material Design App with the Android Design Support Library
design support lib.을 이용해 머티리얼 디자인 적용하는 방법을 알려준다. 그것보다 이 google codelab 사이트 굉장히 잘 만들었네!
Android Development Tidbits // No. 2
짧은 안드로이드 개발 팁을 적은 글이다. 시리즈가 더 많이 있으니 함께 읽어보자. : 1, 3, 4 , 5, 6, 7, 8
몇 가지 눈에 띄는 걸 꼽아보면 다음과 같다. * 머티리얼 디자인의 8dp 레이아웃 확인용 앱: keylines * sqlite query 의 ? 변수 개수는 한정되어 있음: Limits In SQLite 의 9번 항목인데, 나도 한번 문제가 된 적이 있다. 저런 한계가 있다는 것과 별도로, ? 변수를 동적으로 추가하는 쿼리를 만든다는 것 자체가 문제라고 생각한다. * ContentLoadingProgressBar : 껌뻑하고 바로 사라지는 progressbar를 피하기 위해선 잠깐 기다렸다 progressbar를 보여줘야 하는데, 이 클래스를 쓰면 쉽게 구현을 할 수 있나보다. * If you want your views to save state, you MUST give them an id : 예전에 form을 복구할 때 뭔가 이상하게 복구되어서 id 들을 손봤던 기억이 난다. * When opening the camera app on Android 6.0+ with an intent, you need to request Camera permissions to actually get back a result : 이거는 정말 이해가 안감. 굳이 app 자체적으로 permission 선언할 필요없이 컨텐트에 접근하라고 intent 만들었으면서 (가이드도 그렇게 하고), 카메라 intent를 날리려면 앱이 camera permission을 선언해야 한다. 뭔가 어뷰징 (ex. 몰카앱?) 을 막기 위한 용도라고는 보이긴 하지만.
FlowingDrawer
효과 끝내준다 ㅎㅎ
ViewInspector
뷰 profiling, layout 분석 등등이 다 들어가있는 종합 선물세트네. 한번 적용해봐야겠다. 깃헙 페이지에 나온 관련 도구들도 살펴보면 좋을 듯.
177
Mastering the Coordinator Layout
design support lib. 에 추가된 coordinator layout 소개 글이다. 이것도 익혀둬야 하는데 언제 써볼런지 @_@
The Complete Guide to Creating and Publishing an Android Library
제목에서 얘기하듯, android library 프로젝트를 sonartype의 repo에 올리는 방법을 잘 설명하고 있다. 안해봤지만, 왠지 이것만 따라하면 다 될 것 같은 느낌적인 필링
Fragment transitions with shared elements
activity transition 과 달리 fragment transition에선 shared element 처리가 훨씬 간단한 듯 하다. fragment transition에서 shared eleement 활용 방법을 잘 정리한 글이다.
Exploring Google Play Services: Place Picker & Autocomplete
플레이 서비스만 이용해도 위치 피커 / 자동완성을 쉽게 구현할 수 있구나!
plaid
머티리얼 디자인 쇼케이스 앱인데, 제작자가 구글의 nick butcher이니 더 눈여겨봐야할 듯!
178
The Perils of Loading Native Libraries on Android
멀쩡히 들어가있는 라이브러리인데도 UnsatisfiedLinkError 크래시 건이 잡히는데, 이 문제의 발생 원인을 분석하고, 해결책으로 Relinker 라는 라이브러리를 제공한다. ReLinker v1.2 is Here! 도 같이 읽어보면 좋을듯.
native library를 쓰는 앱이라면 ReLinker를 한번 들여다봐얄듯!
Debugging RxJava on Android
gradle plugin으로 동작하는 frodo라는, rxjava 로깅 도구를 소개한다. 깃헙 스타가 850개나 되네! RxJava를 공부하게 된다면 유용하게 활용할 수 있을 듯 하다.
On Activities using Theme.NoDisplay
화면에 보이지 않는 액티비티를 선언할 때 Theme.NoDisplay로 테마를 지정하면, 윈도우 자체가 생성되지 않기 때문에 바로 finish() 하는 경우가 아니라면 앱 크래시의 위험이 있으니, 이 경우엔 Theme.Translucent.NoTitleBar로 테마를 설정하라는 이야기.
Fixed aspect ratio with the Percent Support Library 23.1
오호, PercentRelativeLayout등을 이용하면 자식 뷰의 aspect ratio를 xml 상에 app:layout_aspectRatio="178%" 형태로 바로 지정할 수 있구나. 기존엔 이거 하려면 화면 폭 알아낸 다음, 거기에 종횡비 구하고 나서 처리했어야 하는데. 굳굳
Dynamic Android dependency versions done right
gradle dependency의 라이브러리 버전을 동적으로 판단하도록 설정하면 아마 lint warning이 떴던 걸로 기억한다. 너무 동적이면 문제가 될 수 있으므로 이 글에선 generateLock, saveLock 이란 gradle의 옵션을 소개한다.
./gradlew --refresh-dependencies generateLock saveLock
근데 나는 그냥 동적 버전 쓰지 않겠다. 굳이 여기저기 까서 의존 라이브러리 버전을 확인해야 하는 수고를 해야하나? 또한 버전 올리면 명시적으로 커밋을 남기는 것도 필요하고.
179
Unique Identifiers: There’s a better way with Instance ID
아이폰에선 디바이스 고유값을 시스템이 제공했는데, 안드로이드에선 이런 값을 관리하기가 수월하지 않았다. 하지만 이젠 instance id를 이용하면 이런 작업을 좀 더 쉽게 할 수 있다. 하지만 이름 그대로 앱 인스톨 인스턴스 별 식별자라서 해당 디바이스에 앱을 재설치한다면 값이 바뀌게 되니, 디바이스 고유값이 필요하다면 uuid api 등을 이용해 직접 관리해줘야 한다.
RxJava’s Side Effect Methods
RxJava에서 steam과 독립적으로 활용할 수 있는 메서드를 제공하나보다. resource 정리 등등에 활용할 수 있나본데, RxJava를 써 봤어야 말이지...
FlycoTabLayout
오와, 짱이다. 탭에 빨간 점, 뱃지 인티케이터 다 구현된 라이브러리네. 중국분이 만들었나본데, 같은 아시아라서 요구사항이 비슷했나. 여튼 이것만 갖다 쓰면 다 될 듯.
180
Improving UX with RxJava
RxJava 의 debounce 등을 이용해 똘똘하게 자동완성을 구현하는 방법을 설명한다. 뒷 부분엔 에러처리를 소개하고 있는데, 네트워크 연결되면 자동으로 재시도한다고 얘기했는데 이 전략은 좀 동의하기 어렵지만, 하여간 RxJava를 이용해 복잡한 시나리오를 깔끔하게 구현하는 방법을 소개한다.
Exploring Meaningful Motion on Android
animator, interpolator, transition 까지 안드로이드 애니메이션의 여러 부분들을 간략히 소개해준다. 한번 다시 복기하는 용도로 좋은 글.
Overscroll AppBarLayout Behavior
overscroll일 때 상단 이미지에 확대 효과를 주는 방법을 설명한다. 이 기능을 쓸 일은 없을 듯 하지만, overscroll일 때의 대응방법을 참고할 때 좋을 듯.
Android Weekly 161~170 리뷰
밀린 Android Weekly 몰아보기!
근데... 너무 밀렸다. 2015년 9월 내용이네-_-;
161
Spock Ahoi!
읽기 좋은 테스트를 작성하기 위한 시도는 끊임없이 계속 되고 있다. 이 글에선 spock 이라는 프레임워크를 이용해 안드로이드 테스트 코드를 깔끔하게 작성하는 방법을 소개한다. spock은 groovy 기반으로 테스트 코드를 작성하나보다. 흐음, 근데 테스트 작성을 위해 그루비까지 끌고와야 할까?
Java 8 Stream on Android
retrolambda와 lightweight stream api를 조합해서 안드로이드에서 java 8 의 stream 비슷하게 collection을 다룰 수 있도록 하는 방법을 소개한다. 그런데 실무 프로젝트에 사용하기엔 왠지모르게 좀 걱정이 앞선다. 또한 댓글에선 지적한 stream과 달리 lazy evaluation이 안된다는 큰 단점도 걸리고.
Gradle tip #3: Tasks ordering
gradle에서 task 의존관계, 실행순서를 지정하는 방법을 소개한다. dependsOn 정도밖에 몰랐는데 여러가지 많네. 본문에서도 소개하지만, finalizedBy 메서드는 최신 버전인 2.10 에서도 여전히 incubating 상태이다.
B.dependsOn A : A를 먼저 실행한 다음 B를 실행한다.
B.mustRunAfter A : B와 A가 모두 실행될 경우, B는 A 다음에 실행한다.
A.finalizedBy B : A를 실행해도 B가 실행된다.
Mortar-architect
mortar를 이용해 구성한 애플리케이션 구조로 파악되는데, Activity도 없이 ViewPresenter 등등으로 앱을 구성하니, 이쯤되면 이게 안드로이드 앱인가 싶다. 너무 멀리 간 것 아닌가.
ThreeTenABP
거장 jake wharton의 프로젝트로, java 8에 Date와 Calendar를 대체하기 위해 추가된 JSR-310 java.time.* 패키지의 안드로이드 포팅이다.
자바에서 Date, Calendar를 다뤄보면 꽤나 짜증이 나는데, 한번 적용해보고싶어지네.
162
android lint summary
커맨드라인에서 lint 결과를 보여주는 도구인데, 난 html로 봐서 쓸 일은 없을 듯. 근데 이쁘다.
A First Glance at Stetho tool
페북이 만든 안드로이드 앱 디버깅 브릿지 도구? stetho를 소개한 글이다. stetho는 정말 짱이다. 이 글에선 view단을 보여줬는데, 무엇보다 network과 db 네비게이션엔 이만한 도구가 없다. 이거 몰랐을 땐 힘들게 proxy등에 붙었지만 stetho를 쓰면 아주 쉽게 network 단 추적을 할 수 있고, db도 직접 쿼리를 날리거나 update 등의 작업도 할 수 있다. 업무용으로 본격적으로 앱을 개발한다면 stetho는 필수 중의 필수이다.
Architecting Android…The evolution
retrolambda, rxjava, dagger 다룬 글들은 매우매우 많아서 딱히 열심히 읽어보진 않았는데, 마지막 gradle script 부분이 꽤 재밌다. 아래와 같이 dependency를 바로 설정하지 않고, 일종의 dictionary를 만들어서 쓰는데, 여러 서브 모듈이 비슷비슷한 라이브러리 의존성을 가진다면 이렇게 중앙에 정의해두고 쓰는 것도 좋겠다.
dataTestDependencies = [ junit: "junit:junit:${jUnitVersion}", assertj: "org.assertj:assertj-core:${assertJVersion}", mockito: "org.mockito:mockito-core:${mockitoVersion}", robolectric: "org.robolectric:robolectric:${robolectricVersion}", ]
Improving Your Code With Android Support Annotations
support library에 있는 support annotation 중 몇 개를 소개했다. 이 글도 살짝 보고, 전체 support annotation 목록도 한번 살펴보자.
GlidePalette
유명한 이미지 로더 라이브러리인 glide에서 쉽게 palette 기능을 쓸 수 있도록 도와주는 라이브러리. 재밌네~
awesome-android-ui
안드로이드 ui 라이브러리 목록인데, 엄청나게 많다. 우와! 시간가는 줄 모르고 봤네.
163
Glide - How Yelp’s Android App Loads Images
yelp 기술 블로그에 올라온 이미지 로더 라이브러리인 glide의 장점 소개 글이다. 가볍게 읽어보자.
Overview of the Android Design Support Library
또다른 design support library 소개글이다. 쓰으윽~ 한번 목록과 동영상 훓어보자.
InstaMaterial meets Design Support Library
instagram에 머티리얼 디자인을 적용해보는 샘플 프로젝트인 instamaterial 시리즈에 design support library를 적용해본 글이다. navigation view, fab, coordinator layout을 적용했다. 멋지네!
MAKING A TDD-BASED HACKERNEWS CLIENT FOR ANDROID
앱의 여러 구성 요소에 단위 테스트를 적용하는 방법을 참고할 수 있다.
Connect With the World Around You Through Nearby APIs
nearby api를 소개하는 구글 개발자 블로그 글이다. 처음엔 places api와 같이 위치정보 관련 기능인줄 알았는데, 근처의 앱 사용자들에게 메시지를 날릴 수 있는 기능이네. 오호! 흔들어 친구 맺기와 유사한 류의 기능에 활용할 수 있을 듯 하다. 글을 보니 이미 trello에 사용하고 있다고 하니 한번 trello 가지고 테스트해봐야겠다.
164
Deferring Observable code until subscription in RxJava
square의 dan lew 아저씨가 열심히 RxJava 관련 글을 올려주고 있다. RxJava는 글만 읽고 실전에선 아직 써 보지 못했지만, 제목과 내용만 봐선 observable을 subscribe 할 때 까지 값 평가를 지연시키는 내용인가보다. 하아, RxJava는 또 언제 해보나.
MVVM on Android using the Data Binding Library
design support library에 추가된 data binding 기능을 이용하되, ViewModel 레이어를 중간에 끼어넣어 구현하는 방법을 알려준다. 내가 data binding을 사용한다고 해도 이런 방식을 취할 듯 하다.
How to centralize the support libraries dependencies in gradle
몇몇 다른 글에서도 본, gradle에서 의존성 부분을 깔금하게 정리하는 팁이다.
WilliamChart
꽤 이쁜 차트 라이브러리이다. 2012년 말 프로젝트를 할 때만 해도 차트 라이브러리가 몇 개 안되고, 그다지 이쁘지 않았는데 요즘은 참 이쁜 챠트 라이브러리가 많네.
Blurry
이미지 블러 라이브러리이다. 설정쪽을 보니 renderscript도 사용하나보다. 블러 쓸 일이 있다면 유용하겠네. 2.3 이상 사용가능.
165
Android Testing Blueprint
unit test, instrumentation test 등 다양한 테스트를 작성하기 위한 참고자료이다. 굳굳
RxJava Code Review Part 1
RxJava 코드 분석글이다. 엄청 많을 줄 알았는데 part1, part2 두개가 전부네. 읽어봐야 할 텐데...
Flux Architecture on Android
facebook에서 클라이언트 사이드 웹 애플리케이션 용으로 제안한 flux 아키텍쳐를 안드로이드에 적용해 본 방법을 설명한다.
dispatcher는 액션을 store에 전달하는 역할을 하는데, 여기선 eventbus로 구현했다. view는 말 그대로 ui 뷰로, 안드로이드에선 activity나 fragment가 담당한다. store가 핵심인 듯 한데, 비즈니스 로직, 상태, 상태 변경 이벤트 발행 등을 담당한다. 중간에 보면 sotres are not repositories 흥미로운 대목이 나온다. API나 DB에서 데이터 가져오는 게 store의 역할이 아니라 action이 제공한 data들을 가지고 state관리하는 게 핵심인 듯 하다. data 가져오는 건 action을 만들어내는 action creator가 하네.
뭔가 개념은 좀 심플한 듯 한데 이것도 한번 살펴봐야 할 듯.
Using Espresso for Easy UI Testing
espresso로 ui 테스트 하는 방법을 소개한다. UI 테스트를 할 경우, api 등의 호출로 결과를 받을 때 까지 대기해야 하는 경우가 생기는데, 단순히 thread.sleep 등으론 부족한 점이 많다. 여기선 IdlingResource 라는 interface를 이용해 이런 경우를 깔끔하게 처리하는 방법을 알려준다. 굳굳!
166
Face Detection in Google Play services
구글 플레이 서비스가 제공하는 mobile vision api 중 얼굴 식별 관련 기능을 설명한다. mobile vision api는 얼굴 식별, 바코드(+QR코드) 인식 두가지 기능을 제공한다. 직접 만들긴 굉~~~장히 어려운 기능인데 굳굳!
FlatBuffers in Android - introduction
api 통신은 거의 json으로 대동단결한 상태인데, 이 녀석은 오가는 데이터량이나 자바 객체로 파싱하는 비용 면에선 그다지 바람직하지만은 않다. 이런 욕구를 해소하기 위해 구글은 flatbuffer를 제공한다. flatbuffer는 모델에 대한 스키마를 정의한 후, 라이브러리가 제공하는 컴파일러를 실행하면 모델 객체, 변환된 데이터 파일(json to flatbuffer binary)를 생성한다. 이 글은 이러한 과정을 쉽게 따라할 수 있도록 설명한다. 모든 데이터 통신에 flatbuffer을 활용하긴 어렵겠지만, 특별히 복잡한 모델 구조나 양이 많은 데이터의 경우엔 꽤 효과적인 방식이라고 생각한다.
Iconify just got a lot better
Iconify라는 라이브러리를 소개한다. TextView를 확장해서 폰트 기반 아이콘을 손쉽게 표현해 주는 뷰를 제공한다. custom font도 사용할 수 있고, 빙빙 돌아가도록 설정도 가능하다. 빙빙 돌아가는 걸 어떻게 구현했을까 찾아보니 span의 canvas rotate를 하고,post animation을 붙이는 방법을 썼다. 오호~ 재밌네!
Quick return with CoordinatorLayout
design support library에 추가된 CoordinatorLayout을 이용해 quick-return view를 만드는 방법을 쉽게 설명했다. 굳굳~
List of Android Testing Libraries
안드로이드 테스트에 필요한 라이브러리, 도구들의 목록이다.
167
Tinting drawables
support library가 제공하는 DrawableCompat과 다른 방식으로 구현한 TintedBitmapDrawable을 소개한다. 그런데 굳이 이걸 써야할까 싶은 생각이 들긴 하네.
Percentage Based Dimensions and Margins with the Percent Support Library
linear layout 이나 relative layout이라는 두 개의 도구만 쓰다보면 중첩된 레이아웃을 피하기 어렵다. 정말 복잡한 거라면 모르겠는데, "아 이거 꼭 이 방법밖에 없나!" 하고 아쉬울 때가 많은데, Percent support library까지 활용하면 좀 더 레이아웃을 간단히 만들 수 있을 듯 하다. percent 패키지 제공하는 레이아웃은 PercentFrameLayout 과 PercentRelativeLayout 두 가지이니, 아마도 relative layout을 주로 쓸 듯.
A small leak will sink a great ship
square에서 공유한 메모리 릭 탐지 사례. leak canary를 이용해 메모리 릭을 찾아갔더니 범인은 alert dialog에서 흔히 쓰는 DialogInterface.OnClickListener였다고. 이 과정을 찾아내는 과정을 설명하는데 재밌으니 한번씩 읽어보시라.
Coordinator Behavior example
coordinator layout 샘플인데 꽤 훌륭해보인다!
168
Tools of the Trade
tools namespace, support annotation을 설명한다. 잘 활용하면 안드로이드 스튜디오에서 손쉽게 잠재적인 문제를 찾아낼 수 있다.
Speed up your app
이 글은 systrace, MAT, hierarchy viewer 등 다양한 성능측정도구를 소개한다. 근데 pt만 봐선 어떤 부분을 강조하는지 잘 감이 오질 않는다. youtube 영상도 같이 봐얄 듯
Android Camera 2 API
camera api는 한번 살짝 써 본 경험밖에 없는데, 기계마다 너무너무 달라 이쪽도 다신 해 보고 싶지 않았다. os 버전 올라가면서 api 레벨 21에 camera2 api 가 도입되었는데, 이 pt를 읽어봐도 아후 굉장히 복잡하다. 그냥 카메라 api는 앞으로도 접근할 일이 없었으면 하는 생각만 들 뿐이네.
Preferences Support Library: Preference Fragments for API 7+, no matter the Activity
Preferences Support v7 Library를 이용하면 구버전 os에서도 더 이상 PreferenceActivity이 아닌 Activity에서 PreferenceFragment를 이용해 preference ui를 구성할 수 있다. 근데 이거 많이 쓰나? 실제 프로젝트에선 설정 화면에서도 워낙 이런 저런 디지안 등이 많이 들어가서 한번도 써보질 않았는데.
Android Architecture
MVC, MVP, MVVM 아키텍쳐를 간략히 소개한다. 근데 이거만 봐선 딱히 감이 잘 안오지... MVP 관련해선 구글이 만든 android architecture 쪽을 같이 살펴봐야 할 듯.
Announcing the Android Auto Desktop Head Unit
안드로이드 오토용 앱을 개발하려고 자동차에 들어앉을 순 없으니 딴 방법이 있어야지! sdk에 포함된 데스크탑 헤드 유닛을 이용하면 음성 출력, 입력 모두 잘 테스트할 수 있다. 다만 설정 관련해선 Run and Test Auto Apps 부분을 잘 읽어봐야 한다. 파나소닉 등의 실물 헤드유닛의 경우엔 구글 플레이에 오토 앱으로 출시를 해야만 동작하기 때문에 그 전엔 무조건 DHU를 써야 한다.
Using styles and themes without going crazy
theme, style을 적용하는 방법을 설명한 글이다. 안드로이드 N에선 multi-window 관련해서 또 뭔가 달라진다는데, 안드로이드 테마는 다뤄본지 너무 오래되어 이젠 가물가물한데 엄청 구렸다는 기억만 대충 남아있네.
MVVM using Data Binding
안드로이드 databinding을 이용한 mvvm 샘플이라는데, mvp 샘플등과 함께 비교해봐얄 듯...
SCViewPager
요즘 자주 보이는 뷰페이저에 애니메이션을 적용하는 라이브러리 샘플이다. 근데 뒷 페이지용 뷰를 어떻게 먼저부터 알고 있나 보니 그냥 해당 뷰를 따로 가지고 있네.
169
Unleash functional power on Android (I): Kotlin lambdas
kotlin 얘기는 참 많은데, view.setOnClickListener() 를 어떻게 줄이는 지 하나하나 보여주는 단계가 참 재밌네.
... 이번 호에는 별로 관심 가는 토픽이 없네
170
Google Play Services: Using the Nearby Connections API
nearyby api로 통신하는 샘플코드이다. 나중에 nearby api를 사용하게 된다면 한번 살펴봐야겠네!
Flowchart for background work, alarms, and your app
한장으로 정리한 백그라운드 작업 선택 흐름도!
HomeMirror
헉, 스마트 거울 프로젝트의 레파지토리도 있었네! 엄청 탐난다.
LayerVisualizer
안드로이드 ui의 레이어를 3d로 살펴볼 수 있게 해 준다. 예전에 웹 페이지도 이렇게 보여주는게 있었는데.
RxMarbles
Rx* 계열의 메서드의 동작을 비주얼하게 보여준다. 멋지네!
Android Weekly 151~160 리뷰
밀린 Android Weekly 몰아보기! 게으름피우다 또 한참 밀려버렸네.
151
How to add a Native Facebook Like Button to your Android app using Facebook SDK for Android v4
제목이 매우 긴 포스팅이다. 제목 그대로 페북 SDK를 이용해 앱에 like 버튼을 붙이는 방법을 설명하는데, 본론인 like 버튼 붙이기는 유용한지 잘 모르겠지만 페북 SDK 연동을 굉장히 자세히 설명했기 때문에 페북을 연동할 생각이라면 참고하면 좋겠다.
본론으로 돌아가, 페북 SDK도 like 버튼을 제공하긴 하는데, 1. like 하기 전엔 like 수를 알 수 없고, 2. 페북 앱이 깔리지 않았다면 like 자체를 할 수 없다. 그래서 이 글에선 위 두 가지 조건을 충족하는 ui작업을 설명한다. 이걸 별도의 library로 제공하기도 하니 like를 붙일 계획이라면 참고하면 좋을 듯.
Dagger 1 to 2 migration process
Dagger 1 -> 2 마이그레이션 과정을 예제를 이용해 잘 설명한 글이다. Dagger 1과 2의 차이를 이해하는데 도움이 많이 되네. 프로젝트에도 써먹어봐야 할텐데...
MaterialViewPager
머티리얼 디자인의 view pager 구현이다. 멋지다. 예전에 스와이프 + 상단 스크롤 구현을 하려다 포기했던 기억이 나서, 이 라이브러리의 코드는 한번 꼭 들여다봐야겠다.
androidtool-mac
맥용 안드로이드 개발 보조도구이다. 스크린샷, 비디오 녹화, apk 인스톨 등 기능이 있네. 우왕, 당장 써봐야겠다!
152
LeakCanary: Detect all memory leaks!
메모리 릭을 찾아주는 유용한 도구이다. 액티비티를 종료할 때 gc를 호출해서 액티비티 진입 전/후 메모리를 비교한다. 그런데 항시 돌리기엔 앱 사용성이 많이 떨어져서 간간히 사용하는 정도로 활용해야 하고, singleton 등이 너무 많이 detect되는 부분도 조금은 아쉽다. 물론 추가적인 커스터마이징으로 이런 부분은 극복이 가능할 듯. 그래도 도움이 많이 된다.
Custom ViewGroups
커스텀 뷰 그룹을 만드는 방법을 간단히, 하지만 효과적으로 설명한다. 비슷한 주제로 나도 간단히 글을 남겼으니 요것도 참고하시길.
이번 호엔 별로 눈에 띄는 내용이 없네...
153
Google Play Services: Using the Places API
플레이 서비스에 추가된 place API를 적용하는 방법을 설명한다. 예전 POI 관련 기능을 개발할 때 지도는 구글맵을 써도 주변 POI 정보는 관련 api가 없어서 어쩔 수 없이 foursquare의 api를 썼던 기억이 나는데 이젠 구글이 POI 관련 api까지 제공하니 나중에 위치 기반 서비스를 한다거나 할 때 활용하면 편할 것 같다. 물론 한국 내 정보는 다음이나 네이버에 비해 만족스럽지 않긴 하지만.
Boosting the performance for Gradle in your Android projects
꽤 널리 알려진 gradle 빌드 속도 올리기 팁을 소개한다.
build.gradle
task wrapper(type: Wrapper) { gradleVersion = '2.4' }
.gradle/gradle.properties
org.gradle.daemon=true org.gradle.parallel=true
The Ins and Outs of Gradle
안드로이드 gradle에 입문하는 분들에게 도움이 될 소개글이다.
Hardware-accelerated disk encryption in Android 5.1
안드로이드 5.1엔 디스크 암호화에 하드웨어 가속 기능이 추가되었다고 한다. 벤치마크 결과를 보면 소프트웨어 처리한 경우보단 2배 더 빠르지만, 그럼에도 불구하고 암호화 하지 않은 경우보단 40% 느리다고 한다. 넥6 등의 디바이스는 이미 지원을 할 수 있지만 안정성의 문제로 실제 활성화되어 있진 않다고 한다.
아직 안드로이드의 OS 수준의 암호화는 소프웨어어적 처리만 지원하고, 이걸 켜면 디스크 I/O가 두배 정도 느려질테니 활성화되기 어려운 상태로 보이네.
Espresso UI testing with RxJava
RxJava를 Espresso에 사용할 수 있도록 만든 RxPresso 소개글이다.
강력한 언어가 필요한 곳이 어쩌면 테스트가 아닐까 싶은데, 그런 점에서 꽤 괜찮은 시도로 보인다. 멋지네!
rxPresso.given(mockedRepo.getUser("id")) .withEventsFrom(Observable.just(new User("some name"))) .expect(any(User.class)) .thenOnView(withText("some name")) .perform(click());
Frame Animations in Android
안드로이드에서 frame animation을 구현하는 방법을 설명한다. 전통적으로 animation-list를 사용하면 되었는데, animated-selector는 처음 구경했네. lollipop 이상만 지원할 거라면 아주 쉽게 구현할 수 있게 되었네!
154
Using Transitions API to Create Android App Animations
Activity 정도의 transition은 사용했는데 kitkat에선 transition framework란게 추가되었었네. scene을 정의하고, scene 간 애니메이션을 줄 수 있어서 뭔가 유용하게 쓰일 수 있을 듯 하다. 안드로이드 training에도 관련 문서가 있으니 이쪽 먼저 들여다봐야겠다.
음, 154도 그닥 볼 거리가 많진 않았다.
155
Only on Android
유명한 roman nurik 아저씨의 포스팅이다. 5개의 앱들이 상호작용하여 핸드폰의 배경사진을 와치의 배경으로 설정하는 과정을 설명한다. 안드로이드로는 이런 것도 가능해! 라는 플랫폼 자랑. 5개의 앱들을 엮는 과정이 재밌다.
cheesesquare
구글에서 support library를 만드는 chris banes가 만든 android design library 데모. 오호!
156
Android Design Support Library
구글 I/O 에서 소개된 design support library의 여러 컴포넌트를 소개한다.
157
Gradle tip #1: tasks
이제 gradle 모르곤 android 개발을 하기 어려운 시기가 되었는데도 gradle 문법은 볼 때 마다 헷갈린다. 3개 파트로 나뉜 글인데, 읽으면 도움이 많이 될 듯?
Developing for Android, III: The Rules: Performance
유명한 chet haase 아저씨의 글이다. 여러 좋은 말씀들이 적혀있는데, 그 중 levelDB 소개 글이 눈에 띄인다.
서비스에 대한 언급에선 Services Should Be Bound or Started, Not Both라는 부분이 눈에 띄고, Avoid View-Related References in Asynchronous Callbacks 등도 눈에 띈다.
Part I 부터 시리즈 전체를 한번씩 쭉 읽어보면 좋을 듯.
Open-sourcing Facebook Infer: Identify bugs before you ship
안드로이드 개발에 사용할 수 있는 정적 분석도구가 이미 꽤 여러가지가 있는데, 페이스북이 만들었다고 하니 다시한번 눈길이 간다. github 페이지를 보니 여전히 열심히 개발중이네. 오호!
Droidcon Montreal - Dave Smith - Mastering Recycler View
Recycler view 내부 동작을 다룬 발표라서 한번 봐 둬야겠다.
158
Exploring the new Android Design Support Library
design support library의 여러 컴포넌트를 소개하는데, 이런 저런 옵션 용도를 잘 보여준다. 굳굳
Why you should avoid using an event bus
나도 eventbus를 꽤 오랫동안 사용해오고 있는데, 마구 쓰면 위험할 수 있는 도구라는 데 동의한다. 이 글은 몇 가지 주의해야 할 점을 얘기하고 있다
이벤트 처리 도중에 또 이벤트를 만들어서 eventbus로 던지지 말아라.
이벤트가 생기면 바로 subscriber들에게 전달될거라고 생각하지 말아라.
그리고 이런 저런 대안으로 역시나 RxJava를 소개... 역시나 대세는 RxJava인건가!
Level-up with Android Studio Shortcuts and Live Templates
여러 안드로이드 스튜디오 단축키 팁들을 적어뒀다. 다 수족같이 부리면 좋겠지만, 그렇진 못해도 몇 개는 익혀둡시다.
Hidden Cost of Transparency (100 Days of Google Dev)
투명은 비싸다! 가아아아아급적 피하자!
159
Codelab for Android Design Support Library used in I/O Rewind Bangkok session
요것도 design support library 관련 글인데, 실제 적용하는 code lab 부분을 기록해 둔 글이라 도움이 많이 될 듯 하다.
Boom! Screenshot! Level up your test debugging with RunListener
ui automator 테스트 라이브러리를 이용해 손쉽게 스샷을 찍는 방법을 알려준다.
Android TextView-LinkBuilder
텍스트뷰에 링크를 넣는 쉬운 방법으론 fromHtml 정도가 있을텐데, 이 라이브러리도 편하게 쓸 순 있을 듯 하다. 하지만 쓸 일이 있을까?
160
Use colorPrimary to colorize your App Bar
테마를 이용해 툴바 색상을 지정하는 방법을 다룬다. 이젠 액션바가 아닌 앱바가 정식 명칭이군.
Introducing DeepLinkDispatch: Easy Declaration and Routing of Your Deep Links
딥링크를 쉽게 활용하기 위해 airbnb가 만든 DeepLinkDispatch 소개 글이다. 웹이랑 앱이랑 같이 운영하는 서비스라면 고민해볼 내용이겠다.
Part 2 – Welcome Snackbar, Goodbye Toast!
여러 파트로 나눠 snackbar를 다루고 있다. design support library에서 가장 눈에 띄는 부분 중 하나가 snackbar인데, toast를 완전히 대체하긴 어렵겠지만 undo 등등 사용자 경험을 높이는 데 유용할 듯 하다.
CatKit
고양이 placeholder. 이게 뭐야 ㅋㅋㅋ
LAYOUT TRAVERSALS ON ANDROID
레이아웃 패스 등을 다룬 좋은 자료인데, 아이고 어렵다. 영상이랑 같이 찬찬히 봐야겠다.