안녕하세요, Android의 새 기능에 오신 걸 환영합니다
제 개인적으로 Android 키노트라고 부르고 싶습니다
Android UI 툴킷 팀에서 온 쳇 하제입니다
전 그래픽 팀의 호만 기입니다
전 시스템 UI 팀의 댄 샌들러입니다
시간이 얼마 없으니 바로 시작하겠습니다
Android의 새 기능을 볼 준비 됐나요?
지난 번에 여기에서 그만 뒀죠, API 25
그냥 깃-sha를 하고
깃-diff에 넣으면 다 된 거죠
이거 받아 적으세요
좋습니다
다음이요
네, 그것도 좋았죠
맘에 듭니다
이걸 이넘으로 만들 뻔 한 거 기억나요?
정말 웃겼죠
됐죠?
사람들이 이거 보러 왔다고 생각해요?
왜 이 생각을 못 했을까요
저희는 이 발표를 오래 해 왔습니다
새 기능을 몇 년째 알려 드리죠
보시다시피
자켓을 안 입고 왔죠
사실 예쁜 빨간 자켓이 있었는데
키노트 때 누가 빌려 갔죠
됐죠
당신 [청취불가] 하는 것 같아요
그러나 올해는
조금 다릅니다, 그렇죠?
훨씬 미리 개발자 미리보기가 있었고
이런 API 많이 보셨을 겁니다
Google 키노트에서도 신나는 일을
좀 자랑했죠
개발자 관련 일을 더 많이 알게 된
개발자 키노트도 있었죠
그럼 우린 뭐하는 거죠?
Android의 새 기능 세션이 왜 필요하죠?
존재 위기이죠
그럼
클리커 시험해봤어요?
- 했죠 - 네
이 발표를 와인 시음이나
위스키 시음이나 여러 버튼을 누를 수 있는
탄산음료 기계라고 생각하세요
Android 새 출시에서 놓쳤을 지도 모르는 것을
수공업으로 직접 선택한 겁니다
Android O의 일부분이 되려면
해야 할 것들이고
솔직히 저희가 무대에서 말하고 싶은 것들일 뿐이죠
이것이 Android의 새 기능입니다
구체적으로 개발자 미리보기나
I/O 키노트나 다른 키노트에서
놓쳤고 여러분이 관심을 가져야 하는 이유에 대한 거죠
오늘 꼭 하고 싶은 마지막 부분은
바로 이겁니다
모든 분들이 항상 이에 대해 흥분하지만
마지막에 다루도록 하겠습니다
괜찮을 겁니다
좋습니다, 시작하죠
로맨, UI와 그래픽 시작하죠
네, 시작하겠습니다
저희가 다루고 싶은 첫 번째 기능은
오늘 아침 키노트 중에서 보신 겁니다
쳇, 이 클릭커 안 됩니다
테스트 안 한거죠
시간 낭비 중이죠
여기 뒤에 서서
제가 슬라이드 넘겨 줄게요
- 알겠습니다 - 다음 슬라이드 부탁해요
이래서 미리 안 준 거죠
알겠습니다
전 괜찮아요
그냥 그 뒤에 있어요
안 보고 싶어요
오늘 아침 키노트에서 보신 첫 기능은
사진 속 사진은 더는 TV만을 위한 것이
아니라
핸드폰에서도 됩니다
여기 제 3자 애플리케이션의 예가 있죠
여러분 핸드폰에서 실행되는 넷플릭스도 사진 속 사진이죠
클리커 주세요
다시 가죠
됐네요
여러분의 애플리케이션에서
실행하기 정말 쉽습니다
그냥 목록만 수정하면 됩니다
애니메이션도 그만 하시죠
사진 속 사진 지원하기 트루라고 하면 되죠
O에서는 크기 조정 가능한 활동
트루 속성이 더는 필요 없고 컨피겨레이션 변화도
검사하셔야 합니다
그리고 코드에서 사진 속 사진 모드로
들어가고 싶으면 라인 하나만 부르면 되죠
getActivity와 enterPictureInPicture하면 되죠
정말 간단하고 사용자를 정말 행복하게 해 줄 겁니다
다음은 제가 정말 아끼는 기능이죠
색깔 관리입니다
O를 대신할 넓은 색영역 지원도 추가했죠
모든 기기에서 되는 건 아니죠
이 기능을 지원하는 기기만
여러분의 앱을 위해 이를 켜줄 겁니다
16비트 PNG 파일 지원이 추가되니
더 넓은 색깔과 채도가 더 넓은 색도 생기죠
ICC 프로파일을 지원하니 색깔 프로파일이
JPEG, PNG, WebP에서 비트맵에 임베드되죠
여러 화면에 걸쳐 색깔을 정확하게
전달해줄 겁니다
새로운 API도 많이 있죠
그건 다른 발표에서
주말에 더 얘기하겠습니다
사진 한장이 백마디 말보다 나으니
이것이 사진 관리이고 그 원리입니다
이해 잘 되시길 바랍니다
어쨌든 사진 관리는 아마
여러분의 앱으로 경험하는 것이겠죠
색깔은 기기에 따라 다르게 보입니다
따라서 Android O에서 해결책을 만들었죠
더 알고 싶으시면
제2무대에서
금요일 11시 30분에 제가 발표할 겁니다
색깔 이해하기라는 제목이죠
다음으로 다양한 디스플레이에 대한 지원도 추가했습니다
여러분의 애플리케이션이 이미
클리커가 잘 안 되네요
여러분의 애플리케이션이 이미 다양한 창을 지원한다면
여러 창 모드를 지원한다면
그 앱은 O에서 이미 다양한 디스플레이를 지원하게 될 겁니다
핸드폰이나 네트워크 기기가 다양한 디스플레이에
연결되고 호완되는 앱이 있다면
사용자는 다른 디스플레이셔 여러분의 애플리케이션을
보내도록 선택할 수 있죠
이럴 때 크기 변화 컨피겨레이션 변화가 생기겠죠
어느 디스플레이에서 활동을 보일지도 제어할 수 있습니다
이를 위해 활동 옵션을 사용하시면 됩니다
이 기능을 지원하고 싶으시면
꼭 여러분의 앱을 검사해 보세요
검사를 돕기 위해 새 개발자 도구 두 가지를 만들었죠
adb shell dumpsys 디스플레이를 실행하시면 됩니다
기기에서 현재 사용 가능한 모든 디스플레이
목록을 보여주죠
활동 인텐트로 adb shell start를 부르면
활동을 시작하고 싶은 기기를
구체적으로 정할 수 있죠
따라서 검사하기 아주 쉬운 방법입니다
API에는 더 많으니
오피스 아워에 가시길 권장합니다
목요일과 금요일이고 Windows와 활동에 대한
오피스 아워이죠
다음은 미디어
미디어 패키지에 굉장히 유용한 클래스가 많습니다
미디어 플레이어, 미디어 레코더 익스트렉터
그리고 코덱이 있죠
새 getMetrics API도
각각의 모든 클래스에 추가했죠
이는 여러분이 다루고 있는 미디어에 대한 정보를
쿼리할 때 도와주죠
따라서 해상도, 코덱 비트레이트, 지속 기간 등의
데이터를 쿼리할 수 있죠
사용하기 정말 쉽죠
오브젝트에 getMetrics만 불러오면 되죠
PersistableBundle이 있고
developer.android.com에서 문서를 찾아보시면 됩니다
어떤 쿼리가 있는지 궁금하시면 말이죠
재생도 많이 향상되었죠
이제 여러분 앱의 버퍼링도 제어할 수 있습니다
높고 낮은 워터마크도 구체적으로 정할 수 있죠
비디오의 재생은
워터마크가 낮아질 때까지 시작하지 않을 겁니다
그 시스템은 이 높고 낮은 워터마크 사이에서
캐시 데이터를 유지하려고 최선을 다 하겠죠
지속시간나 데이터 양
크기에서 워터마크를 구체화할 수도 있습니다
찾기 기능도 향상됐습니다
비디오에서 찾기 기능을 할 때
그 행동을 선택할 수도 있죠
가장 가까운 프레임을 찾고 싶은지
다음 키프레임, 이전 키프레임 혹은 가장 가까운
동기화 프레임을 찾고 싶은지 말이죠
마지막으로 모든 애플리케이션에서 더 쉽게
사용할 수 있도록
Widevine으로 DRM 재생도 만들었죠
레코딩의 경우 지금까지 미디어 믹서는
하나의 비디오 혹은 오디오 트랙만 추가할 수 있었죠
이제 원하시면 얼마든지 오디오나 비디오 트랙을 추가할 수 있습니다
또한 맞춤형 트랙도 만들 수 있죠
MIME 타입은 애플리케이션으로 시작해야 하고
기본적으로 원하시는 어떠한 데이터도 인코딩할 수 있는
사이드 밴드이죠
정규 예시는 자바스크립트 데이터를 인코딩하는 거죠
360개의 비디오를 재생하고 싶거나
하면 말이죠
WebView는 정말 유용한 새 API와 함께 옵니다
브라우징을 저장하는 기능을 추가했죠
Chrome을 통해 아시고 좋아하시는 부분이죠
이는 멀웨어와 안전하지 않은 웹페이지를 탐지합니다
따라서 여러분 목록에 이 메타 데이터 태그를 추가하면
이는 Chrome 자체가 여러분의 사용자들을 위해
브라우징 경험을 안전하게 하려고 사용하는 것과
같은 후단부와 API를 쓰겠죠
WebView은 이제 다양한 처리를 사용하죠
특히 렌더 처리가 있습니다
또한 이러한 다양한 처리를 다루기 위한 새 API도 있습니다
따라서 렌더 과정이 고장나면
이 고장을 탐지하는 터미네이션 핸들 API를 쓰면 되죠
애플리케이션에서 뭘 할지 정하는 거죠
원하시면 애플리케이션을 고장내도 되고
WebView를 다시 시작하려고 하거나
뭔가를 로그해서 사용자에게 메시지를 보여줘도 됩니다
이전보다 훨씬 우아하죠
또한 렌더 중요 API를 사용해도 되죠
메모리가 적은 경우를 더 잘 해결하기 위해서 말이죠
시스템 메모리가 적을 때
어딘가에서 RAM을 되찾으려고 하겠죠
그러면 WebView가 애플리케이션에
정말 중요한지 별로 중요하지 않은지 그 시스템에 말해주는 거죠
WebView가 여러분의 애플리케이션에
아주 중요하다면 이 API를 꼭 봐야겠죠
오른쪽 버튼인 거 알고 계시죠?
네, 알아요
애니메이터, 특히 애니메이터세트를 위한
긴 요청된 기능이 몇 개 있습니다
실행하기 거짓말처럼 어려워서 시간이 좀 걸렸죠
하지만 Android O에서는 이제 애니메이터세트에서 찾기 능력이
생겼습니다
이제 아동 애니메이션 모음집인
애니메이터가 있다면
전체 애니메이터세트에서 아동 애니메이터를
찾을 수 있는 거죠
그렇습니다
이런 능력도 있습니다
뒤집기
쳇, 그 API 오래 전에
실행하려고 하지 않았나요?
글쎄요
마지막에 API를 실행한 사람은 누구죠?
전 아니죠
- 네 - 네
바로 그거죠
애니메이터세트에서의 새 기능은
뒤집기이죠
기능성을 가진 별도의 애니메이터를 설치해서 리스너를 받고
그럴 필요가 더는 없다는 거죠
저희가 모든 지루한 작업을 다 해드렸죠
자동완성이죠 반복해서 내용을 수정하는 건
정말 지루하죠
전에 키노트에서 봤죠
이런 기능인데
작성해야 할 폼이 있고
그 정보를 여러분에게 줄 수 있는 제공자가 있죠
따라서 그 문자 필드를 받으면
여러분의 위해 저희가 자동으로 그 정보를 입력할 수 있죠
이에 대한 다른 측면도 몇 개 있습니다
하나는 여러분 각자의 서비스를 실행할 수 있는
능력을 드리거나 저희가 대신 제공하는 서비스에
의존할 수 있다는 점이죠
혹은 좀 더 전형적으로 클라이언트를 실행할 겁니다
표준 뷰만으로도 되죠
텍스트뷰나 에딧뷰를 사용한다면
서비스와 상호작용하기 위해
이 정보를 어떻게 받을지 저희는 이미 알죠
따라서 표준 뷰를 위해 아무것도 안 해도 됩니다
맞춤형 뷰를 쓰시거나
표준 뷰에 대해 더 많은 정보를 제공하고 싶으시면
저희한테 힌트를 주는 API가 있죠 밸류 타입이 뭔지
API가 저희에게 여러분의 맞춤 뷰에 대해
또 여러분이 어떻게 상호작용하고
싶어하는지 더 얘기해주죠
또한 맞춤 뷰 위계가 있다면
내부 뷰가 있는 표면 뷰가 있지만 저희가 아는 건
표면 뷰가 있다는 게 다라고 가정하면
API가 저희에게 여러분이 저희와
상호작용하고 싶어하는 가상 위계에 대해 말해 주는 거죠
금요일 오전 세션에 이에 대해
더 많은 내용을 다룰테니
자동완성에 대해 더 알고 싶으시면 참석해 주세요
이제 텍스트에 대해 좀 이야기해 보죠
이번엔 텍스트 쪽에서 많은 일이
일어났죠
다시 적어도 될 것 같아요
됐죠
이 폰트는 오로지 덴에게 상처주려고 쓴 겁니다
신체적으로 괴롭히거든요
멋지죠
덴을 망친 것 같아요
좋습니다, 먼저
폰트 정보를 디클레어하기 위해 XML을 사용할 수 있죠
멋진 데이터 바인딩으로 말이죠
하지만 좀 까다롭습니다
그리고 이 기능을 제공해야 하는
이유가 굳이 있을까요?
지금은 있죠
이제 폰트 파일을 이 새 리소스 폰트 디렉토리에
직접 넣을 수 있는 겁니다
정말 멋지죠
디렉토리에 넣거나 저희한테 폰트 페밀리에 대해
말해주면 됩니다
각각의 스타일에 대한 정보로
여러 폰트를 제공할 수 있고
다른 리소스와 마찬가지로 폰트를 바로 사용할 수 있게 되죠
코드에서 그냥 그 리소스를 달라고 하면
되는 겁니다
다운로드 가능한 폰트죠
이제 폰트를 디클레어할 수 있는
기능이 있으니 이제 아직 없다면
저희가 여러분을 위해 시스템에 다운 받아 캐시할 수 있는 거죠
혹은 시스템에 있다면 캐시에서 사용하겠죠
코드나 XML에서 하실 수 있고
신나는 이전 슬라이드에서 XML 폰트로 한 것처럼
리소스로 사용하시면 되죠
아직 출시되지 않은 버전의
Gooogle Play 서비스에서 폰트 제공자도
제공할 겁니다
이번 주 학회에서 베타 버전을 이용하실 수 있죠
자세한 건 모르지만
자세히 배우실 수 있는 세션도 있고
아니면 Play 서비스 웹사이트에서
더 자세히 배우실 수 있을 겁니다
이는 모든 Google 폰트을 이용할 수 있게 해줍니다
표준 폰트를 사용하고 싶으시면
예컨대 제가 이 섹션 시작 때 사용한 아름다운 폰트 같은 거죠
그것도 아마 거기 있을 겁니다
서비스에서 바로 물어보시면 됩니다
또한 자동 사이즈 변환 텍스트뷰 기능도 있습니다
보통 텍스트뷰의 사이즈를 조정하면
뭐가 성공할지 정말
아무도 모르죠, 그렇죠?
텍스트
텍스트는 멋집니다, 특히 적당한 폰트가
있을 때 말이죠
이제 좌측에서의 행동이 나타나죠
뷰 자체의 크기를 조정하는 거죠
폰트에는 변화가 없습니다
그러나 우측에는 자동 크기 변경 텍스트뷰 행동을
선택하셨다면 여러분을 위해 폰트 크기를 조절할 겁니다
쓰고 싶은 행동이나 증가 단계나
크기가 조정될 때 원하는 특정 크기에서
멈출 수 있도록 구체적으로 정할 수 있습니다
이를 위한 API가 있죠
XML과 자바 프로그래밍 언어 코드 모두에 API가 있으니
마음대로 하시면 되죠
또한 이 모든 텍스트 기능
즉 XML 폰트, 다운 가능한 폰트 자동 크기 변경 텍스트뷰는
지원 라이브러리의 새 기능 관련 세션에서
내일 아침 모두 얘기할 겁니다
그럼 여러분들은 왜 지원 라이브러리 세션에서
이런 말을 할까 궁금하시겠죠?
이건 O 플랫폼 API 아닌가요?
맞습니다
또한 지원 라이브러리에도 있습니다
이 모든 기능을 이전에 출시된 버전에서도
모두 사용할 수 있는 거죠
접근성서비스 유틸리티
접근성서비스에서 쓰고 있다면
유용한 일이죠
여러분이 사용할 수 있는 새 기능들이 있습니다
언어 탐지는 접근을 더 쉽게 만드는
다른 버튼과 함께 내비게이션 바에
버튼을 두는 기능이죠
접근성 음량을 위한 별도의 음량 조절도 있죠
기기의 다른 음량과
섞이지 않도록 합니다
또한 맞춤형 지문 제스쳐를 정의하는 기능도 있죠
이에 대해 더 알고 싶으시면
오늘 오후에 접근성 관련 세션이 있으니
확인하시기 바랍니다
마지막으로 제가 가장 좋아하는 작은 변화는
제가 작다고 말한 건
API를 위한 코드 한 줄이기 때문이지만
이전 실행에 의존하는 모든 코드를 고치려는
실제 cl은 엄청납니다
그 중요성을 손상시키고 싶진 않습니다
하지만 API 측면에서는 정말 작고 숨겨졌죠
밖에서 보면 거의 같아 보입니다
findViewById는 이렇게 드클레어 됐었죠
퍼블릭뷰, findViewById 등으로 말이죠
그러고 나서 그걸 부르고 리소스 ID를 넘겨서
뷰를 가지고 나면 바로 원하는 것으로
캐스트되는 거죠
따라서 텍스트뷰에 이를 말해야 합니다
좌측 우측 모두에서 말이죠 그리고 괄호가 있고
좀 귀찮죠
이게 보기 너무 흉하다는 이유만으로
사람들은 헬퍼 라이브러리를 씁니다
이제
이게 생겼죠
전 이 기능을 캐스트어웨이라고 부릅니다
제 생각에 저만 그런 것 같지만요
제 첫 장을 그냥 저렇게 넘기죠
괜찮아요
여러분이 보시게 될 시스템 UI에 대해
조금 얘기해 보겠습니다
앱이 있으시면 어댑티브 아이콘을
아셔야겠죠
오늘 좀 전에 있었던 스테파니의 슬라이드에서 아주 잠깐
언급된 것 같습니다
근본적으로 저희는 여러분의 시간과 돈을 절약하려는 거죠
요즘 론처가 정말 많고 그 각각은
아이콘 모양에 대해 다른 제안을 합니다
따라서 어댑티브 아이콘은 여러분이
O에서 이렇게 할 수 있도록 하는 새로운 기술이죠
여기 내 배경이 있고 전경이 있으니 원하는 모양으로
잘라내라고 말이죠
따라서 론처가 동그라미나
둥근 사각형이나 흉한 모양이더라도
지역색을 정확히 맞춘 아이콘이 생기는 겁니다
어댑티브 아이콘에 대한 정보가
목요일 발표에 많을 겁니다
꼭 가 보세요
그럼 쇼트컷과 위젯에 대해 얘기해 보죠
론처 또한 시스템 UI의 일부이기 때문이죠
이전에 사용자 화면에서 쇼트컷과 위젯으로 가려면
작동되는 쇼트컷에 대한 알림이 있었고
위젯의 경우 사용자에게 사정해야 했죠
론처 내에서 위젯을 찾을 수 있는지 말이죠
O에서는 이제 이러한 것들이 사용자 작업공간에 고정되도록
요청할 수 있습니다
쇼트컷은 쇼트컷 매니저를 통해
위젯은 앱 위젯 매니저를 통해서 말이죠
그러면 사용자는 이럴 수 있는 기회가 생기죠
내 데스크탑에 그건 싫어 혹은 그래, 좋아
또한 사실 원하는 곳에 정확히
넣을 수도 있습니다
물론 그냥 위치 선정해 줘 해도 되죠
이는 이전 행동이었죠
이제 긴 플로를 사용자에게 설명할 필요 없습니다
이 대화로 바로 보내면 되는 거죠
정말 편리하죠
여러분의 위젯을 사용할 모든 새로운 사용자를 생각해 보세요
실제로는 여기 클릭커로 고생할 때 박수를 위해
잠시 중단하는 척 할 수 있죠
목요일 4:30분에 이 모든 것에 대해 이야기할 겁니다
다음은 예상하셨겠지만 알림이죠
정말 유용합니다
집중도를 위해 좋죠
사용자도 좋아합니다
약간 통제불능일 수도 있죠
지금 알림 스트림에서 사용되는 것이 아주 많고
원하는 메시지를 사용자에게
전달하기 아주 힘듭니다
사용자가 요구사항의 유입에 그들의 주의를 관리하기
상당히 여럽죠
이제 통제불능이지만 사용자는
항상 통제할 수 있어야죠
그것이 애초부터 저희의 원칙이었습니다
젤리 빈에서 패키지로부터의 알림을
차단하는 기능을 추가했습니다
또한 누가는 약간 정비해서 무음도 추가했죠
하지만 이 모든 것을 통해 사용자에게
가장 많이 받는 요청은 이겁니다
일부 앱의 알림만 차단할 수는 없나요?
반면 개발자로부터 가장 많이 받는
요청은 사용자가 제 알림의 일부만 차단할 수는
없나요? 하는 거죠
똑같은 겁니다
모두가 같은 걸 요구하고 있는 거죠
이때 알림 채널이 등장하는 거죠
O의 새로운 API로 채널은
모두 같은 행동을 공유하는 앱 하나의
지명된 알림 카테고리입니다
진동, 소리, 빛, 화면에 뜨던
사용자는 표면적이고 정교한 통제력을 가지는 거죠
앱에 있고 여러분은 각자의 채널을 모두 설정해야죠
O를 위한 기본값 행동을 정의하면 개인 메시지가
뜰 겁니다
태그는 아마 뜨지 않거나 더 낮은 우선순위를 가지겠죠
그러면 사용자가 알림을 길게 누르거나
새 슬라이드 제스쳐로
어느 채널에 있는지 볼 수 있고
바로 그 라인에서 바꿀 수 있습니다
일단 O를 겨냥하시면 2분 간의 저의 발표에서
이것만 기억해 주세요
모든 알림에 대한 채널을 사용하셔야 합니다
안 그럼 빠질 거예요
따라서 O를 겨냥하실 때까지 천천히
알림 시스템을 채널로 진화시키기 시작하세요
O를 겨냥하신다면 모두 채널화되어야 합니다
사용자가 자신이 뭘 얻게 될지 아는 것에 대해
일관된 경험을 제공하려고 노력 중이니 말이죠
그리고 저희는 이 내용과
다른 많은 멋진 내용
디디자인 고려와 여기 넣지 못한
모든 코드, 또 저기 깜빡거리는 작은 것 등을
내일 4:30에 발표하겠습니다
시스템 UI에 멋진 것들이 많이 추가됩니다
여기 그 중 일부의 목록이 있죠
또 다 적지 못했죠
전 슬라이드에 저러는 거 좋아해요
개발자 미리보기를 확인하시거나 베타를 설치해서
이용해 보는 것을 적극 권장하고 싶습니다
정말 뿌듯합니다
미국 개발자를 위한 새로운 API는
분명 모두 디버깅에서 사용하시는
스트릭트 모드 API를 확장시켰습니다
따라서 이제 스레드팔러시에서
버퍼되지 않은 I/O를 사용할 때 경고를 받을 수 있죠
버퍼된 스트림으로 쌓여지지 않은 인풋
혹은 아웃풋 스트림을 사용하면 플레시 같은
여러분이 설정한 경고를 유발할 겁니다
Vm팔러시에서는 소켓을 태그하지 않으면
경고를 받을 수 있죠
소켓을 태그하는 건 Android 스튜디오를
사용한 디버깅을 트래픽할 때 정말 유용하죠
마지막으로 또 다른 인텐트를 열 때
여러분의 앱 밖으로 인텐트를 보내고
허락을 줘야 할 때도
경고를 받을 수 있죠
사용하기 쉽습니다
이전 API와 비슷하죠
미디어 파일 에세스
오래 전 문서 제공자를 소개했었죠
두 버전 전이었고 정말 유용했습니다
큰 문서의 경우를 제외하면 말이죠
큰 문서가 있으면
그 문서 제공자의 사용자에게 넘기기 전
데이터 전체를 다운로드 받아야 했죠
이제 찾을 수 있는 파일 설명어를 만들 수 있습니다
오디오, 비디오 혹은 어떠한 큰 유형의
콘텐츠에도 정말 유용하죠
또한 사용하기도 정말 쉽습니다
따라서 저장매니저로 가서 프록시 파일 설명어를 열고
콜백을 주면
문서의 크기를 요청하는 콜백을
유발하게 되겠죠
바이트 열에 데이터 양을 요구하면
저희가 언제 닫을 건지 말해 드릴 겁니다
캐시된 데이터
이는 새 API로 여러분을 더 나은 시민으로
만들어주는 시스템입니다
각 앱은 캐시 파티션에서
사용할 수 있는 특정한 한도가 있죠
시스템에 저장 용량이 부족해지면
캐시 데이터의 일부를 삭제하기 시작할 겁니다
따라서 주어진 한도 이하에 머무르면
데이터가 삭제되는 것을 피할 수 있겠죠
이를 위해 저장매니저를 사용하시면 됩니다
여러분 앱에 할당된 바이트 수를
쿼리할 수 있죠
가끔 쿼리하셔야 합니다
여러분이 사용하는 양에 따라
그 한도가 바뀔 수 있기 때문이죠
혹은 사용자가 얼마나 자주 그 앱을 사용하는가에 따라 말이죠
그런 후 데이터를 할당하고 싶을 때
바이트할당하기를 사용하면 되죠
스스로 하실 수 있죠
그냥 파일, 아웃풋 스트림을
만드셔도 되겠죠
하지만 이 방법이 훨씬 낫습니다
필요할 때 바이트할당하기를 쓰시면
시스템이 여러분의 데이터 공간을 위해 다른 앱의
캐시 데이터를 삭제하기 때문이죠
따라서 getCacheQuotaBytes는
기기에 남아있는 여유 공간보다
더 클 수도 있습니다
setCacheBehavior Tombstone를
사용하실 수도 있죠
여러분의 앱이 캐시된 적 없는 파일과
캐시됐지만 지워진 파일 사이의 차이를
구분할 수 있도록 하는 데에 유용하죠
따라서 그 행동을 설정하고 시스템이
캐시에서 일부 파일을 삭제한다면
그 파일을 잘라낼 겁니다
따라서 그 파일은 여전히 있지만 크기가 0으로 설정되죠
이는 시스템이 그 캐시를 삭제했다고 말해주는 겁니다
마지막으로 사용 가능 공간과 할당 가능 공간은
다릅니다
이번 출시에서 Android 안전에
많은 일이 일어나죠
시간이 조금 밖에 없지만
Android O에 새로 나온
개인 정보 보호 정책 일부를 언급하겠습니다
Android ID를 사용해 오셨다면
이제는 모든 앱과
모든 사용자에 대해 달라질 것이라는 걸 아셔야 합니다
더는 같은 기기에서 앱 사이에 사용자를 추적하기 위해
사용될 수 없죠
유사하게 net.hostname을 얻기 위해
시스템 속성을 봐 왔다면 지금은 비어있습니다
따라서 맥락에 맞는 광고를 사용자에게
보낼 수 있기 위해 광고 ID가 필요할 경우
Google Play 서비스에서
광고 ID API를 사용하시면 됩니다
Google Play에서 확인해 보세요
하지만 Android ID는 사용할 수 없습니다
더는 지금까지 하신 것처럼
신뢰하시면 안 됩니다
여기 웹뷰에 대한 슬라이드가
있었는데 로맨이 치웠죠
웹뷰에서의 안전한 브라우징에 대해
하나 더 말씀드리고 싶은 것은 이제 웹뷰가
6달마다 Play 스토어로 푸쉬되기 때문에
롤리팝까지 거슬러 올라가는 안전한 브라우징 기능을
선택할 수 있을 겁니다 아주 멋진 기능이죠
또한 키노트 때 밝혀졌죠
Google Play 보호라고 부르는 것으로
이전에 가지고 있던 많은 기술이지만
보여드리지 못했던 겁니다
정말 그럴 가치가 있죠
저희가 항상 사람들을 지켜주기 때문이죠
따라서 Google Play가 있는 어떠한 기기도 보호를 켤 수 있습니다
Play로 업로드되는 모든 앱은
미리 검열되고 업로드되는 새 버전마다
다시 검열됩니다
또한 앱을 설치할 때마다
Play 보호가 설정되어 있으면
그 앱 또한 검열될 겁니다
다른 스토어나 ADB 설치에서 가져온 것이라도 말이죠
정말 신나는 일이죠
할 말이 더 많습니다
Android 안전에 대해서 말이죠
슬라이드 더미를 저한테 주더군요
그래서 따로 발표하지 그래? 했죠
실제로 그렇게 말하진 않았죠 발표 따로 있거든요
목요일 2:30에
Android 안전의 새 기능을
알게 될 겁니다
커널에서부터
웹뷰에 대한 더 많은 사항까지 모두 말이죠
언어와 런타임
제가 할 말을 이미 아실 것 같습니다
오늘 아침 코틀린에 대한 공식적인 지원을 발표했죠
무대에서 스테파니를 보셨을 겁니다 여기 통로에 보이네요
I/O에서 스테파니를 보시면 감사 인사해 주세요
스테파니와 팀 전체가
과거에 정말 멋진 일을 해냈죠 얼마의 시간이 걸리든
해냈습니다
그러니 감사를 전해주세요
여러분의 감사를 팀 전체에게 전해줄 겁니다
오늘 Android 3.0에서 이용 가능하죠
이미 온라인에 문서가 많습니다
전 코틀린에 대해 몇 시간 얘기할 수도 있어요
왜 여러분과 저희에게 좋은지 말이죠
- 제가 잠시 말해도 될까요? - 되죠
사실 이 사람 정말 잘 해요
정말 그렇죠
하지만 아쉽게도
이 세션에 시간이 얼마 없어요
따라서 대신 금요일 10:30분 이 무대로
여러분을 초대하겠습니다
코틀린 입문이라는 발표가 있죠
젯브레인스의 언어 디자인 팀장 안드레이 브레스레브와
개발자 변호 부사장 하이디가 발표할 겁니다
그러고 나서 제 4무대에서 오후에
인생은 즐겁고 모든 것이 잘될 거야
코틀린이 있어라는 발표를 핀터레스트의 크리스티나 리와
스퀘어의 잭 워톤이 할 겁니다
이건 저희한테 아주 중요합니다
코틀린을 소개한 온 이유는 여러분 커뮤니티가
사용하기 때문이죠
여러분의 말을 들었고 여러분이 원하는 걸 가져오는 겁니다
여러분 커뮤니티를 무대에 모시고
저희가 할 수 있는 것 이상으로 말하고 싶었죠
또한 질문이 있으시면 Android 플랫폼 부스의
개발자 샌드박스에 오시면 됩니다
오늘 3시에서 4:30까지 목요일 2시에서 4시까지
그리고 금요일은 12시에서 2시까지입니다
언어 디자이너이인 앤드레이가 모든 질문에
답해 줄 겁니다
코틀린에 대해 궁금한 점 있으시면 꼭 오세요
가서 그냥 질문하세요
이제 스테파니가 말했듯 다른 프로그래밍 언어 또한
강화하고 있습니다, 자바스크립트나
C와 C++도 있죠
자바 프로그래밍 언어의 경우
Android O에 새 패키지를 추가합니다
java.time이 마침내 시간과 날짜를 쉽게
조정할 수 있게 됩니다
말이 되죠
더 오래 된 API보다 더 이해 갑니다
그럴 때가 됐죠
네, 그렇죠
java.nio.file도 선보입니다
좋은 옛날 java.io.file API를 향상시키죠
파일의 속성에 접근할 수 있게 해 주죠
경로를 쉽게 조정하고 파일을 읽을 수 있게 합니다
예시를 보겠습니다
마지막으로 java.lang.invoke는
약간 변형한 것으로
대략적 추정이지만 멋집니다
애플리케이션에서 방법 핸들을 변형하고
랩하게 해줍니다
새 파일 API에 대한 예시를 보죠
경로를 얻기 위해 경로 클래스를 사용할 수 있죠
그러고 나서 그냥 files.lines를 불러오면 되죠
파일의 콘텐츠 전체를 읽을 겁니다
스트림이 있겠죠
이 예시에서 전 모든 빈 라인 즉 파운드 사인으로 시작하는
모든 라인을 지우기 위해 람바다와
스트림 API를 사용하고 그런 후 마지막에
하나의 스트림으로 모든 것을 가져오죠
따라서 이전보다 훨씬 쉽습니다
런타임에서의 변화를 보시죠
오늘 아침에 일부는 들으셨을 겁니다
이번 주에 또 더 있습니다
새로운 병행 복사 콜렉터는
모든 것을 빠르고 더 괜찮게 만들어 줍니다
병행 복사란 멈추는 시간이 없다는 거죠
전체 GC의 경우만 빼고 말이죠
따라서 다른 걸 하는 동안
배경에서 해야 했던 온갖 작업을 할 수 있는 거죠
특히 정말 멋진 작업은
전경에서 히프를 실제로 압축할 수 있다는 점입니다
제 생각에 이전 버전에서
히프를 압축하는 기능은 있었죠
조각모음도 하고 히프를 더 작게 만들 수 있으며
할당과 콜렉션을 더 빠르게 할 수 있지만
활동이 배경인 경우에만
가능한 일이었죠
따라서 쉬는 상태로 들어가고
그 상태에서 일을 하겠죠
하지만 전경에 있을 때는
히프를 확장하거나 조각내는 일은
할 수 없었죠
이이제 전경에서도 모을 수 있고
전경에서 조각모음도 할 수 있고 모든 게 빨라졌죠
할당을 위한 더 빠른 새 메커니즘도 있습니다
그냥 포인터 할당으로 갈 수 있습니다
훨씬 빠르죠
콜렉션이 더 빠르고 이 모든 것은
여러분이 할 일을 줄여주게 되는 거죠
더 빨리 할당하고 더 빨리 수집하는 건
전반적으로 쓸모 없는 것과 메모리를 다루는 것이
O 출시에서 ART를 사용해 더 빨라졌다는 뜻이죠
다양한 최적화, 루프 언롤링 인라이닝이 있죠
또 하나 언급하고 싶은 건
달빅은 메모리 형태의 제한으로 만들어졌다는 거죠
달빅은 모든 것이 메모리를
절약에 초점을 뒀고 최적화만
많이 할 수 있다는 의미겠죠
최적화를 위해 할 수 있는 건
이제 거의 끝에 다다랐습니다
ART가 온라인으로 됐을 때 앞으로의 최적화를
만들 수 있도록 하는 플랫폼에 넣었죠
O와 앞으로의 출시를 포함한
매 버전마다 생기는 이러한 혜택을
이제 수확하기 시작하는 겁니다
더 많이 할 수 있겠죠
이번 출시에서도 많습니다
이번 주 말에 더 많은 정보를 얻을 수 있는
세션을 참고하시기 바랍니다
DEX 지역성도 있습니다
이는 특히 활동을 위한 시작 시간을 향상시켜 줍니다
같은 공간에 있는 모든 메모리를 수집할 수 있기 때문이죠
여러분의 앱이 시작할 때 더 쉽고
더 빠르게 접근할 수 있죠
성능과 메모리 향상이라는 세션이 금요일 아침에 있습니다
더 자세한 사항은 그 세션을 참조하세요
플랫폼 이상으로 지원 라이브러리가 있죠
O 출시에 대한 것이 아닌 것을 전달하기 위한
다른 메커니즘도 있습니다
그중 일부를 보시죠
개발자 미리보기 2와 함께 나오는
v26 베타 출시가 있습니다
저희가 이미 언급한 것이죠 텍스트, 폰트, XML
다운 가능한 폰트 자동 크기 변경 텍스트 뷰 등이죠
모두 포함됩니다
확인해 보세요
게다가 이모지컴팻이라는 것도 있습니다
이모티콘에서의 큰 문제 중 하나가
여러분의 친구가 여러분이
실행하는 버전에서 출시된 것이 아닌 최근 기준에서
이모티콘을 보내려고 하면
여러분은 그 이모티콘을 못 본다는 거죠
대신 두부 조각을 보게 될 겁니다
제가 본 일부 이모티콘보다
매력적일 순 있어도 의미 있지는 않죠
그러니 여러분의 기기에 업데이트 된 이모티콘을
받을 수 있다면 좋지 않을까요?
앱이 업데이트된 이모티콘을
사용할 수 있는 메커니즘이 2개 있습니다
하나는 앱이 실제로 업데이트된 이모네콘과 합쳐질 수 있죠
앱을 Play 스토어에 업데이트해서
사용자에게 업데이트 하면 그 사용자는
이모티콘에 대한 더 시기적절한 업데이트를 받을 수 있죠
다른 것은 아마 장기적으로는 더 나은 해결책으로
조금 전에 말씀 드린 다운로드 가능한
폰트를 위해 제공하는 서비스를
사용하는 거죠 이건 다운로드 가능한 폰트를 통해
자동으로 업데이트된 폰트를 가져올 수 있는 거죠
따라서 이 앱은 저희가 서비스에 제공하면
업데이트된 이모티콘을 가질 수 있는
다운로드 가능한 폰트 기능을 사용하는 기능을 만들 수 있죠
더 자세히 알고 싶으시면 내일 오전
지원 라이브러리의 새 기능 발표에 가보세요
제가 아까 말씀 드린 애니메이터세트에서의
작은 부분 외에도
애니메이션도 많이 발전 했죠
이제 물리학 기초의 애니메이션 같은 것도 할 수 있습니다
이걸 애니메이션 형태로 보고 싶다면
근본적으로 속도를 통해 가동되는
애니메이션을 가질 기능이죠
지금까지 플랫폼에 있는
모든 애니메이션 기능은
지속 기간에 의해 가동되어 왔습니다
얼마나 오래 실행될지 말하는 거죠
하지만 많은 애니메이션은
속도가 중요합니다
특히 사용자, 상호작용에 의해 가동되는
애니메이션이라면 말이죠
화면에 뭔가를 끌고 와서 놔 줄 때
놔 줄 때의 속도가 끌고 와서
손가락으로 놔줄 때까까지의 속도와
같다면 좋지 않을까요?
던지기나 스크롤 같은 건
속도 기초의 애니메이션 시스템이 정말 필요합니다
애니메이터로 할 수 있지만
정말 지루하죠
수학이 필요하고
수학은 어렵죠
따라서 저희는 그 기능을
이 새 물리 애니메이션 시스템으로 만들었죠
더 자연스럽고 더 상호작용하며
더 방해 가능합니다
사용자 상호작용 모델과 작업할 목적에서 만들어 졌기 때문이죠
작은 데모를 보여드리죠
상단의 원을 끌고 가는 동안
다른 두 원은 근본적으로
여러분이 정의내리는 스프링을 통해 상단의 원에 연결되어 있죠
따라서 공간에서 따라다니는 겁니다
록스텝이 아니라
연결된 스프링인 거죠
상호작용과 이러한 스프링의 물리 기초 개념에서
즉각적으로 혜택을 받습니다
새로운 물리 기초 애니메이션에 대한 발표가
금요일 오후에 있습니다
더 알고 싶으시면 그 발표에 가세요
건축 컴포넌트
키노트에서 언급되었죠
저희는 가끔 Android 개발이
필요 이상으로 어렵다고 생각했습니다
따라서 한 걸음 물러나 이렇게 생각했죠
앱 개발자들을 위해 단순화하려면
어느 주요 문제를 다시 한번
살펴봐야 할까? 하고 말이죠
저희가 특별히 신경 써서
지금 당장 살펴 보거나 라이프사이클로 본 몇 가지가 있죠
활동이 언제든 죽을 수 있다는 사실은
받아드리기 힘들죠
화면을 돌리거나 배경에 가거나 뭐 그럴 때 말이죠
여러분이 정확히 어느 상태에 있는지 알아내는 건
지겨울 수 있죠
모든 앱 개발자가 해결해야 할
계속 진행되는 문제이죠
따라서 저희는 이를 더 쉽게
만들기 위해 다르게 접근했죠
또한 저희는
지속성도 살펴보았죠
이제 원래의 SQL을 이슈할 수 있고
그것이 시스템에서 오는 전부이죠
그 기능에서 만들 수 있는 새로운 방식이 있고
더 쉽고 강력하게 만들어 줍니다
이번 주에 다 말씀드릴 겁니다
건축 컴포넌트를 소개할 예정이니
오늘 오후에 오시기 바랍니다
사실 이 세션 바로 다음이죠
내일 아침엔 라이프사이클 문제와
저희가 이를 어떻게 해결했는가에 대한
발표가 있죠
지속성과 오프라인에 대한 발표도 있습니다
이 모든 것은 이미 이전 버전에서
시도할 수 있는 것이죠
확인해 보세요
개발자 분들의 삶을 더 쉽게 만들어주길 바랍니다
행동 변화도 좀 있고 그 중 일부는
다른 것보다 더 좋아하실 겁니다
배경 앱의 행동에 변화가 좀 있고
특히 위치에 대한 거죠
배경 앱으로 실행하신다면
대략적인 위치 정보만 얻게 되겠죠
이 모든 것은 더 어렵게 만드는 게 아니라
기기를 더 괜찮게 만드는 것이죠
모든 앱이 모든 기능을 동시에 가진다면
또 언제든 필요하거나 원하는 걸 할 수 있다면
근본적으로 배터리를 다 쓰게 될 겁니다
모두가 항상 너무 많은 일을 하기 때문이죠
따라서 저희는 어떤 앱이 실제로 언제 서비스가 필요한지
신중하려고 노력하고 있습니다
사용자의 경험을 더 좋게 하기 위해서 말이죠
여러분의 사용자를 위한 경험 역시 훨씬 더 낫겠죠
그중 하나는 장소인데 배경에 있을 때
대략적인 정보를 얻죠
다른 건 웨이크 록입니다
저희는 앱이 배경 상태로 들어가고 나서
캐시 상태로 들어가는 것이 흔하고
그떄 웨이크 록이 있을 거라는 걸 알았죠
그냥 그 웨이크 록을 유지하고
아주 오랫동안 잡고 있겠죠
그것이 정말 배터리를 소모합니다
이제는 캐시 상태로 들어간 직후
웨이크 록이 자동으로 풀려서
기기를 부적절한 상태로
들어어가지 않게 하는 거죠
실행에 대한 제한 또한 있습니다
배경에서 실행할 때 말이죠
얼러트 창에도 변화가 있습니다
특히 타입 애플리케이션 오버레이라는
새로운 유형의 창이 있습니다
O SDK를 겨냥하신다면 얼러트 창 기능을
가지길 원하실 때 꼭 써야 하는 창 유형입니다
초기 버전이라면 이건 분명 없었죠
이건 안 쓰실 겁니다
여러분이 어떤 창을 쓰시던
이러한 유형 애플리케이션 오버레이 창 밑에
레이어될 것임을 알아 두세요 이를 통해 더욱 명확히
정의된 레이어링 정책이 있기 때문이죠
오늘 오후 5시에 배경 체크와 다른 통찰이라는
발표에서 더 자세히 들으실 수 있습니다
자세히 알고 싶으시면
그 발표에 참석해 주세요
마지막으로 여기로 돌아오기로 약속했었죠
그랬죠
딱 하나 남았죠
그렇죠
이에 대해 이야기하려고 했는데
드럼롤 있어야 할 것 같지 않아요?
다리라도 때리는 게 어때요?
다리로 될까요?
네
좋네요
안타깝게도 무대에 시계를 보고 있습니다
O가 의미하는 건 뭐죠
이런
시간이 다 됐네요
감사합니다