Google I/O 2017 Extended Seoul
구글 I/O 2017 Extended 정리 문서
카테고리
- 안드로이드
- Web
- ML, VR, …
들은 목록
Architecture Components - VCNC 김상일
아키텍쳐 컴포넌트는 구글 io에서 처음 이야기가 나옴.
4가지의 파트가 있다.
Handling LifeCycle
라이프사이클을 잘 관리할 수 있게 Observer, Owner등을 이용하여 라이프사이클을 관리.
LiveData
LiveData는 데이터 홀더 클래스로, 값을 observe 해서 가져옴. 위의 라이프사이를 이용해서 데이터를 가져오거나 처리함.
ViewModel
구글 홈페이지 설명에 따르면,
Store UI related data that isn’t destroyed on app rotations.
뷰를 참조하면 안됨.
Room
Access your data with the power of SQLite and safety of in-app objects.
- Sqlite ORM
- Entity
- DAO
- Database
현재 비트윈에서 사용하고 있는 것
- RxJava
- GreenDAO(얼마전까지 Realm 사용) …
아키텍쳐 컴포넌트를 사용하면 좋을 예는
RxJava를 잘 사용하고 있다면 그냥 그대로하면 됨. 하지만 처음 앱을 만들거나 RxJava를 이용해서 만들고 있지 않다면 쉽게 LifeCycle을 관리할 수 있는 아키텍쳐 컴포넌트를 사용하는게 좋다.
Kotlin: Make Android Great Again - Google 김태호
코틀린을 시작하면서
코틀린이란 뭘까?
코틀린은 정적 타입을 가지고 있는 언어. 자바와 100% 호환!
히스토리
- 2011년, 처음 시작
- 2016년, 릴리즈
- 2017년, 안드로이드 공식 언어로 발표됨
안드로이드
10년 전의 안드로이드는… 로고, 디바이스 모두 달랐음
이클립스를 IDE로 사용했음. 지금도 이클립스를 사용하고 있다면 놓아주세요…
자바를 개발 언어로 사용함.
지금은…
디바이스 많이 이뻐짐.
IDE가 안드로이드 스튜디오로 바뀜(인텔리J 기반으로)
가장 큰 안드로이드 개발 문제
자바로 개발한다면...
- 익숙한 언어, 풍부한 라이브러리
- 기존에 사용하던 리소스 활용 용이
- Java 1.7
- 1.8 버전을 사용하려면 Jack 활성화 필요
- null
- 값이 있을 수도 있고, 없을 수도 있습니다.
안드로이드 API 제한점
- findViewByID
- intent
간단하게 쓸 수 있는 것들을 많이 손대서 사용해야하는 불편함이 있음.
Java > Kotlin
유의사항
- 코틀린의 새로운 문법에 얽매일 필요는 없다.
- 자바에서 넘기는 객체는 주의해서 보자
- Method count
코틀린 도입 후 달라진 점
- 코드의 안정성 증가
- LOC(Line Of Code) 감소
- 모던 언어에 익숙해지게 됨
Application 용량 줄이기, 플레이윙즈 실적용을 중심으로 - 플레이윙즈 신호석
플레이 스토어에 올라간 용량만 믿지 마세요.
약 25% 정도까지 줄어서 올라가기도 합니다.
평균 용량(23MB)보다 높다는것은 사용자가 다운받기 힘들다는 것.
앱의 용량을 줄여야하는 이유
플레이윙즈 서비스의 특징을 생각해봤을때, 사용자들이 항공권 특가를 보기 위해서 바로 보기위해 다운받아야하는데 그 부분을 놓치면 안되기때문에
플레이윙즈를 분석해보고 용량을 줄여보자
총 사이즈는 20.8메가정도.
res가 53%를 차지하고 있었고 그다음은 매니페스트 부분.
minifyEnable
을 세팅하면 20.8 > 20 메가로 줄일 수 있었다.
Resources shrinking
기능을 사용하면…
안줄었다. 사용하는 이미지가 필요한것만 들어가 있어서!
Vector drawables
벡터파일은 png를 늘리고 줄이는 것보다 깨지지 않고 처리할 수 있다.
vectorDrawables.useSupportLibrary = true 세팅후 벡터 파일들을 세팅 해줘야 가능함.
이후에 20 > 17.9 메가로 줄여줄수 있었음.
exclude space translation
기능은 다국어를 지원할 때 기본어를 설정하고 빈칸을 합칠 수 있게됨 그럼 용량 줄일수 있음.
17.9 > 17.4 메가로 줄였음.
set specific circumstance
기능은 지원하지 않는 해상도 및 환경을 지원하는 것 또한 자원 낭비라서 선택하는것.
splits{
density{
...
}
}
use downloadable fonts
모든 폰트들을 하나의 저장소에서 관리하게 됨
안드로이드 3.0에 들어가있는 기능. 해봤더니 아직 잘안됨…
최종적으로 20.8MB > 17.4MB 로 줄일 수 있었음.
정리
- 시간대비 프로가드 설정은 해볼만하다
- exclude space translation도 해볼만하다
- Vector drawable은 제일 효과가 크다
- downloadable font도 적용하면 좋지만 아직 기다려야 한다.
안드로이드 O 살펴보기 - 양찬석
개발자 문서를 확인하세요
https://d.android.com/preview
디저트는 왜 자꾸 새로 나올까…
커널 플랫폼단은 버전업을 해야 고칠수 있음.
더 좋은 안드로이드를 만들기 위해서!
발전된 플랫폼 기능
- 안드로이드 런타임 업데이트 -> DEX 파일 페이지 레이아웃 최적화
- GC 관련된 업데이트. 포그라운드 앱들에 대해서 메모리 조각모음이 이뤄지고 안정화 될듯.
- 프로젝트 트래블(Treble), 안드로이드 플랫폼 업데이트는 왜 느리지? 이것저것 할게 많아서! > 그래서 안드로이드를 3단 분리하겠다. > 벤더를 두고 벤더 인터페이스 호환성 테스트 등을 통해 업데이트 인증. 큰그림.
사용자에게 더 좋게 된것
- 구글 플레이 프로텍트
- PIP 모드 지원 > 멀티 윈도우 지원 없이 PIP만 지원 가능. 원하는 화면 해상도 지정 가능
- Autofill Framework, 자동완성 기능
- 경고창(Alert Windows), SYSTEM_ALERT_WINDOWS 다른 앱 위에 그리기, 다양한 사용자 경험 제공.
- TYPE_APPLICATION_OVERLAY 윈도우 타입 추가.
- 기존 윈도우의 Z-Order가 조정됨. LockScreen 위에 윈도우를 그릴 수 없음. TYPE_APPLICATION_OVERLAY 아래 위치.
- 알림
- 알림 창이 너무 복잡해요! 알림은 애증의 존재!
- 알림 종류에 따른 배치. 정말 중요한 알림을 한 눈에. 가장 중요한 알림 순서는
- 현재 진행중인 앱의 알림
- 메세지/커뮤니케이션
- 일반
- 기타
- 알림이 좋긴하지만… 내가 받고 싶은 알림만 받고 싶어요.
- 알림 채널로 풀어가자.
- 기존의 알림 관리와 다른 것은 알림 채널에 따라 결정할 수 있는게 달라짐.
- 앞으로는 중요도를 설정하는게 아니라 알림의 채널을 설정해야함. 사용자가 이제 자신에게 생각하는 중요도에 따라 알림을 켤지 끌지 결정함.
- 알림 표시 점이 생김. 숫자는 안나오고 읽지 않은 알림이 있을경우에만 있음.
개발자를 위한 정보
- 안드로이드 스튜디오 3.0
- 에뮬레이터 좋아짐. 구글 플레이 스토어를 포함한 디바이스를 만들 수 있음.
- 코틀린
- 인스턴트 앱
- castaway가 되서 findViewByID
- 안드로이드 지원 라이브러리 26은 minSdkVersion=”14” 로 해도됨! 그 밑에 버전은 이제 지원하지 않음.
- 폰트 = 리소스
- 다운로드 폰트
우리 모두를 위해
튕기거나 느린앱을 좋아하는 사람은 없어요!
- Android Vitals, 배터리를 절약하고 안정적으로 돌릴 수 있도록.
- 나쁜 행동을 알리고 개선할 수 있도록 나쁜 행동들을 공개
- 안정성, 배터리, 랜더링 속도를 볼 수 있음.
- 젤리빈 이상에서 사용할 수 있고 사용자 정보를 볼 수 있음.
- 각각의 정보를 다 콘솔에서 볼 수 있음.
- 1시간안에 10번이상 wakeup을 일으키면 안좋다는 지표를 보여줌.
파이어베이스 무엇이 달라지나? - 캐시슬라이드 남상균
파이어베이스란
개발자가 서비스 개발에 더 집중할 수 있도록 지원해주는 도구. 다음과 같은 기능들이 있음.
- 개발
- 실시간 데이터베이스
- 인증
- 클라우드 스토리지
- 안드로이드 테스트랩
- 호스팅
(NEW)클라우드 펑션
- 오류 보고
- 성능 모니터링
- 성장
- 수익
천만명의 개발자가 사용하는 파이어베이스
기능이 추가되거나 기능이 좋아진것
- 클라우드 펑션
- Firebase + Fabric
- GA for Firebase
Fabric 과의 통합
Firebase + Fabric !
crashlytic가 생길 듯. DIGITS 을 통해서 전화번호를 통해서 로그인이 가능해 짐.
휴대폰 번호 인증의 장점
- 높은 신뢰성
- 커스터마이징이 용이
- 안드로이드에서 즉시 인증 가능
그래서 위의 기능이 Firebase Auth로 통합됨.
Cloud Function(클라우드 함수)
처음에는 앱에서 개발을 해서 파이어베이스가 도와주는 느낌이었는데, 앱이 고도화되면서 서버쪽 기능들도 많이 필요함을 서버리스 함수들을 통해 해결하고자함.
예를 들어 사용자들에게 푸시 알림을 발송하기 위해 데이터베이스에서 데이터를 가져와서 푸시를 보낼 수 있게됨.
고비용 작업을 클라우드에서 처리하는 것도 디바이스에서 하는 것보다 하는게 더 좋음.
써드파티 서비스 및 API와 통합에서는 깃헙에 푸시를 하면 슬랙에 메세지를 보내는 기능을 웹서버처럼 사용할 수 있게됨.
Firebase Performance
SDK를 적용했을때 디바이스에서 성능 자료를 받아서 어떤 함수, 어떤 기능에서 느린지 알 수 있게됨.
GA, Firebase, Big Query
GA의 데이터를 Big Query에 넣고 필요한 사용자 특징 데이터를 추출하고 사용할 수 있게 되고 있다.
개발자 리소스
udacity.com/Google
firebase.google.com/alpha
파이어베이스가 오픈소스로 오픈이 되어서 github에서 볼 수 있게되었으니 보면 좋음.
마무리
파이어베이스가 안정화되고 기능들도 잘 이뤄져가고 있으므로 실 서비스에 적용하는것도 좋은 선택이라고 보입니다!