Maps Live: New Features in the Google Maps Mobile APIs for Android and iOS

嗨 CHRIS BROADFOOT : 안녕하세요 나는 Chris Broadfoot입니다

저는 Chris Broadfoot입니다 Google지도 개발자 관계 팀에서, Google지도 개발자 관계 팀에서 일합니다 나는 Daniel Schramm입니다 Daniel Schramm : 저는 Daniel Schramm, Associate Product입니다 Google지도 모바일 API 프로젝트의 제품 관리자 조수로서 Google지도 모바일 API의 관리자입니다

얼마 전에 우리는 iOS 및 Android에서 CHRIS BROADFOOT에있었습니다 : 우리는 최근에 모바일에 대한 업데이트를 릴리스했습니다 iOS와 Android 모두에서 업데이트 된지도 API입니다 오늘 우리는 비디오에서 다니엘 SCHRAMM 이야기 :이 업데이 트는 세 가지 새로운 기능을 소개합니다 이번 업데이트에서 우리가 오늘의 비디오에서 이야기하고자하는 세 가지 새로운 기능 – 패딩 마커 매핑 회전 및 플랫 마커는 패딩, 마커 회전 및 플랫 마커를 매핑합니다 먼저, 맵 패딩 (Map Padding)에 대해 살펴 보겠습니다 CHRIS BROADFOOT : 먼저 맵 패딩에 대해 설명하겠습니다

지도 채우기를 사용하면 기본 작업을지도로 옮길 수 있습니다지도 채우기를 사용하면 기본 Google지도를 오프셋 할 수 있습니다 동시에지도 외부에서 오버레이 컨트롤을 추가하여 추가 할 수 있습니다 예를 들어 반투명 메뉴 막대 또는 세로 막대와 같이 투명 메뉴 막대 또는 세로 막대 오버레이를 추가 할 수 있습니다 지도 채우기의 값은 언제든지 변경하거나 애니메이션으로 변경할 수 있습니다 예를 들어지도에서 사이드 바가 표시되거나 사라지는 경우 (예 :지도에서 사이드 바를 밀거나 내릴 때) 지도는 각 방향의지도 패딩 값을 고려하며지도를 다시 중심에 배치하는 것과 같은 카메라 업데이트는 안쪽 여백을 고려하여 마커의 위치를지도의 중앙에 위치 시키면 아무 것도 할 필요가 없습니다

오프셋에 대한 수동 계산의 번거 로움을 제거합니다 다음에 우리가 이야기하려고하는 것은 대니얼 SCHRAMM입니다 : 우리가 이야기하고 싶은 다음 미래 평면 마커는 평면 마커입니다 보는 방향에 관계없이 새로운 유형의 디자인입니다 평면 마커는 항상 평면으로 유지되는 새로운 유형의 마커입니다 카메라 배치 방식에 관계없이지도에 항상 배치됩니다 다른 마커와는 다른 표준 마커와는 다릅니다

지도를 회전하면지도에 제목이 표시 될 때 평면 마크가 항상지도에서 튀어 나오게됩니다 두 가지 유형의 마커를 사용할 수 있습니다 이제 평면 마커와 표준 마커를 모두 회전시킬 수 있습니다 앵커 포인트는 앵커 포인트를 중심으로 회전합니다 그래서 재미있는 평면 마커를 만들 수 있습니다 이렇게하면 평면 마커를 만들 수 있습니다

예를 들어, 나침반처럼 나침반처럼지도에 고정시킬 수 있습니다이지도는 항상지도에 고정되며, 항상 특정 방향의 한 방향을 가리 킵니다 위의 두 점을 CHRIS BROADFOOT와 결합하십시오이 두 특징은 다음과 결합 할 수 있습니다 멋진 사용자 경험을 통해 정말 매력적인 경험을 얻을 수 있습니다

예를 들어 GPS 경로를 재생 중입니다 예를 들어 GPS 경로를 재생 중입니다 마크는 사용자의 실시간 위치 및 방향을 나타냅니다 마커의 방위는 사용자의 방위를 나타냅니다 그리고 그 특정 시점에, 마커가지도를 따라 움직일 때 움직일 수 있습니다 DANIEL SCHRAMM의 크로스 플랫폼 기능 중 일부는 다음과 같습니다

이는 크로스 플랫폼 기능입니다 오늘 우리는 그것에 대해 이야기 할 것이고, 오늘 이야기 할 시간이 있습니다 플랫폼의 각 기능, 플랫폼 별 기능을 배우려면 릴리스 정보를 참조하십시오 설명서에 게시 된 설명서를 살펴보십시오 Google Maps API를 설치하는 것을 잊지 마십시오

CHRIS BROADFOOT : Google+ 서클의 Google지도 API + 페이지에 추가합니다 지켜 줘서 고마워요 들어 주셔서 감사합니다 다음에 다시 보겠습니다 DANIEL SCHRAMM : 너 보자

DevBytes: Bluetooth Low Energy API in Android 4.3

[음악 재생] 안녕하세요 내 이름은 Fred Chung, Android 개발자 관계의 일부입니다

오늘 우리는 Bluetooth Low Energy에 대해 이야기 할 것입니다 안드로이드 43에서, 우리는 내장 된 플랫폼 지원을 추가하고 있습니다 Bluetooth LE 새로운 Nexus 7과 Nexus 4는 처음 두 개의 Nexus입니다

Bluetooth 스마트 준비가 될 장치, 그들은 많은 블루투스 스마트와 통신 할 수 있습니다 오늘 시장에 주변 장치 오늘 샘플 애플리케이션 연습을 할 예정입니다 하지만 그 일을하기 전에, 블루투스 저에너지의 기술적 개념 API 객체를 이해할 수 있습니다 그 이름에서 알 수 있듯이, Bluetooth Low Energy는 블루투스 클래식에 비해

블루투스 저에너지 디바이스를 사용하는 것은 드문 일이 아닙니다 몇 년이 아니라도 지난 몇 주 동안 지속될 필요가 있기 전에 배터리를 충전하거나 교체하십시오 프로토콜 자체는 작은 버스트에 최적화되어 있습니다 데이터 교환은 다음과 같은 애플리케이션에 이상적입니다 센서, 리모컨 등등

반대로 블루투스 클래식은 오디오 스트리밍과 같은 고 대역폭 애플리케이션 이제 정보가 어떻게 구조화되는지 살펴 보겠습니다 BLE 응용 프로그램 BLE는 일반이라는 사양을 기반으로합니다 속성 프로파일 또는 GATT는 송수신을 제어합니다 속성으로 알려진 짧은 데이터 조각

Android 앱은 GATT 클라이언트 또는 GATT 서버 일 수 있습니다 응용 프로그램에 따라 다릅니다 GATT 서버는 서비스 콜렉션을 지원할 수 있습니다 서비스는 다음과 같은 다양한 기능으로 생각할 수 있습니다 장치

각 서비스는 UUID로 고유하게 식별됩니다 응용 프로그램에서 참조 할 수 있습니다 각 서비스 아래에 읽고 쓸 수있는 특성 BTLE 프로파일에 따른 작업 너는 함께 일하고있다 관점을 설정하려면 마음을 살펴 봅시다 속도 측정 프로파일 중 하나 인 표준 프로파일

심박수 센서는 GATT 서버입니다 이 다이어그램의 Android 앱은 GATT 클라이언트입니다 심박 센서 장치에서 호스팅되는 GATT 서버 여러 가지 서비스를 제공합니다 이 서비스 아래에는 GATT 컬렉션이 있습니다 형질

심장 박동 측정을 제공하는 장치가 있습니다 그 사실을 알리는 알림을받을 수 있습니다 당신이 읽을 수있는 센서의 위치 이제 Bluetooth Low에 대한 기본적인 이해가되었습니다 에너지 기술, 일부 코드를 살펴 보겠습니다

먼저 Android 매니페스트를 살펴 보겠습니다 androidhardwarebluetoothle이라는 새로운 기능이 있습니다 응용 프로그램이 작동하는 경우에만 선언합니다

해당 기능이있는 장치 응용 프로그램이 다음에서 작동하는 경우 생략 할 수 있습니다 장치가 없으므로 선택적으로 블루투스 저에너지를 디스 에이블한다 앱 내 기능 이제 디버깅 세션이 시작되었습니다 계속해서 스캔을 클릭하겠습니다

그래서 여기에 몇 가지 중점을 두었습니다 그것이하려고하는 것은 startLeScan 메소드 호출 API 문서에서 볼 수 있듯이 BLE 조작 메소드는 본질적으로 비동기입니다 당신은 콜백을 지정해야합니다 이벤트가 발생합니다

이 경우, 장치가 검색되면, 콜백 메소드가 호출됩니다 그래서 저는이 중단 점을지나 가게 할 것입니다 앱에서 볼 수 있듯이 몇 가지 장치를 찾으십시오 이제 심장 박동 센서를 클릭하십시오 테스트 할 테스트 키트에 해당합니다

그러니 계속 클릭하십시오 이제는 당신을 다른 활동으로 인도합니다 배경 서비스 그리고 서비스에 중단 점을 넣었습니다 그것이하려고하는 것은 GATT 서버에 연결하는 것입니다

이 메소드를 호출하여이 장치에서 호스팅되는 connectGatt 앞의 예와 마찬가지로 모든 API가 BLE가 본질적으로 비동기 인 것과 관련이 있습니다 여기에 또 다른 콜백을 전달해야합니다 이제 GATT 서버에 연결 했으므로 tryServices 메소드를 호출하려면 이용 가능한 GATT 서비스를 발견한다 이 기기에서 호스팅됩니다

이제 브레이크 포인트를 해제하십시오 이제 발견 된 서비스에 대한 콜백은 다음과 같습니다 호출되었습니다 즉, 앱이 장치에서 사용할 수 있습니다 앱이 컬렉션을 통해 반복 할 것입니다

서비스가 발견되어 UI에 표시됩니다 이것은 심박수 센서이므로, 우리는 심박수 측정 계속해서 심박수 서비스를 찾고 확장하고, 심박수 측정 특성을 볼 수 있습니다 계속해서 클릭하십시오 그것이 일어나는 이유는 그것이 특성 알림을 지원하면 공고

이제이 중단 점을 풀어 봅시다 이제 심장 박동수가 업데이트되기 시작하자마자 독서, 당신은 특성에이 콜백을 얻을거야 귀하가 통지를 받고 있음을 나타내는 변경 그래서 우리는 중단 점을 발표 할 것입니다 여기 화면에서 볼 수 있듯이 우리는 마음을 얻고 있습니다 매우 작은 텍스트로 측정 값 판독 값을 표시합니다

나는 당신이 그것을 볼 수 있는지 모른다 심장 박동수 측정 알림으로 업데이트 중입니다 주변 장치로부터 수신 자, 저는 매우 중요한 요점을 설명하고자합니다 그리고 그것은 여러분이 특정한 주변기기와의 Bluetooth LE 연결은 스택이 할 수 있도록이 close 메소드를 호출하십시오

깨끗하게 정리하고있어 이것은 연습을위한 것입니다 자세한 내용을 보려면 Bluetooth Low를 확인하십시오 dandroid

com의 에너지 개발자 가이드 시청 해주셔서 감사합니다

Maps Live: Map Padding in the Google Maps Android API v2

안녕하세요 Google 개발자의 에피소드에 오신 것을 환영합니다

살고 있다 저는 Google Maps Developer Relations 팀의 Sarah Maddox입니다 지도를 사용하는 방법을 보여 드리겠습니다 Google Maps Android API로 패딩 지도가있는 애플리케이션이 있다고 가정 해 보겠습니다

사이드 바를지도에 추가하려면 하지만지도 UI 컨트롤이나 Google을 숨기고 싶지는 않습니다 심벌 마크 추가하면 어떻게되는지 봅시다 지도 패딩을 추가하지 않고 사이드 바를 만듭니다 이 작은 데모 응용 프로그램에는 오른쪽에 사이드 바가 있습니다

그리고 내 위치 컨트롤 찾기를 볼 수 있습니다 오른쪽 상단에 있지만 사이드 바에 의해 가려져 있습니다 마찬가지로지도 확대 / 축소 컨트롤 오른쪽 하단에 있으며 완전히 숨겨져 있습니다 그래서이 응용 프로그램으로 내가 한 일은 padded라는 버튼을 추가합니다 그리고 내가 덧대는 단추를 만지면, 응용 프로그램은 다음과 같은 메소드를 호출합니다

지도의 오른쪽에 30 픽셀의지도 패딩을 추가합니다 이제 UI 컨트롤이 멋지게 보입니다 내 사이드 ​​바 왼쪽에 약간 표시됩니다 지도는 여전히 전체보기를 사용합니다 그러나 사용자 컨트롤과 제스처 그들이 단지 사용하지 않는 것처럼 행동한다

지도의 더 작고 눈에 보이는 부분 그래서 내 위치 찾기 찾기를 탭할 것입니다 그리고 당신은 작은 파란색 위치 표시기가지도의 중심에 잘 배치되어 있습니다 지도 패딩을 고려했습니다 이제 정상적인 버튼을 누르면 내지도에서지도 패딩을 제거한 다음 내 위치 버튼을 다시 찾으십시오

위치 표시기가 약간 움직 였는지 확인하십시오 오른쪽으로 가면 중심에서 벗어난 것처럼 보입니다 전체지도를 고려하고 있기 때문입니다 보이는 부분 대신에 좋아, 나는 시드니를 만지고 위치를 잡을거야

호주 수학의 중심 그래서 주위에 멋진 푸른 바다가 많이 있습니다 그러면 Google 로고를 볼 수 있습니다 화면 왼쪽 하단에 있습니다 이제는 애플리케이션 요구 사항에 주목할 가치가 있습니다 Google 로고를 표시합니다

Google 로고가 숨겨져 있다면 Google지도의 서비스 약관을 준수하지 않음 아피스 따라서 UI 컨트롤을 왼쪽 하단에 추가해야하는 경우 맵의 패딩은 좋은 방법입니다 Google 로고가 나타나는지 확인하십시오 자, 코드를 살펴 보겠습니다 매우 간단합니다

Google지도 세트 패딩 사용 메서드를 사용하여지도 가장자리에 패딩을 추가합니다 이 메서드는 패딩을 결정하기 위해 네 개의 매개 변수를 사용합니다 왼쪽, 위쪽, 오른쪽 및 아래쪽 가장자리에 매개 변수 이름은 기억하기 쉽습니다 왼쪽, 위쪽, 오른쪽, 및 바닥 지도 재 센터링 (re-centering)과 같은 카메라 업데이트, 자동으로 패딩 처리됩니다

따라서 오프셋을 직접 계산할 필요가 없습니다 그리고 언제든지지도 패딩을 동적으로 변경할 수 있습니다 세부 사항은 문서에 있습니다 또한 Google지도 API 데모 앱을 살펴보십시오 Google Play 서비스와 함께 제공됩니다

다음은 데모에 대한 설명서 링크입니다 앱 그것은 내가 여러분에게 보여준 것보다 더 복잡한 예입니다 예를 들어, 애니메이션을 추가 할 수 있습니다 사이드 바를 안팎으로 밀어 넣을 수 있습니다

패딩 데모는 데모 앱에서 보이는 영역이라고합니다 메뉴 감사합니다 Google에서이 동영상을 즐기 셨기를 바랍니다 개발자 라이브

What's New in Kotlin on Android, 2 Years In (Google I/O'19)

[음악 재생] JEFFREY VAN GOGH : 안녕하세요 나는 Jeffrey van Gogh입니다

저는 Android Studio의 기술 책임자입니다 그리고 나는 프로그래밍 언어를 책임지고있다 및 컴파일러 하디 해리 : 그리고 저는 하디, 개발자 옹호자입니다 JetBrains에서

[치어 리더] JEFFREY VAN GOGH : 그래서 2 년이 지났습니다 구글이 안드로이드에 대한 코 틀린의 지원을 발표 한 이후 그리고 어제 Google은 Kotlin-first를 발표했습니다 그래서 우리는 당신에게 이것을 배경으로 줄 알았습니다 그리고 물론, 우리는 2 년 전에 시작하지 않았습니다

우리는 물건을 얻기 위해 상당한 시간이 걸렸습니다 안드로이드에서 Kotlin에 대한 준비 그리고 우리는 3 년, 3 년, 1 년 반 전에 결정했습니다 Google에는 수많은 언어 괴짜가있었습니다 나도 코 틀린과 놀기 시작 했어

헤이, 이것은 실제로 아주 멋지다 물론 Android Studio는 IntelliJ를 기반으로합니다 그리고 IntelliJ는 Kotlin을 오래된 코드베이스로 사용하기 시작했습니다 그래서 우리는 점점 더 코 틀린을 보게되었습니다 Android Studio에서 사용 중입니다

그리고 동시에, 우리는 고객 권고에서 많은 고객 피드백 게시판, 설문 조사 및 임시 토론 이 같은 회의에서 사람들은 Kotlin을 정말 좋아합니다 그리고 그들은 정말로 Google이 그것을 지원하기를 바라고 있습니다 왜냐하면 그들의 회사는 그렇지 않으면 Kotlin을 채택하지 않기 때문입니다 물론, 그런 새로운 언어를 사용합니다 큰 일이다

그래서 우리는 이사들에게 이것이 투자 할 가치가있는 무언가 우리가 발견 한 가장 좋은 방법은 우리 이사들에게 코드를 작성하게 Kotlin에서 며칠 동안 그 후에 그들은 팔렸다 I / O 2017 이전에 몇 달 전에, 우리는 그것을하기로 결정했습니다 이것은 많은 회의가이 모든 것을 설정하는 것을 의미했습니다

테크니컬 리드 나 매니저로서, 당신은 더 이상 코딩 할 시간이 충분하지 않습니다 기초를 설정하십시오 따라서 Google I / O 2017 이전의 모든 준비가 완료되었습니다 Android Dev 하위 레딧에이 큰 스레드가있었습니다 구글이 결코 Kotlin을 받아들이지 않을 것입니다

물론 우리는 무슨 일이 일어날 지 알고있었습니다 하지만 그 스레드에 회신을 보내는 것은 너무 어려웠습니다 그래, 2 년 전 Steph는 무대에 올랐어 코 틀린 지원 발표 나는 그것이 개발자의 가장 큰 박수라고 생각한다

기조 그것은 훌륭했다 물론, 우리 모두는 JetBrains과 Google 모두에서 알고있었습니다 그건 우리가 많은 일을했다는 것을 의미했다 우리 앞에 Kotlin이 잘 작동했는지 확인하십시오

Android 및 일반적으로 그리고 오늘, 우리는 우리가 지난 2 년 동안해온 일의 하디가 무슨 일이 일어 났는지 얘기 할거야 지난 몇 년 동안 코 틀린에게 그리고 나서 다시 가져 가겠 어 안드로이드 측에서 우리가 한 일에 대해서 이야기하겠습니다

하리 하리 : 고마워 시작하려면 먼저 언급하고 싶습니다 코 틀린 재단 (Kotlin Foundation) Google에서 공식 지원을 발표 한 시점을 기억한다면 몇 년 전에 Kotlin을 위해, 우리는 또한 간략하게 언급했다 우리가 창안 된 기초가 될 것입니다 JetBrains와 Google이 보호, 홍보 및 홍보 언어 Kotlin

재단은 이사회의 통제를받습니다 JetBrains의 두 대표, 두 구글, 및 1 명의 독립적 인 일원 그리고 당신에게 약간의 아이디어를주기 위해서입니다 기초의 범위가 무엇인지, 직업 중 하나 현재 언어 리드 디자이너를 임명하는 것이고, 물론 Andrey Breslav가 있습니다 변화를 막기위한 언어위원회

그리고이 점을 이해하는 것이 매우 중요합니다 범위면에서 제한적입니다 따라서 변경 사항을 깨는 것입니다 Kotlin은 지금도 열려 있기 때문에 계속 개발되고 있으며, GitHub에 우리는 여전히 KEEP을 가지고 있는데 이것은 Kotlin Evolution 개선 프로세스

그러나 언어위원회는 대부분 언어에 일어날 수있는 변화를 깨고 또한 상표 소위원회가 있습니다 그것은 Kotlin의 상표를 보호하는 것입니다 Kotlin을 홍보하고 사용하는 데 도움이되는 커뮤니티와 협력 공정한 방법으로 Kotlin 그리고 당신이 기초에 관하여 더 많은 것을 발견하고 싶은 경우에, 당신은 KotlinLang 웹 사이트에 갈 수 있습니다 세부 정보뿐만 아니라 더 많은 정보를 얻을 수 있습니다

Kotlin과 상표 등을 어떻게 사용할 수 있는지에 관한 정보 그리고 그걸로 데모로 넘어 갑시다 그리고 나는 언어로 당신에게 몇 가지 것을 보여줄 것입니다 이것은 내가 다른 사람의 기계를 사용하고있는 곳이다 이것이 어떻게 진행되는지 봅시다

ID가 맞다고 생각해 예 그래서 저는 언어에 대해 몇 가지 것을 보여 드리겠습니다 아마 가장 근본적이고 가장 중요한 것입니다 우리가 한 짓은 아주 취한 것입니다

오랫동안, 당신이 코 틀린을 쓰는 것에 익숙하다면 응용 프로그램을 사용하면 주된 진입 점이 있습니다 그래서 우리는 실제로 그것을 만들었으므로 매개 변수가 없습니다 그게 전부입니다 고맙습니다 제프리, 네가 원하니? 오

[웃음] 우린 2 년이 걸렸어 아니 그래서 우리는 우리가 가지고있는 작은 것들 중 일부부터 시작할 것입니다 언어 자체로 완성되었습니다 예를 들어, when 문을 사용하면 변수의 값을 캡처해야합니다

그 변수를 검사해야합니다 너는 너의 실제 내부에서만 그것을 사용하고있어 when 문 그래서 우리는 이것을 조금 더 멋지게 만들었습니다 본질적으로 변수를 때 문 자체

따라서 범위 밖에서 참조 할 필요가 없습니다 그리고 이것은 당신에게 당신의 언어로 의미를 부여합니다 사람들은 이것이 실제로 제한되어 있음을 이해합니다 조건부로 하지만 조금 더 얘기하자

우리가 소개 한 멋진 기능들 그것들은 좋지 않았다 나는 우리가 도입 한 더 멋진 기능을 말하고 있습니다 예를 들어 응용 프로그램이 있다고 가정 해 봅시다 클래스를 만들고 싶습니다

그리고 수업을 만들겠습니다 MicroserviceAPI라고 불릴 것입니다 그래서 저는 마이크로 서비스 API의 인스턴스를 만들 수 있습니다 마이크로 서비스 API를 말할 것입니다 우리는 거기에 갈

이제,이 마이크로 서비스가 필요한지는 모르겠습니다 마지막으로 갈거야 단지 유행 일 수 있습니다 그래서 내가하고 싶은 것은 사람들에게 이게이게 친절한 사람들이야 실험적인 기능과 같습니다

우리가 할 수있는 일은 우리가 실제로 할 수있는 것입니다 주석 클래스를 만든다 예를 들어, 이것이 새로운 API라고 말할 수 있습니다 그 주석 클래스에 주석을 달아라 Experimental이라는 다른 클래스와 함께 이제 새로운 실험적 주석을 사용할 수 있습니다

나는 내가 실험적으로 생각하는 어떤 것에도 창조했다 내 API에서 그래서 여기에이 새로운 API를 추가 할 수 있습니다 그리고 내가 그렇게하면, 이것이 빨간색으로 변하고 있음을 알 수 있습니다 그래서 그것은 나에게 컴파일러 오류를주고있다

당신이 이것을 사용할 수 없다는 말입니다 이것은 실험적인 기능이기 때문입니다 그 위에 마우스를 올려 놓으면 실험적이라고 말하는 것입니다 사실, 우리는 그것을 바꿀 수 있습니다 우리는 그것이 오류가 아니라, 실제로 경고로 정의 할 수 있습니다

그래서 여기에 경고가 될 수 있습니다 그리고 지금 막 가고 있습니다 경고로 표시됩니다 그래서 이것을 사용하기 위해서, 개발자 기본적으로이 기능을 선택해야합니다 내가 할 수있는 것은 Alt-Enter입니다

이제는 함수 호출에 새 API를 추가합니다 그래서 내가 어디에서 이것을 사용하는지, 이것은 실험적인 기능이라고합니다 이것은 사람들에게 당신이 지금 생각할 수있는 아이디어를줍니다 실험적이고 비슷한 종류의 API를 만들 수 있습니다 나는 아무것도 보증하지 않을거야

내일 우리가 뭔가를 바꾸고 싶다면 괜찮아 니가 경고 했어 Alt-Enter를 누르십시오 당신이 Alt-Enter를 봤다는 것을 알았습니다 괜찮아

너 자신의 잘못이야 그리고 우리가 실제로이 일을 한 것 중 하나는 우리는이 계약 개념을 도입 했습니까? 따라서 약간의 코드 계약에 익숙하다면, 우리는 이것을 Kotlin의 실험적 기능으로 소개했습니다 게다가 그래서 나는 어떤 함수가 있다고 가정 해 봅시다 예 : printLength

그리고 이것은 nullable 인 문자열을 취할 것이고, 그리고 string이 null이 아닌 경우, 나는 println 길이 할거야 이제이 방법이 효과가 있으며 스마트 캐스트가 완료되었습니다 문자열, null이 아닌 문자열, 내가 이미 그걸 발견했기 때문에 이것이 nullable이 아니라는 것을 알아 냈습니다 그래서 나는이 똑똑한 던지기를 할 수있다 그러나 내가 이것을 취해야한다면, 그리고 널 (null)이 아닌 대신에, 나는 무언가를한다, 아니다, 나는 앞으로 나아가고 창조한다

내 함수, 그래서 내 함수를 만드는 가정 해 봅시다 String이고 notNull 인 경우 부울을 반환합니다 그런 다음 반환 값이 null이 아니라고 말합니다 그 효과가 없다는 것을 알 수 있습니다 컴파일러가 실제로 그것이 not-nullable

컴파일러에게 알려주는 것이 좋을 것입니다 이 기능은 특정 계약을 준수해야합니다 그리고 Kotlin에서 이것을 정의 할 수 있습니다 계약 람다를 사용하여 계약 함수 계약이다 그리고 그것이 수입이라고 말할 수 있습니다

그리고 나는 진정한 의미의 반환을 말할 수 있습니다 이 @ notNull이 null이 아님을 나타냅니다 이제 오류가 발생합니다 무시해 아니, 농담이야

이 오류가 발생하는 이유 이것은 위에서 언급했듯이 실험적인 기능이기 때문입니다 두 가지 방법이 있습니다 첫 번째 것을 보여주었습니다 주석을 추가 할 수있었습니다 그러나 주석을 추가하면 그 주석이 전파되지 않습니다

그래서 뭔가가 그 API를 사용하고 있다면, 또한 주석을 추가해야합니다 전파 주석을 추가 할 수 있습니다 이것,이 형식입니다, 그리고 지금 나는 그렇게하지 않아도됩니다 그 통지를 추가하자마자, 지금 자동으로 다시 null이 허용되지 않는 문자열로 변환됩니다 따라서 실제로 계약을 맺고 함수에 대한 당신의 주장 특정 조건을 충족시킵니다

그리고 그것은 기본적으로 특정 수준의 코드 정확성 실제 코드에서 그럼 우리가 뭘하고 있는거야? 글쎄, 우리는 이것을 직렬화라고 부릅니다 멀티 플랫폼 인 직렬화 라이브러리입니다 JVM, JavaScript, Kotlin / Native, iOS, macOS, 리눅스, 윈도우, 임베디드 나는 태양 아래 모든 것을 언급했다고 생각한다

그리고 이것은 다중 플랫폼 라이브러리입니다 어떤 종류의 반성도 요구하지 않는, 일부 제품의 일부입니다 우리가 언어와 생태계의 일부로하고있는 일 그것 주위 그래서 여기에서는 클래스, 전형적인 데이터 클래스, 그리고이 serializable 어노테이션을 추가했다 이 라이브러리는 Kotlin 직렬화 라이브러리의 일부이며, 그런 다음 고객이 있으며 고객 목록이 있습니다

그래서 저는 println과 같은 것을 할 수 있습니다 그리고 나서 여기에서 나는 Json을 할 것입니다 stringify, Customer, 사용하고 싶은 시리얼 화자를 표시 한 다음 실제 고객을 전달하십시오 그리고 나는 똑같은 일을 고객 명단에서 할 수 있습니다 그래서 여기에 목록을 작성한 다음 고객 목록을 전달할 수 있습니다

그리고 이것을 실행한다면, 기본적으로 무엇을 할 것인가? JSON에서 해당 데이터 클래스로 출력됩니다 우리는 JSON을 지원합니다 Protobuf에 대한 지원이 있습니다 그리고 다른 것들이 작동합니다 그리고 우리는 분명히 그 반대를 할 수 있습니다

예를 들어, 여기에 JSON이 있다고 가정 해보십시오 이제 JSON을 만들어 보겠습니다 그래서 우리는 id가 1과 같을 것이고, 그 다음에 이름이 나와 같습니다 이메일은 you@mecom과 같습니다

나는 너무 독창적이다 이제 println을 할 수 있습니다이 경우, 저는 Json을 할 것입니다 parse, serializer를 다시 통과 시키십시오 그리고 내가 전달하고자하는 실제 JSON

그리고 이것이 할 일은 본질적으로 나에 대한 실제 데이터 클래스 객체 그리고 당신은 그것이 또한 – 나를 위해 데이터 객체를 반대로 만듭니다 내가 뭘 한거지? 이메일, 이름, 이메일 관객 : [INAUDIBLE] 하리 할리 : 필드 소스가 필요합니까? 아니, 그렇지 않아 관객 : [INAUDIBLE] 하리 할리 : 아니

그건 사실 맞아 어쨌든, 그렇게 일하고있었습니다

[웃음] 제프리예요 그는 뭔가를했습니다 제프리 반 고글 : 어 – 허 [박수 갈채] HADI HARIRI : 나는 사람들이 박수를 치기를 정말 좋아합니다 그래서 나는 그곳에서 무슨 일이 일어나고 있는지 모른다

그러나 그것은 라이브 데모에 대한 좋은 점입니다 뭔가 잘못 됐는지 확인하고 싶습니다 나는 사실 그것을 실제로했다 그래서 저는 그것을 운동으로했습니다 나중에 사무실 시간에 나에게 와서 그게 뭐가 잘못 됐는지 말해 줄거야

계속 나아 갑시다 내가 너에게 보여주고 싶은 다음 주석 클래스에 대한 간략한 개요입니다 여기에 지원을위한 몇 가지 추가 사항이 추가되었습니다 열거 형 예를 들어, 주석에 enum을 가질 수 있습니다

중첩 된 주석을 가질 수 있습니다 내 동반자 개체의 일부로 속성을 가질 수 있습니다 다시 말하지만, 이것은 나에게 더 많은 표현력을줍니다 실제 주석을 사용할 때 이제 우리가 작업 해 온 또 다른 것이 있습니다

당신이 들었을지도 모르는 멀티 플랫폼 프로그래밍입니다 그리고 멀티 플랫폼 프로그래밍의 아이디어는, 한 입 가득, 그 아이디어는 바로 지금 Kotlin입니다 다른 유형의 플랫폼을 타겟팅 할 수 있습니다 그래서 JVM을 대상으로 할 수 있습니다 자바 스크립트를 타겟팅 할 수 있습니다

네이티브 등을 타겟팅 할 수 있습니다 이제 이것에 대한 위대한 것들 중 하나 코드를 공유 할 수있는 능력, 왜냐하면 내가 공유하기를 원하는 많은 코드가 있기 때문입니다 권리? 비즈니스 로직, 검증 로직 등이 있습니다 내가 공유를 끝내고 싶다 그러면 우리는 어떻게 이런 일을 할 수 있습니까? 이것이 우리가 멀티 플랫폼의 개념을 도입 한 곳입니다

프로그램 작성 그리고 그 결과로, 당신은 지금 이 다중 플랫폼 프로젝트를 가질 생각이 들었습니다 그래서 당신은 내가 IDE에서이 프로젝트를 가지고 있다는 것을 알 수 있습니다 다른 플랫폼을 타겟팅하고 있습니다 그래서 나는 macOS를 가지고 있고, JVM을 가지고 있으며 JavaScript를 가지고있다

그런 다음 일련의 공통 코드가 있습니다 이것은 보통이라고 불린다 그리고 여기 안에는 몇 가지 코드가 있습니다 그래서 여기에 hello라는이 함수가 있습니다 즉, platform

name에서 인사하는 것입니다 그리고 platformname은 object의 속성입니다 그러나 차이점은이 객체 기대라고하는이 단어가 앞에 있습니다 이것이 말하는 것은 이것이 약간의 코드라는 것입니다

내 공통 코드에서 참조 할 수있는 구현은 실제로 여기에 제공되지 않습니다 구현이 제공 될 것입니다 다른 유형의 플랫폼에서 다른 방식으로, 이는 플랫폼에 따라 다를 수 있기 때문입니다 그래서이 귀여운 것을 볼 수 있습니다 여기 모퉁이에 작은

Alt Enter를 누르면 선언에 들어가라고 말하면서, 어떤 플랫폼 선언을보고 싶은지 묻습니다 따라서 JVM이라고하면 JVM으로 연결됩니다 내가 돌아가서 macOS에서 실제 선언문으로 간다면, 그것은 나를 macOS에 데려 갈 것이다 권리? 그래서 다른 플랫폼에서 다른 구현을 할 수 있습니다 그럼에도 공통 코드에서 해당 코드를 참조 할 수 있습니다

내 공유 코드 기반의 일부로 사용하십시오 그리고 시원한 것은 그렇게 생각해

생각해라 인터페이스와 조금 닮았습니다 그러한 인터페이스의 구현 그리고 멋진 점은 정적 컴파일 시간을 얻는다는 것입니다 확인, 말하자면 그래서 내가 이것을 주석으로 달아서 여기로 돌아 가면, 당신은 그것이 저에게 오류를주는 것을 볼 수 있습니다, 실제 플랫폼 중 하나 구현이 누락되었습니다

이제이 작업을 통해 공통 코드를 공유 할 수있는 다중 플랫폼 프로젝트 기초를두고 특정 구현을 기반으로한다 실제 목표에 약간 다르게 적용됩니다 그리고 그것은 멀티 플랫폼 프로젝트의 일부입니다 우리가 코 틀린과 함께 나아갈 것을 제안하고있다 예를 들어 Android와 공통 코드 기반을 공유하는 Android 애플리케이션, iOS 등

슬라이드로 다시 전환 할 수 있다면 내가 너에게 약간 얘기 할거야 우리가 가져온 다른 것들 Kotlin에게 언어 우리는 더 많은 표준 라이브러리 API를 가지고 있습니다 우리는 여전히 메소드의 API 번호를 유지하고 있습니다 조금 낮추지 만 더 많은 기능을 추가하고 있습니다

그 지역에 부호없는 정수 지원 – 아무도? 아니? 예 [박수 갈채] 나는 누군가를 항상 알고 있기 때문에 그것을 추가했다 그것에 대해 두드림 분명히 우리는 2018 년 패킷 KotlinConf를 발표했습니다

Kotlin 네이티브가 베타를 친다 툴링면에서 우리는 향상된 성능을 제공했습니다 Gradle 프로젝트를위한 고속, 병렬 빌드, KAPT를 사용한 점진적 주석 처리 Google에서 Ivan Garvrilovic에게 큰 소리 치십시오 우리를 돕기 위해

새로운 유형의 추론 엔진 상호 운용성의 많은 경우에, 특히 RX 주변에서 일하는 경우, 뿐만 아니라 언어를 조금 더 빌더를 사용할 때 간결하게, 등등 그리고 우리는이 프로그레시브 모드를 도입했습니다 본질적으로 당신이 코 틀린을 시험해 볼 수있게 해줍니다 새로운 기능을 사용해보십시오 일부 코드를 어기십시오

이제는 할 수있는 깃발입니다 Kotlin과 함께 좀 더 살기 가능하게하다 가장자리에 그리고 그걸로 제프리에게 건네 주겠어 그게 우리가했던 다른 것들을 보여줄거야

특히 안드로이드에서하고 있습니다 JEFFREY VAN GOGH : 고마워, 하디 데모를 잊어 버린 기능이 하나 있다고 생각합니다 HADI HARIRI : 당신이 무슨 말을하는지 전혀 모르겠습니다 JEFFREY VAN GOGH : 괜찮습니다

내 데모에 보여 줄게 HADI HARIRI : 당신이 아마 그것을 망 쳤어 [웃음] 제프리 반 고글 : 좋아 이제 Android 측에서 수행 한 작업을 살펴 ​​보겠습니다 Kotlin을 지원합니다

먼저 OS로 시작합시다 물론 OS는 바이트 코드로 작동합니다 따라서 Kotlin을 지원하기 위해해야 ​​할 일이별로 없습니다 그러나 우리는 정확성을 추가했는지 확인했습니다 성능 테스트를 통해 코 틀린 패턴을 깨지 않게했습니다

우리는 몇 가지 구체적인 성능을 구현했습니다 이러한 테스트를 기반으로 한 최적화, 루프 최적화에 특히 적합합니다 그리고 나서 우리는 OS 측면에서 큰 일을했습니다 디버깅 지원이 향상되었습니다 Kotlin은 몇 가지 구조를 가지고 있습니다

당신이 다른 언어로 가지고 있지 않은 인라인 함수처럼 Android의 새로운 버전 이제 더 나은 디버깅을 지원합니다 그런 다음 안드로이드 프레임 워크, 거기에서 일어나는 일이 많습니다 중요한 것은 API 주석을 추가 한 것입니다 아직 완성되지 않았습니다

그러나 새로운 API는 이제 nullness와 기본 매개 변수를 갖습니다 기본 값 주석이 있으므로 Kotlin에서 온 사람들을 사용할 수 있습니다 기존 API를 통해 작업하고 있습니다 뿐만 아니라 주석을 달 수 있습니다 그런 다음 Kotlin 확장 API를 추가했습니다

그래서 이것들은 여러분이 프로젝트에 다음을 제공하십시오 확장 메소드를 통한 추가 API Kotlin 코드를 더 관용적으로 만드십시오 그런 다음 우리는 전체 묶음에 대해 코 루틴 지원을 추가합니다 Jetpack 라이브러리 [박수 갈채] 따라서 비동기 코드를 작성할 수 있습니다

좀 더 절차적인 방법으로 그리고 물론, 어제 우리는 Jetpack Compose를 발표했습니다 그것은 모두 코 틀린입니다 이제 데모를 살펴 봅시다 좋아요 그래서 여기에 작은 앱을 만들면, 쇼 목록을 다운로드합니다

개조를 사용하여 서버에서 사용할 수 있습니다 그런 다음 로컬 SQL 데이터베이스를 검사합니다 방 API를 사용하여이 쇼들을 봤다 면요 그래서 여기에, 내가 정의한 것을 볼 수 있습니다 API를 사용하여 둘 다 RX 자바를 사용하여 쇼의 목록을 얻을, Kotlin 코딩 비동기 기능을 사용할 수도 있습니다

그리고 API는 거의 동일하다는 것을 알 수 있습니다 같은, 조금 다른 반환 유형 그리고 방 쪽 – 오, 미안 (QUIETLY) 내 코드는 어디에 있습니까? 좋습니다, API는 건너 뜁니다 꽤 많이 있습니다

오, 여기 있습니다 죄송합니다 그래서 당신은 똑같은 것을 봅니다 나는 쇼를 봤어? Java의 RX는 매우 유사합니다 여기 Flowable이 있습니다

[무관심]이 있습니다 따라서 API는 꽤 유사합니다 이제 전화하는 방식을 살펴 보겠습니다 RX와 Java 사이의 코드 – RX와 coroutines 그래서 RX에서는 쇼를 진행하기 위해 많은 운영자를 사용합니다

모든 비동기 호출로 우리의 흐름을 수행하십시오 그리고 이것들은 꽤 복잡해 질 수 있습니다 그리고이 코드는 노란색으로 강조 표시되어 있습니다 그게 내가 아는 뭔가가 있다는 뜻이야 반환 유형으로 수행

따라서 구독 할 때, 당신은 구독을 처리합니다 물론 RX는 Java에 뛰어난 표현력을 제공했습니다 그리고 RX의 발명가들은 똑똑했습니다 그들은 그들이 무엇을 만들고 있는지 알았습니다 그러나 그들은 언어에 의해 제한되었습니다

Kotlin에서 우리는 이제 coroutines를 가지고 있습니다 우리는 실제로 이것을 훨씬 더 멋지게 할 수 있습니다 그래서 코 루틴을 사용하는 동일한 코드가 있습니다 먼저 서버에서 프로그램 목록을 가져옵니다 우리는 이것을 대기 함수라고 부릅니다

신원이 알려줍니다 이봐 요 여기서 비동기적인 일이 일어나고 있습니다 그런 다음 우리는 for for 루프를 사용할 수 있습니다 그리고 그것은 반환 쇼 동안의 [INAUDIBLE]입니다

그리고 우리는 우리의 비동기 내가 로컬 데이터베이스에 쇼를 본 적이 있는지 알아보기 위해 호출하십시오 그리고 거기에서 계속됩니다 그리고 나서, 여기에, 당신은이 발사 호출을 봅니다 이 전화 해 데이터 세트가 변경되었음을 알리는 지 확인하십시오

UI 스레드에서 그리고 여기서 좋은 점은 절차 적으로 보입니다 디버깅을 할 때 – 나는 지금 시작해야한다 물론 작동하지 않습니다 오! 우리는 거기에 갈

이미 실행 중입니다 그래서 내가 실제로 볼 수 있다는 것을 알 수 있습니다 전체 방법으로부터의 변수들에서, 특정 운영자 만이 아닙니다 그래서 인생이 훨씬 쉬워집니다 비동기 코드를 디버깅 할 때 이제 슬라이드로 다시 전환하십시오

다음은 Android Tooling입니다 Android Studio에서 많은 작업을 수행했습니다 Kotlin이 잘 지원되는지 확인하십시오 우리가 한 첫 번째 일은 Kotlin 플러그인이 Android Studio에 포함되어 있음 우리가 그것을 공개하기 전에 우리는 그것을 잘 테스트 할 수 있습니다 JetBrains와 긴밀하게 협력했습니다

그들이 Kotlin 플러그인을 업데이트 할 때마다, 공개하기 전에 테스트를 통해 확실하게 확인합니다 Android Studio와 Kotlin은 잘 작동합니다 다음으로 Android 리팩토링 지원을 추가했습니다 IDE에는 많은 작업이 있습니다 Android 관련 리팩토링입니다

우리는 지원을 추가하기 위해 노력하고 있습니다 코 틀린에있는 모든 사람들에게 린트쪽에는 린트가 거의 있습니다 완전히 다시 작성되었습니다 자바 언어에 대해 [INAUDIBLE] 점검을 작성하는 데 사용되었습니다

이제는 UAST라고 불리는 것을 사용합니다 한 번 같은 린트 체크를 쓸 수 있습니다 그리고 Kotlin과 Java 코드를 모두 분석 할 수 있습니다 제품 템플릿을 추가하여 당신은 새로운 단편이나 새로운 활동을 만들고 있습니다 당신은 Kotlin 코드를 처음부터 가지고 있습니다

당신은 그것을 변환 할 필요가 없습니다 이제 컴파일러 측면에서, 우리의 새로운 Shrinker R8 Kotlin 특정 최적화가 많이있다 그것으로, 당신이 만드는 이익을 얻을 수 있도록 가능한 한 작은 코드 물론 IDE는 이제 Jetpack을 지원합니다 구성된 프레임 워크

문서 및 샘플 사이트에서, developerandroidcom을 보면, 모든 API 참조에는 이제 Kotlin 및 Java 구문이 모두 있습니다 유효한 Kotlin 관련 문서 포털이 있습니다

Kotlin을 시작하는 방법, 사용법을 알려줄 것입니다 호출자 루틴 등 또한 많은 샘플과 스 니펫 이제 Kotlin을 사용할 수 있습니다 양쪽 측면, GitHub 샘플입니다 올해 Google I / O를 살펴볼 수있을뿐만 아니라, Androids의 프레젠테이션 대부분을 볼 수 있습니다

그들의 샘플을 Kotlin에서해라 당신도 볼 수있는 몇 가지 애플 리케이션이 있습니다 Google I / O 앱은 물론이 새로운 Android 해바라기 앱 Kotlin을 사용하여 처음부터 구축되었습니다 우리는 종종 헤이 (hey)를 요청 받는다 너희들이 코 틀린을 추천하고있다

하지만 너 혼자 사용하고 있니? 물론 그것은 매우 공정한 질문입니다 현재 Google에는 많은 사내 개발자 도구가 있습니다 그래서 Kotlin 지원을 추가하는 데는 시간이 걸렸습니다 Google 직원을위한 내부 앱으로 시작했습니다 예를 들어 내부 앱이 있습니다

지도와 사무실 위치를 보여줍니다 그래서 우리는 그 사실로부터 많은 것을 배웠습니다 그 이후로 우리는 실제로 일부 공개 Google Apps에서 Kotlin을 사용하기 시작했습니다 여기에 몇 가지 앱이 있습니다 오늘 Kotlin 코드를 휴대 전화에 보냅니다

그리고 더 많은 것을 기대할 수 있습니다 Kotlin을 채택하는 것에 대해 말하면, 전체 생태계를 살펴보고, 우리는 활발한 개발에서 – 적극적인 개발은 지난 6 개월 동안 Play 스토어에 업로드했습니다 우리는 애플 리케이션의 16 %가 지금 Kotlin을 사용하고있는 것을 본다 그리고 앱이 개발 될 수 있음을 명심하십시오 하나의 버그 수정 또는 하나의 자산 변경이 있기 때문입니다

그래서 16 %는 꽤 인상적입니다 지난 I / O 이후로 5 배나 성장했습니다 그리고 당신이 최고 천개의 앱을 본다면, 그것은 실제로 이미 훨씬 더 커졌습니다 우리가 Kotlin을 사용하여 볼 수있는 애플 리케이션의 44 % 그래서 우리를 코 틀린으로 데려옵니다

어제 발표했습니다 그래서 왜 우리가 왜했는지에 대한 더 많은 개요를 알려 드리고자합니다 그것은 무엇을 의미할까요? 그렇다면 왜 코 틀린을 발표할까요? 우리는 코 틀린을 사용하는 사람들의 강한 입양을보고 있습니다 우리는 지역 사회에 큰 흥분을 안겨줍니다 사람들이 Kotlin을 사용할 때

실제로 사람들이 설문 조사에서 질문을받을 때 그들이 얼마나 Kotlin을 더 행복하게 사용하는지, 실제로 사람들보다 25 % 높은 점수를받습니다 누가 Kotlin을 사용하지 않고있다 업계 전반 및 Google 내부의 많은 앱 지금 Kotlin을 사용 중입니다 우리는 많은 고객에게 다가갔습니다 고객 자문위원회 (Customer Advisory Board)를 포함하여 그리고 Kotlin에 대한 투자에 집중하십시오

그럼 그게 무슨 뜻 이죠? 물론, 우리는 자바 프로그래밍을 계속 지원할 것입니다 많은 측면에서 언어 플랫폼, Android Studio 지원, 보풀, 안드로이드 X와 같은 Docs가 사라지지 않을 것입니다 하지만 다른 노력들을 보면 우리의 온라인 교육, 샘플처럼 우리는 먼저 Kotlin, 그리고 나서 자바 외국어가 최선의 노력이 될 것입니다 그리고 물론, 몇 가지 기능이 있습니다

다중 플랫폼 프로젝트와 Jetpack Compose 그것들은 단지 Kotlin에서 제공 될 것입니다 지금 당연히, 우리가 사람들에게서 들리는 다음 질문은, 그게 내가 전환해야한다는 뜻인가? 제발 Kotlin을 먼저 가져 가지 마세요 모든 Java 코드를 가져 와서 Kotlin에서 다시 작성해야합니다 그건 우리가 네가하고 싶지 않은거야 Android Studio를 확인하십시오

그것은 많은 수십만 줄의 코드입니다 지금은 Android Studio의 약 10 % Kotlin입니다 특정 코드 그리고 우리가하는 일은 새로운 기능 만 사용한다는 것입니다 코 틀린에 써라

그리고 그것은 Kotlin 자바와 좋은 상호 운용성을 가지고있다 Kotlin에서 단일 클래스를 작성할 수 있습니다 나머지는 Java로 유지하십시오 또는 Kotlin에서 코드의 99 % Java에서 남은 부분 만 남았습니다 물론, 당신의 현재 상태는 중요합니다

프로젝트 및 팀의 당신이 당신의 방출을 발송하는 것으로부터 1 주일 떨어져 있다면, 아마도 Kotlin으로 전환하기에 가장 좋은시기는 아닙니다 그러나 새로운 개발주기를 시작한다면, 니가 코 틀린을 데려 갈 수있을거야 물론 팀에 따라 다릅니다 그들은 Kotlin에 관심이 있습니까? 이것들을 안전하게 지니고 있습니까? 우리는 또한 많은 사람들이 실제로 모집에서 언급 한 Kotlin을 사용합니다 그들은 더 많은 후보자를 얻을 수 있습니다

고려해야 할 사항 물론, 기술적 측면에서, 고려해야 할 트레이드 오프가 있습니다 Kotlin은 뛰어난 기능, 더 많은 생산성, 그리고 만족 그러나 당신은 학습 곡선에 대해 생각해야합니다 사람들이 배우는 데는 시간이 걸립니다 관용적 인 코 틀린을 쓰기

우리는 Kotlin을 쓰는 대부분의 사람들이 첫번째 주, 그들은 정말로 Kotlin에 자바를 쓰고있다 그리고 3 개월에서 6 개월이 걸립니다 실제로 관용적 인 코 틀린을 쓰기 시작합니다 괜찮아 내 말은, 당신은 여전히 ​​코 틀린의 모든 이익을 얻습니다

nullness, et cetera에 대해 경고합니다 그럼 빌드 속도가 있습니다 Kotlin은 Java 컴파일러보다 느립니다 그것은 당신을 위해 더 많은 일을하고 있습니다 그리고 그것은 더 어린 컴파일러입니다

우리는 그것을 더 빨리 만들기 위해 열심히 노력하고 있습니다 그리고 물론, 유의하십시오 예, 느립니다 하지만 앱을 만들면 빌드가 줄어들 수 밖에 없습니다 가능성이 가장 높습니다

APK 크기도 있습니다 응용 프로그램은 표준 라이브러리를 사용하며, 약간의 공간이 필요합니다 그러나 R8과 같은 것들은 그것을 줄일 수 있습니다 진행중인 Kotlin 작업은 Google에서 계속 진행되고 있습니다 물론, Jetpack Compose가 가장 큰 것입니다

항상 새로운 KDX API를 계속 추가하고 있습니다 컴파일러 쪽에서 우리는 많은 작업을하고 있습니다 빨리하기 Kotlin 10330과 마찬가지로 증분 처리기 그리고 훨씬 더 많은 것이 있습니다

더 향상된 도구 및 더 많은 문서와 샘플을 볼 수 있습니다 Kotlin을 사용합니다 Kotlin 사용에 관심이 있다면, 하지만 어디서부터 시작해야할지 모르겠다 우리는 Kotlin Everywhere를 발표하고 있습니다 두 Google이 주최하는 일련의 교육입니다

및 JetBrains 그리고 지금과 KotlinConf 사이에서 일어나고 있습니다 올해 말 12 월 그것에 관심이 있다면, 참여하거나이 사이트를 호스팅하는 것을 돕고,이 링크로 이동하십시오 가입하십시오

따라서 새로운 Kotlin 첫 번째 로드맵을 통해, 안드로이드 용 Kotlin에 대한 투자 단지 더 커질 것입니다 아직 코 틀린을 사용해 보지 않은 여러분 모두를 초대하고 싶습니다 최근에 그것을 사용하지 않았거나 오늘 앱에서 사용해보십시오 Kotlin과 비슷한 경험을 해 주셨으면합니다 좀 더 예측적이고 코딩이 더 재미있을 것입니다

고맙습니다 [음악 재생]

How to Download/install Call Of Duty Mobile in Android/phone

그래서 내 이름은 Rahul Sharma이고 RS로 재미있게 지켜보고 있습니다 죽은 구독자를위한 새로운 동영상으로 돌아 왔습니다

이 비디오에서 나는 당신에게 그것을 보여줄 것입니다 Call of Duty Mobile을 다운로드하고 무료로 재생할 수있는 방법 안드로이드 폰에서 이 게임은 초기 액세스 사용자 만 사용할 수 있습니다 미리 등록해야하지만 지금은 사전 등록이 더 이상 도움이되지 않습니다 조기 접속이 이제 끝났기 때문에 그러나 나는 그것을 어떻게 다운로드하고 재생할 수 있는지 보여줄 것입니다 소중한 시간을 낭비하지 않으면 서이 비디오를 가장 작게 만들고 싶습니다

나는 모든 것을 요점까지 말하려고한다 그래서이 전체 비디오를 보아주세요 더 이상 시간을 낭비하지 않고 동영상에 들어가 봅시다 먼저 COD APK에 대한 설명에서 내가 제공 한 링크를 클릭해야합니다 그러면이 웹 사이트로 리디렉션됩니다

당신이 로봇이 아니라면 나는 로봇 captcha 아니에요 이것을 해결하십시오 계속하려면 여기를 클릭하십시오 15 초 동안 워밍업 후 광고 건너 뛰기를 클릭하십시오 다른 탭으로 리디렉션됩니다 이전 탭으로 돌아 가기 다운로드를 클릭하여 APK를 다운로드하십시오 원하는 Gmail 계정 선택 APK가 다운로드 중입니다

이미 다운로드 했으므로 일시 중지 중입니다 그때 당신은 COD의 OBB를 다운로드 할 필요가 있습니다 APB와 동일한 OBB 다운로드 이제 기본 파일 관리자를 엽니 다 최근에 다운로드 한 Duty Mobile APK 설치 및 설치 그런 다음 OBB를 검색하여 복사하거나 잘라내 Android> OBB에 붙여 넣습니다 Call of Duty Mobile을 즐기십시오

이 비디오는 100 % 정품이라고 생각하도록 COD Mobile의 게임 플레이를 보여 드리겠습니다 나는 비디오에 여분의 가십을 만들지 않았다 그리고 나는 너의 시간의 1 초를 낭비하지 않았다 그래서 사람들은 제게 정말로 동기를 부여하는 비디오를 좋아합니다 구독자가 죽어서 조회수를 얻지 못할 것이라는 것을 알고 있습니다

새 업로드 알림을받지 못함 YouTube에서이 알림 문제를 최대한 빨리 해결해주세요 얘들 아, 같은 의견, 의견 및 공유하여 일부 지원을 보여주십시오 가입 후 벨 아이콘을 클릭하십시오 보며 주셔서 감사합니다 !!!!

Kotlin/Everywhere, Android Dark Theme in Flutter, & Kubernetes apps

[음악 재생] 토드 케펠 만 : 안녕 나는 개발자 쇼 (Todd Kerpelman for the Developer Show) 가장 멋진 개발자의 주간 업데이트입니다

Google의 뉴스 전문 안드로이드 개발자의 50 % 이상이 현재 Kotlin을 사용합니다 GitHub에서 가장 빠르게 성장하는 언어입니다 많은 새로운 Jetpack API 및 기능 Kotlin에서 첫 번째로 제공 될 예정입니다 그래서 당신이 코 틀린에 대해 더 깊이 들어갈 수 있도록, 우리는 일련의 커뮤니티 중심 행사를 기쁜 마음으로 알립니다

Kotlin의 잠재력에 초점을 모든 플랫폼에서 Kotlin Everywhere라고합니다 이 사건들에 대해 더 자세히 알기를 원하면, 게시물의 세부 정보를 확인하십시오 점진적인 웹 앱을 만드는 경우, 당신은 아마 안드로이드 장치에서, mini-infobar라는 Chrome 시스템 대화 상자가 나타납니다 브라우저 화면의 맨 아래에 사용자에게 PWA를 설치하라는 메시지를 표시합니다 이 방법은 설치를 유도하는 데 유용 할 수 있지만, 개발자들은 사용자에게 앱을 설치하도록 요청합니다

크롬 76에서는 미니 인포바를 방지 할 수 있습니다 정상적으로 나타나지 않고 나타납니다 당신이 선택한 시간에 방법을 찾으려면 게시물의 세부 정보를 확인하십시오 이번 달 Google I / O에서 Android 팀 Android Q에서 어두운 테마 지원을 발표했습니다 사용자가 시스템 전체의 어두운 UI 모드를 토글합니다

그리고 모든 사람들을위한 희소식 Flutter 팀이 이미 Android에 대한 지원을 추가했다는 것입니다 2 월의 어두운 테마 그리고 Flutter 앱에서 활성화 할 수 있습니다 위젯 트리에 속성을 추가하기 만하면됩니다 어느 재산을 물으셨습니까? 글쎄, 당신은 알아낼 게시물을 체크 아웃해야합니다

Kubernetes 애플리케이션은 엔터프라이즈 급이며, 배포가 용이하고 컨테이너 화 된 응용 프로그램 어떤 Kubernetes 환경에서도 실행할 수 있습니다 Google Cloud Platform 마켓 플레이스 Kubernetes 응용 프로그램과 같은 다양한 솔루션을 제공합니다 데이터베이스에서 보안에 이르는 모든 것 가격 책정 옵션이있는 개발자 도구 등 기업의 요구 사항을 충족하도록 설계되었습니다 따라서 더 많은 정보를 얻으려면 체크 아웃하십시오 게시물의 세부 사항

개발자 학생 클럽은 수천 명의 학생 개발자를 제공합니다 전 세계의 도구와 기회 리더로서 성장하고 Google에서 기술을 향상시킬 수 있습니다 오픈 소스 기술 및 실제 문제를 해결할 수 있습니다 커뮤니티의 문제를 해결하는 데 관심이 있다면 기술을 통해 학생들을 이끌고 싶습니다 커뮤니티를 Google에 초대하면 신청할 수 있습니다

아래 설명에있는 링크를 사용하십시오 이봐, 구독하고 공유하는 것을 잊지 마세요 저는 개발자 쇼 (Todd Kerpelman) 개발자 쇼입니다 지켜 주셔서 감사 드리며 다음 주에 다시 보겠습니다 나는 kung를 알고있다, 나는 kung fu를 모른다

[웃음]

CONFIGURARE MAIL ICLOUD SU ANDROID IN 5 MINUTI

바이러스 기술 채널에 오신 것을 환영합니다 저는 Davide입니다

이제 단계별로 구성하는 방법을 함께 살펴 보겠습니다 몇 번의 클릭만으로 귀하의 icloud 계정과 안드로이드 장치의 icloud 이메일 채널을 구독하는 것을 잊지 말고 등록한 후에는을 클릭하십시오 Youtube 채널에 게시 예정인 동영상에 대한 알림을 수신하는 벨 이제 계정을 구성하는 방법과 절차에 대해 알아 보겠습니다 icloudcom 링크에 연결하고 자격 증명을 입력 한 다음 이메일 주소와 비밀번호를 입력하십시오

로그인 이제 우리 이름의 오른쪽 상단을 클릭하여 메뉴를 스크롤하고 iCloud 설정을 클릭하십시오 icloud 설정에서 항목 ID 사과가있는 곳에 우리가 클릭해야합니다 관리 Appleidapplecom 링크로 리디렉션되며 자격증 명을 다시 입력해야합니다 이 경우 그는 나를 묻습니다

2 단계 인증을 사용하는 인증 코드 이 코드를 받기 위해서는 sim을 가지고 있어야합니다 우리의 아이폰 장치가 실패했거나 배터리가 다운 되었기 때문에 글쎄, 우리는 코드를 받았고 우리는 그것을 입력하고 자신을 인증하려고합니다 마지막으로 우리는 클릭하고 클릭해야합니다 항목 보안에 우리가 클릭해야만하는이 앱의 특정 비밀번호에서이 경우 비밀번호를 생성해야합니다이 경우에는 이름을 입력해야합니다

android 우리는 암호를 생성하려고합니다 이것은 우리가 반드시 필요로하는 암호입니다 가서 계정을 만들 때 사용하십시오 우리 안드로이드 장치에 icloud 아주 잘 이제 우리의 안드로이드 스마트 폰에 가서 우리의 icloud 이메일을 추가하자 기기의 드롭 다운 메뉴를 스크롤하여 설정으로 이동 한 다음 계정 항목으로 이동하십시오

우리는 계정을 추가합니다 그런 다음 이메일을 클릭합니다 이 경우 icloud 이메일 주소를 입력하십시오 : technologyvirale@icloudcom 이 경우 이전에 생성 한 비밀번호를 입력해야합니다 우리는 모든 암호를 침착하게 복사합니다

끝났어 로그인을 클릭하십시오 이 경우 나는 화웨이 안드로이드 장치를 사용했다 그런 다음 여기에서 수신 메일의 빈도를 볼 수 있습니다 클릭하여 계속 진행할 것을 결정할 수 있습니다

이메일을 클릭하십시오 우리 계정에서 방금 생성 한 수신 및 발신 메일 설정을 확인해야합니다 그런 다음 서버와 포트 그래서 그들 웹 사이트에서 그들은 그들이 무엇인지 말해줍니다 메일을 올바르게 수신 할 수있는 설정 그것을 받고 그것을 보내라 IMAP의 경우 서버 데이터입니다

중요한 것을 가져옵니다 나가는 메일 설정으로 이동하여 SMTP 서버와 포트 모두에 대해 데이터가 올바른지 확인합니다 비디오가 있다면 당신이 좋아하는 것을 떠나서 채널을 구독하는 것을 잊지 마시고 다음 비디오와 함께 다음 채널을 보면서 유용하게 보였습니다 바이러스 성 기술

What's New in Android Studio UI Design and Debugging Tools (Google I/O'19)

[음악 재생] VADIM CAEN : 안녕하세요 우리 이야기에 일찍와 주셔서 감사합니다

Android Studio, UI 디자인 및 디버깅의 새로운 기능 도구 고맙습니다 [박수 갈채] 저는 Vadim입니다 Android Studio에서 디자인 툴을 작업합니다 JEROME GAILLARD : 저는 Android Studio 팀의 Jerome입니다

JOE BAKER-MALONE : 저는 Android Studio 팀의 Joe입니다 ASHLEY ROSE : 저는 Android 프레임 워크와 JetPack의 Ashley입니다 VADIM CAEN : 좋습니다 시작하기 전에 모바일 제품에 대해 약간의 이야기를합니다 어제 어쩌면 Android Studio 팀은 개선을 위해 모바일 제품에 중점을 두었습니다

Android Studio의 엔드 투 엔드 사용자 경험 Android Studio 개선은 수정 사항 만이 아닙니다 또한 사용 방법을 개선하는 방법이기도합니다 우리가 확인한 틈새를 채우십시오 우리의 도구 체인은 – 설계 할 때 – 새로운 레이아웃을 구축하고 새로운 탐색 기능을 구축합니다 이 레이아웃 사이에, 당신의 자원을 관리하고, 장치에서 런타임에 검사를 처리합니다

이 도구 체인을 사용하려면 전형적인 사용자 여행을 거치면서, Google Trips 애플리케이션을 구축하십시오 그리고 Jerome은 Layout Editor에 대해 이야기 할 것입니다 여기에서 볼 수있는 첫 번째 레이아웃을 작성하는 방법에 대해 설명합니다 제롬 가이 야드 : 감사합니다, 바딤 그래서 우선, 우리는 Google Trips 앱의 첫 화면, 레이아웃 편집기를 사용하여

레이아웃 편집기를 열면 이것은 화면의 종류입니다 너는 볼거야 여기는 단지 빈 레이아웃 일뿐입니다 우리가 할 첫 번째 일은 청사진 모드로 전환하는 것입니다 속도가 빠르면 빠르며 방금 만들려고 할 때 산만해진다

레이아웃상의 제약 넌 그냥보고 싶지 않아 구성 요소가 실제로 어떻게 보이는지 나는 팔레트에서 – 레이아웃에 필요한 모든 구성 요소를 드래그하여 어느 정도 확실한 곳에서 일단 내가 끝내면 그 시간이 온다

제약 조건을 만들 수 있습니다 좀 더 효율적인 건물 제약이되는 방법으로, 나는 그들을 하나 하나 만들 수 있었다 하지만 문맥 메뉴를 사용하면 한 번에 여러 가지 제약 조건을 만들 수 있습니다 예를 들어 여기서는 RecyclerView를 중앙에 배치하려고합니다 레이아웃 내에서

내가 할 수있는 한 가지는 RecyclerView를 마우스 오른쪽 버튼으로 클릭하는 것입니다 문맥 메뉴에는 옵션이 있습니다 수평으로 센터링의 그것이하는 일은 왼쪽 클릭 한 번으로 오른쪽 제약 조건을 RecyclerView가 중앙에 배치되도록합니다 일단 모든 제약 조건을 다 만들면, 이것은 내 레이아웃이 청사진 모드에서 보이는 것과 같습니다

분명히, 그것은 나에게 정말로 말하지 않는다 디자인에 비해 옳은 것을 만들면 지금 당장 나는 주어진다 이제 디자인 모드로 돌아가겠습니다 그것이 어떻게 생겼는지 보아라 디자인 모드에서는 보이지 않는 것을 볼 수 있습니다

내가받은 원래 디자인과 매우 흡사하다 그 이유는 RecyclerView 뷰 꽤 비어 있습니다 아시다시피, RecyclerView는 일반적으로 런타임에 데이터를 채우고, 하지만 그때는별로 도움이되지 않습니다 레이아웃을 만들고 데이터가 올바르게 표시되는지 확인하십시오 당신이 보게 될 것입니다

이 문제를 해결하려면 디자인 [? 도구?] 속성을 사용합니다 그래서 디자인 시간 속성, 당신은 간단하게 – RecyclerView에서 컨텍스트 메뉴를 다시 사용하십시오 샘플 데이터 선택기 등을 사용할 수 있습니다 샘플 데이터 선택 도구에서 미리 정의 된 템플릿 중 하나를 선택할 수 있습니다 RecyclerView 항목에 대해 귀하가 제공하는 정보

여기에서 첫 번째 이메일 클라이언트를 선택했습니다 그렇게하면 해당 RecyclerView에 대한 레이아웃이 생성됩니다 항목, 이메일 클라이언트 카드 그리고 동시에, 그것을 당신의 RecyclerView에 연결합니다, 그러면 레이아웃 편집기에 채워진 상태로 표시됩니다 물론 우리는 이메일 클라이언트를 구축하지 않습니다

RecyclerView에서 빌드하고자하는 것 그 여행 카드입니다 그래서 나는 그 RecyclerView 아이템을 편집하려고합니다 Trip 카드로 만들었습니다 자원 관리자 패널에서 – 여기에서 볼 수있는 왼쪽 편에, 바딤이 선물 할거야 너에게 훨씬 더 자세하게 – 간단히 말해서 RecyclerView 항목의 이름을 뭔가로 바꿀 수 있습니다

내 프로젝트에 더 적합한, 그리고 나 편집을 시작할 수 있습니다 리소스 관리자에서 레이아웃을 두 번 클릭하십시오 레이아웃 편집기에서 레이아웃을 열면됩니다 화면에서 볼 수 있듯이, 나는 꽤 많이 가지고있다 내 오른쪽 여행 카드에 필요한 모든 권리가있는 구성 요소, ImageView, 몇 개의 태그보기, 그러나 그들은 분명히 올바른 제약 조건을 가지고 있지 않습니다

그래서 모든 제약 조건을 삭제하고, 툴바에서 해당 버튼을 클릭합니다 그 작업이 끝나면, 나는 재구성 만 할 것입니다 모든 제약 한 가지 문제는 우리가 꽤 많은 구성 요소를 가지고 있다는 것입니다 작은 영역에서 서로 겹치기

그것은 약간 어수선 할 수 있습니다 그리고 우리는이 상황에서, 건물 제약 조건은 약간 어려울 수 있습니다 제약 조건을 드래그하는 것이 때로는 어려울 수 있습니다 올바른 대상, 올바른 구성 요소, 특히 구성 요소가 겹치는 경우 이제 우리가 할 수있는 일은 제약을 원하는 곳으로 직접 드래그합니다 연결하려는 구성 요소에서, 그런 다음 팝업 메뉴가 열리고 어떤 유형인지 묻습니다 설정할 제약 조건을 선택하십시오

정말 흥미로워 지네 제약 조건을 다음 위치로 드래그합니다 겹치는 구성 요소가 있습니다 그 상황에서, 우리는 여러 유형의 제약 조건을 사용할 수 있지만 겹치는 구성 요소를 선택하십시오 그 제약 조건을 첨부하고 싶습니다

그리고 그것은 그것을 훨씬 쉽게 만들어야합니다 경우에 제약 조건 레이아웃을 작성하는 방법 중첩되고 작은 구성 요소가있는 곳 도움이 될 수있는 마지막 방법 제약 조건을 효율적으로 만들 수 있습니다 구성 요소를 사용 중입니다 구성 요소에서 여러 구성 요소를 선택하는 경우 – 여기에서는 두 가지 텍스트보기를 선택했습니다

다시 컨텍스트 메뉴에서 마우스 오른쪽 버튼을 클릭하고 선택합니다 사용할 수있는 제약 조건 중 하나 당신은 하나의 제약 조건을 만들 수 있습니다 선택한 여러 구성 요소에 적용됩니다 그래서 여기에서 두 가지 제약 조건을 만듭니다 이 두 텍스트보기에서 동시에 우리가 모든 제약 조건을 다 만들면, 우리의 견해를 조금이라도 사용자 정의 할 때입니다

이를 위해 우리는 Attributes Panel을 사용할 것입니다 레이아웃 편집기의 오른쪽에 있습니다 우리는 Attributes 패널을 재 설계했습니다 Declared Attributes라는 맨 위에 새 섹션을 표시합니다 이 섹션에서는 모든 속성 구체적으로 설정된 선택한보기에 대한 그 견해에 대해서

바로 거기에서 모든 속성을 편집 할 수 있습니다 이미 설정된 해당 뷰에 새 속성을 설정하려면, 더하기 버튼을 클릭하기 만하면됩니다 해당 속성의 이름과 값을 추가하십시오 Attributes 패널에서 할 수있는 또 다른 일 Constraint Widget을 사용하여 여백을 설정합니다 귀하의 의견에 보고 싶어했을거야

숫자와 같은 실제 값만 설정할 수있을뿐만 아니라 증거금의 가치 ​​- 정의 된 맞춤 측정 기준을 설정할 수도 있습니다 프로젝트에서 그것이 우리가 @ dot dot dot option을 추가 한 이유입니다 드롭 다운의 맨 아래에 버튼을 클릭하면 자원 선택 도구가 열리고, 이미 가지고있는 특성 항목을 선택할 수 있습니다 프로젝트에서 정의하거나 바로 거기에 새로운 차원이 있습니다 일어날 필요가있는 마지막 한 가지 – 그 레이아웃을 보면서 – ImageView가 샘플 데이터로 채워지는 것을 볼 수 있습니다

하지만 단지 기본 샘플 데이터 일뿐입니다 Android Studio에서 제공됩니다 그래서 그것은 실제로 그 종류를 대표하지 않습니다 RecyclerView가 런타임에 수신 할 데이터의 양입니다 그래서 당신이 할 수있는 것은 당신 자신의 샘플 데이터를 설정하는 것입니다

그 ImageView에 cities라는 이미지를 cities라는 디렉토리에 추가했습니다 우리 프로젝트의 샘플 데이터 폴더에 있습니다 샘플 데이터 그림에 나타나는지 확인할 수 있습니다 샘플 데이터를 설정할 수 있습니다

우리의 원래 레이아웃으로 돌아가서, 우리는 이제 그것이 많이 보임을 볼 수 있습니다 당신이 가진 원래의 디자인과 더 비슷합니다 거기에서, 당신은 정말로 디자인이 제대로 구현되었으며 실제 데이터를 수신 할 때 작동합니다 장치에서 실행 중입니다 이제 우리는 첫 번째 제약 조건의 구축을 마쳤습니다

첫 번째 화면에서 계속 진행하고 싶습니다 우리의 응용 프로그램에서 우리의 다음 화면을 구축합니다 레이아웃 파일을 만드는 것만으로 돌아 가기보다는, 레이아웃 편집기에서 빌드하고, 우리는 네비게이션을 생각하고 바로 거기에서 시작하고 싶다 우리의 애플 리케이션의 흐름, 그리고 어떻게 첫 번째 화면이 전환됩니다 두 번째 화면으로 그렇게하기 위해 우리는 네비게이션을 살펴볼 것입니다 편집자

탐색 편집기는 시각적 도구입니다 이를 통해 Navigation Architecture를보다 쉽게 ​​사용할 수 있습니다 JetPack 라이브러리의 구성 요소 탐색 아키텍처 구성 요소의 방식 작품은 네비게이션 호스트 단편을 사용하는 것에 의존합니다 응용 프로그램의 기본 레이아웃

여기에 우리의 활동 주 레이아웃 파일, 우리는 Layout Editor에서 드래그 할 것입니다 NavHostFragment 팔레트 – 기본적으로 거기에 있습니다 그것을 디자인 표면 위로 끌어 올 것입니다 그렇게 할 때, 그것은 당신에게 선택을 요구할 것입니다 해당 NavHostFragment와 관련된 탐색 그래프 아직 탐색 그래프를 만들지 않은 경우, 그 대화 상자에서 바로 할 수 있습니다

우리가하는 일이야 이것이 레이아웃이 어떻게 생겼는지입니다 그것은 비어 있습니다 이 NavHostFragment가 있습니다 네비게이션 아키텍처 구성 요소 그것을 채울 것입니다 당신이로드 할 여러 단편들

그러나 두 번 클릭하면 탐색 편집기가 열립니다 이것은 네비게이션 에디터가 비어있을 때 보이는 것과 같습니다 우리가하고 싶은 첫 번째 일 첫 번째 화면을 시작 목적지로 추가합니다 우리의 애플 리케이션을 위해 대상 추가 메뉴에서 앱에있는 모든 레이아웃이 미리 선택되었습니다

그래서 우리를 위해, 우린 그 조각을 환영합니다 이전에 작업해온 레이아웃입니다 바로 거기에 놓으십시오 다음으로, 우리는 두 번째 화면을 추가하기를 원한다 그러나 이미 레이아웃을 만들지 않았기 때문에, 우리는 단순히 새로운 목적지를 만들 수 있습니다

추가 대상 메뉴에서 그렇게하면 생성의 가능성을 얻을 수 있습니다 새로운 프래그먼트 클래스와 그 관련 레이아웃, 이것이 레이아웃이 될 것입니다 두 번째 화면으로 사용됩니다 두 화면이 Navigation Editor에 있으면, 그들을 연결하는 시간이 온다

그것은 행동으로 할 수 있습니다 화면에 표시된대로 작업을 간단하게 만들 수 있습니다 또한 Attributes 패널에서 직접 탐색 편집기의 해당 동작에 대한 속성 중 일부를 설정하고, 애니메이션이 재생되는 것과 같습니다 그 동작을 통해 전환 할 때, 또는 뒤로 누르면 행동으로 할 수있는 또 다른 매우 흥미로운 일 한 화면에서 다음 화면으로 유형 안전 데이터를 전달합니다

그렇게하고 싶다면 다음과 같이 할 수 있습니다 수신 대상에 – 인수 섹션에서 더하기 단추를 클릭하십시오 속성 패널의 단순히 대화 상자를 열면 인수의 이름을 지정하십시오 인수의 유형 그것은 미리 정의 된 유형일 수 있습니다

또는 프로젝트에서 정의한 유형일 수 있습니다 당신이 원하는 어떤 물건이라도 물론, 네비게이션 그래프 만들기 앱 탐색을 완벽하게 지정하기에는 충분하지 않습니다 또한 약간의 코드를 작성해야합니다 그러나 당신이 볼 수있는 것처럼 그것은 꽤 간단합니다

여기, 나는 RecyclerView의 항목에 불과하다 OnClickListener의 경우 전환하려고합니다 그 행동을 끝내라 그래서 내가하는 일은 액션 객체를 만드는 것입니다 내비게이션에서 지정한 인수를 전달합니다

편집자 일단 행동을 취하면 나는 간단하게 탐색 라이브러리의 navigate 메소드 호출 실제로 전환을 수행합니다 그것이 실제로 정의한 전환을 수행하는 데 필요한 전부입니다 탐색 편집기에서 할 수있는 마지막 사항 나머지 네비게이션 흐름을 채우기 위해 자리 표시자를 사용하며, 그 순간에 귀찮게하고 싶지 않으면 새로운 조각 나중에, 그렇게 할 준비가되면, 당신은 단순히 돌아가서 레이아웃으로 대체 할 수 있습니다

지금은 실제로 빌드 할 때가되었다고 생각합니다 우리의 두 번째 레이아웃 보시다시피, 많은 이미지가 포함 된 레이아웃입니다 많은 자원이 필요합니다 우리는 어떻게 자원을 볼 것인가? 관리자는 우리가 그것을 구축하는 데 도움이 될 수 있습니다

VADIM CAEN : 나는 갭을 채우기 전에 이야기하고있었습니다 Android Studio에 존재했던 하나의 차이 리소스를 관리하는 방법이었습니다 문제가 무엇인지 살펴 보겠습니다 Android Studio 리소스 디렉토리 구조 프레임 워크를 위해 만들어진 것이지 실제로는 아닙니다 사용자에게 리소스를 얻을 때 디자이너에게서 보면 이렇게 보일 수도 있습니다

폴더가 많을 수도 있습니다 죄송합니다 먼저 Android Studio에서 다른 문제가 발생했습니다 전체 축소판보기가 없습니다 특정 Android보기

그래서 레이아웃, 벡터 잔해 또는 모양 – 미리 볼 수있는 유일한 방법은 하나의 레이아웃을 두 번 클릭하거나 하나의 파일에 두 번 클릭하는 것입니다 미리보기에서 확인하십시오 이 문제를 해결하기 위해 Android Studio에 도입했습니다 34 Resource Manager는 다음과 같은 새로운 도구입니다

리소스를 가져오고, 사용하고, 탐색 할 수 있도록 도와줍니다 보다 그래픽적인 방식으로 그것을 열려면 간단히 Resource Manager 버튼을 클릭하면됩니다 Android Studio의 왼쪽에있는 프로젝트 버튼 아래, 이 중립 창을 열 것입니다 한번 더 그래서 우리 문제로 되돌아갑니다

왼쪽에는 프로젝트 구조가 있습니다 오른쪽에는 디자이너가 우리에게 준 것을 가지고 있습니다 우리는 파일에서 다른 프로그램을 볼 수 있습니다 디자이너가 우리에게 준 것 어쩌면 그들은 자신이 좋아하는 디자인 소프트웨어를 사용했을 것입니다

기본 내보내기 옵션을 사용했습니다 폴더에 드로어 블 접두어가 누락되었을 수 있습니다 이름 또는 접미사 @ 2x와 함께 웹 형식을 사용했을 수도 있습니다 그리고 당신이해야 할 일은 @ 2x 접미사를 제거하는 것입니다

그런 다음 하나씩 하나씩 파일을 붙여 넣습니다 다른 문제는 폴더가 누락되었을 수 있으며, 그리고 당신은 문서로 돌아 가야 할 것입니다 이 특정 폴더에 대한 한정자가 무엇인지 기억하고, 그리고 당신은 올바른 순서로 그들을 넣어야합니다 Resource Manager와는 어떻게 작동합니까? 이제 전체 묶음을 끌어다 놓기 만하면됩니다 당신이 Resource Manager에 가져온 파일들, 자동으로 가져오고 이름별로 그룹화됩니다

여기에서 볼 수 있듯이 우리의 자원은 이름별로 그룹화되어 있습니다 올바른 한정어가 적용되었습니다 그래서 방금 무슨 일이 있었던거야? [박수 갈채] 고맙습니다 한정어를 식별하면 여기에는 웹 또는 Android가 파일 경로에있을 수 있습니다 우리는 단순히 해당 안드로이드 폴더를 만들 것입니다, 파일에있을 수있는 접미어를 제거하고, 프로젝트에 복사하십시오

물론 한정자를 추가하려는 경우 (예 : 무작위로 지방, 그리고 프랑스어와 같은 임의의 언어, 프랑스와 같은 지역에서는 간단하게 여기에서 할 수 있습니다 그리고 당신은 명령을 기억할 필요가 없습니다 수동으로 폴더를 만들면 자동으로 생성됩니다 올바른 한정어로 이 시점에서 원하는 경우 파일의 이름을 바꿀 수도 있습니다 이제 우리의 자원은 Resource Manager에서 그룹화됩니다

한 번에 모두 볼 수 있습니다 따라서 기본적으로 하나의 리소스 버전 만 표시됩니다 하지만 리소스를 두 번 클릭하면 당신은 모든 다른 버전을 볼 수 있습니다 다른 한정자가 적용되면 분석 할 파일 유형 어떤 파일이 응용 프로그램에서 가장 많은 공간을 차지했는지 자, 이것은 제가 정말로 흥분되는 특징입니다

이제 SVG를 드래그 앤 드롭 할 수 있습니다 VectorDrawable로 변환됩니다 [CROWD CHEERING] 고맙습니다 그래서 여기에 파일 선택기가 열려 있습니다 나는 아무것도 선택할 필요가 없다

간단히 클릭하고 열 수 있으며 모든 SVG를 열 수 있습니다 가져오고 변환됩니다 또 다른 멋진 기능은 모든 레이아웃을 미리 보는 것입니다 이름으로 레이아웃을 인식하는 것이 어려울 수도 있습니다 따라서 레이아웃 탭에서 리소스 관리자를 열면, 모든 레이아웃을 볼 수 있습니다

당신이 찾고있는 것을 찾으려면 전에 말했듯이 도구 체인이 있습니다 이 전체 도구 체인을 함께 통합하려고합니다 우리가 한 것은 통합 된 것입니다 [INAUDIBLE] 레이아웃 편집기로

예를 들어 여기에 포함시키고 자하는 레이아웃이 있습니다 그래서 상단 부분 이 레이아웃을 레이아웃 편집기로 드래그 앤 드롭 만하면됩니다 [INAUDIBLE]을 만듭니다 Drawable에도 똑같이 적용됩니다

Drawable을 드래그 앤 드롭하면 ImageView가 생성됩니다 이 견해의 끝까지 빨리 감습니다 이전 레이아웃에서 볼 수 있습니다 우리 툴바는 올바른 색상이 아닙니다 우리가 할 수있는 것은 컬러 탭을 열고, 우리 프로젝트에 정의 된 모든 색상을 볼 수 있습니다

그 중 하나를 두 번 클릭하기 만하면됩니다 파일을 열어서 커서를 옮깁니다 여기서 색상이 정의됩니다 그런 다음 새로운 색상 선택기를 사용할 수 있습니다 시각적으로 색을 선택하십시오

색상 선택기는 RGB 및 HSB에서 작동하며, HSB를 선택한 디자이너와 함께 일한다면 값을 사용하거나 자료를 사용할 수 있습니다 이미있는 팔레트 이제 두 개의 레이아웃이 준비되었습니다 앱에서 실행하고 싶습니다 Ashley와 Joe가 우리에게 말하기를 다시 환영 할 것입니다

새로운 레이아웃을 검사하는 방법 [박수 갈채] JOE BAKER-MALONE : 감사합니다, 바딤 이제 개발주기의 다음 단계로 넘어갑니다 우리가 실제로 앱을 실행하게되면, 실제 데이터와 함께 작동하는 방법을보고 조정할 수 있습니다 우리가해야 할 수도 있습니다

이제 오늘, 레이아웃이 어떻게 작동하는지보고 싶다면 런타임에는 Layout Inspector 도구가 있습니다 Android Studio에서 레이아웃 속성은 스냅 샷을 제공합니다 한 화면의 전체보기 계층 구조, 및 속성에 대한 일부 정보 각보기에서 설정됩니다 하지만 지금은 많은 한계가 있습니다 이것은 부분적으로 안드로이드 프레임 워크의 데이터에 기인합니다 표시 할 수 있도록 Studio에 제공됩니다

이제 Android Q에서는 프레임 워크에 Studio에 대한 여러 가지 새로운 API 추가 더 많은 뷰 및 레이아웃 디버깅을 노출하는 데 사용 정보 Ashley는 새 API에 대해 곧 이야기 할 것입니다 프레임 워크 추가가 우리에게 충분한 지 확인하려면 우리가 원하는 정보를 사용자에게 보여주고, Android Studio 팀의 우리 부부 프로젝트 마블에서 약간의 시간을 보냈습니다 새 API를 채택하고 우리가 할 수있는 것을 확인하십시오 우리는 완전히 새로운 Layout Inspector 작업을 시작했습니다

내가 너에게 지금 보여줄 것은 일의 몰래 절정이다 우리는 지금까지 해왔습니다 자, 이것은 초기 작업입니다 최신 미리보기 빌드에는 아직 포함되어 있지 않습니다 그러나 차드가 어제 개발자 기조 연설에서 말했듯이, 우리는 미리보기를 좋아합니다

우리는 개발자 의견을 환영합니다 그래서, 우리는 당신의 손에 그것을 밖으로 가져갈 것입니다 최대한 빨리 자, 어떻게 작동하는지 봅시다 Google 여행 앱부터 시작하겠습니다

우리가 해왔 던 이제 에뮬레이터에서 실행 중임을 알 수 있습니다 우리는 물건을 끌어 올려서 사용자로부터 실제 데이터를 실행하고, 디자인 타임에 사용한 샘플 데이터가 아닙니다 여기서 아래로 스크롤하면 볼 수 있습니다 실제 데이터의 일부 여행 설명 우리가 샘플 데이터에서 가지고있는 것보다 상당히 길다 텍스트가 정렬되는 지점까지 우리가 의도하지 않은 방식으로 이미지를 지배했다

새로운 레이아웃 검사기에서 이것을 살펴 보겠습니다 새로운 레이아웃 검사기가 우리에게 제공하는 것을 볼 수 있습니다 레이아웃 검사기에서 현재 가지고있는 것과 유사한보기입니다 문제의 텍스트보기를 선택하면 여기, 그리고 오른쪽에있는 Attributes Panel을보고, 우리는 몇 가지 차이점이 있음을 알 수 있습니다 현재 레이아웃 검사기에서 가지고있는 것입니다

우선, 실제 속성 이름이 있습니다 이전에는 getter 메소드 모음이 있었지만 그렇지 않을 수도 있습니다 잘 실제 속성 이렇게하면지도를 훨씬 쉽게 찾을 수 있습니다 여기서 본 것에서부터 정의한 것에 이르기까지 자신 만의 레이아웃과 스타일로

두 번째로, 우리는 멋지게 형식화 된 속성 값 다양한 가치 유형에 대해 우리는 전에 그것을 항상 얻을 수는 없었다 예를 들어 ID, 열거 형을 볼 수 있습니다 가치, 색깔, 등등 세 번째로, 우리는 지금 몇 가지 정보를 가지고있다 그 속성 값이 설정되는 곳

따라서 우리는이 선언 된 속성 섹션을 볼 수 있습니다 여기, 우리가 Layout Editor에서 가지고있는 것과 비슷합니다 직접 설정된 속성의 경우 선택한보기에서 이제 텍스트 크기와 관련된 속성을 살펴 보겠습니다 이 옵션을 선택하면 기본 탐색 기능을 사용할 수 있습니다 여기에서 직접 키 스트로크를 선언하는 방법 해당 값이 설정되는 레이아웃 xml로 이동합니다

조금 더 작게 변경하십시오 개발자 기조 연설에서 들었던 것처럼, Android Studio 35 미리보기에서 이 새로운 변경 기능을 적용하십시오 이것 이후에 바로 그 부분에 대해 더 많은 것을들을 수 있습니다 Android 개발자 도구에서 새로 워진 이야기

하지만 지금은 에뮬레이터의 변경 사항을 확인하는 데 사용하겠습니다 우리의 애플 리케이션을 재배치 할 필요없이 실제로 새로운 레이아웃에서 업데이트가 즉시 표시됩니다 경감 님 Layout Inspector가 무엇을 미러링하고 있기 때문입니다

기기 라이브에서 발생합니다 우리가 여기서 다시 스크롤한다면, 레이아웃 검사기가 오른쪽으로 스크롤되는 것을 볼 수 있습니다 게다가 [박수 갈채] 예 다른 시나리오를 살펴 보겠습니다

앱의 어두운 테마를 구현하고 싶다고 가정 해 보겠습니다 여기서 우리는 밝은 배경색을 가지고 있음을 알 수 있습니다 배경색이 어디인지 알아 보겠습니다 에서 온다 우리가 여기에있는 단편 xml을 보면, 우리는 거기에 직접 설정되어 있지 않습니다

Layout Inspector를 살펴 보겠습니다 여기서 배경을 선택하면, 정말 잘 볼 수 있다면 우리는 배경색이 없다

이보기에서 직접 설정하십시오 왜 그럴까? 글쎄, 우리는 여기에서 가장 많은보기를 선택했습니다 배경색을 어느 정도 낮추어 놓을 수도 있습니다 뷰 계층 구조에서 그러나 어떤 시각이 설정되고 있습니까? 글쎄, 새로운 레이아웃 검사기가 우리에게 제공합니다

쉽게 찾을 수있는 방법 [크라우드 반응] [웃음] 3D보기에서는 어느 것이 쉽게 볼 수 있습니다 여기에서 무엇을 그리는가? 이제이보기를 선택하면 배경이 색상이 실제로 설정되어 있습니다 그러나 어떤 파일에 설정되어 있습니까? 이것은 선언 된 속성 섹션의 맨 위에 있지 않습니다 그래서 우리는 그것이이 견해에 직접적으로 설정되어 있지 않다는 것을 알고 있습니다

그러나 다시 한번 우리가 Attributes에서 속성을 선택하면 Panel, 거기에서 직접 탐색 할 수 있습니다 그것이 설정되는 곳으로 이 경우 스타일로 설정됩니다 그리고 우리는 그 스타일을 직접 탐색 할 수 있습니다 보기에 명시 적으로 참조되지 않는 경우에도 마찬가지입니다

우리가 본 3D 표현은 우리는 다른 방식으로 사물을 시각화하고, 여기서 유용한 정보를 계속 찾고 있습니다 예를 들어 초점을 맞추는 것이 유용 할 수 있습니다 한보기 및 그 자녀들에게 또는 무엇을 기반으로보기를 함께 그룹화하는 것이 유용 할 수 있습니다 그들이 정의 된 레이아웃 파일

이 화면의 예는 상단에서 볼 수 있습니다 우리는 RecyclerView 항목을 가지고 조각을 만든 다음, 활동 그리고 그 뒤에, 다양한 견해들 프레임 워크에 의해 정의됩니다 가벼운 새로운 레이아웃 검사기를 위해 더 많은 계획을 세웠습니다 저는 우리가 무엇을 생각해 낼 수 있는지에 대해 매우 기쁩니다

이제는 필요한 프레임 워크 변경 사항에 대해 이야기합니다 이것을 가능하게하려면 여기 애쉴리가 있습니다 애쉴리 로즈 : 고마워, 조 [박수 갈채] Android Q의 경우 세 가지 새로운 API가 추가되었습니다 이러한 새로운 검사 기능을 사용할 수 있습니다

우리는 모든 도면 명령을 수행 할 수 있습니다 화면에 프레임을 만들었습니다 그것을 직렬화하여 Studio로 다시 보내십시오 그래서 그것들을 재생할 수 있고 멋진 3D보기를 만들 수 있습니다 우리는 얼마나 길게 빨랐 는가? 뷰 계층 구조에서 뷰의 특성을 가져오고, 추가 메타 데이터를 추가 할 수 있습니다

그것을보다 정확하게 만드는 것입니다 그리고 우리는 리소스 프레임 워크에 몇 가지 새로운 API를 추가했습니다 속성 값의 출처를 보자 의사 결정에 대한 더 많은 통찰력 그 과정은 다음과 같은 경우에 적용되었다 해당 속성 값에 도달합니다

그럼 Skia Picture에 대해 이야기 해 봅시다 Skia는 UI 툴킷의 기초가되는 2D 그래픽 라이브러리입니다 이것은 실제로 슬라이드에 맞도록 단순화 된보기입니다 하지만 그것은 그리기 명령의 목록입니다 더 일찍부터 우리 여행 카드 중의 1 개를 형성하는 것에 들어간다

우리가 그것을 보았다면 그림자, 둥근 사각형, 이미지, 텍스트 – 그 모든 것들을 자산과 함께 그것을 렌더링하는데 필요한 이미지 데이터, 폰트 데이터 등을 포함한다 우리는 Skia에서 이것을 기본적으로 얻습니다 매우 빠릅니다 실시간 미리보기를 수행 할 수 있기 때문에 이걸 몇 초에 한 번하십시오 그것은 일반적으로 매우 작습니다

그러나이 문제는 우리가 스위치를 확대하려면 여기를 클릭하십시오 그것은 텍스트, 둥근 사각형, 그리고 서클 슬라이더 스위치에 대한 약간의 이미지 그것들이 어떤 관점에서 왔는지는 모른다 그들은 명령을 내리는 것입니다 그리기 명령을 그룹화하는 방법이 필요했습니다

그들이 어떤 시각에서 왔는지에 따라 우리는 렌더링 노트 API를 보았습니다 두보기의 기초가되는 조직 트리입니다 그리고 drawables– 우리는 각각의 렌더링 노트에 고유 한 ID를 추가했습니다 그런 다음이 고유 한 ID를보기에 노출 시켰습니다

Skia 그림 자체에 주석을 달았습니다 여기서 각 렌더 노드는 그리기를 시작하고 멈 춥니 다 스튜디오 측에서 보기가 시작된 위치와 중단 된 위치를 확인하고 연결할 수 있습니다 이 3 개의 그리기 명령은 다시 스위치보기로 돌아갑니다 또한 우리는 시작과 중지가 있기 때문에, 우리는 멋진 중첩 된 프레임 워크를 가지고 있습니다

HTML – 우리가 볼 수있는 모든 도면 명령이 다시 있습니다 단순화 된이 카드보기를 만드는 데 들어갔다 같이 [? 오랫동안도?] 그들이 시작하고 멈추는 전망, 우리는 중첩을 해봅시다 부동산 검사를 어떻게 수정하는지 조금 이야기 해 봅시다 Joe의 관점에서 일찍 – 모든 것이 게터 이름이나 메소드 이름이었습니다

그건 우리가 반사를 사용했기 때문이었습니다 런타임시 뷰 인스턴스 내부의 속성 반사는 세계에서 가장 빠른 것이 아닙니다 특히 휴대 기기에서 매우 복잡한 앱의 경우 전체보기를 렌더링하는 데 최대 몇 초가 걸릴 수 있습니다 계층

그래서 우리는 다음과 같은 접근 방식을 들여다 보았습니다 모든 것을 직렬화하는 메서드가 있습니다 그것은 조금 부서지기 시작합니다 보기에 새 속성을 추가하면 업데이트되지 않습니다 우리는 주석 처리기에 추가했습니다

그것은 우리가 반사를 유연하게 유지할 수있게 해줍니다 우리를 제공했다 특수 효과를 추가하기 만하면됩니다 새 게터를 추가하면됩니다 사용자 정의에 대해 어떻게 보일지 살펴 보겠습니다

이는 사용자가 누구에게나 관련이 있기 때문에 볼 수 있습니다 곧 라이브러리보기를 빌드하십시오 우리는 컬러보기를했습니다 속성은 색이며 주석을 달았습니다 InspectableProperty

주석 처리기가 보이면 그것으로 우리에게 조금 더 많은 맥락이 생깁니다 우리가 이전에 얻은 것보다 훨씬 낫습니다 그래서 우리는 Kotlin에 있고 @ColorInt 주석을 볼 수 있습니다 정수형뿐만 아니라 우리는이 정수에 색을 채웠다는 것을 압니다 그리고 그것은 단지 수치가 아닙니다

재산의 이름이 있습니다 우리는 속성 ID에 대한 추론을하는 데 사용할 수 있습니다 그것을 부르는 것 물론 우리는 주석에 대한 속성을 사용하여 추론하기 그 자체 그래서이 코드 생성은 어떻게 생겼습니까? 이 객체는 이 견해와 나란히 앉을 것이다

그 중 하나가 어떻게 생겼는지 살펴 보겠습니다 이것은 검사 동반자입니다 그것은 Q를위한 새로운 API입니다 두 가지 목적이 있습니다 하나는 클래스가 주어진 경우의 목록을 정의합니다

여기에 그 클래스에 정의 된 속성이 있습니다 이 경우 색상을 정의했습니다 지도 색상에 대한 호출을 살펴보면, 색깔이기 때문에 거기에 유형이 있습니다 우리는 속성 이름을 가지고 있고 유추했습니다 ID의 속성 R

attr 이것은 또한 우리가 – 추론 된 속성 ID가없는 경우, 또는 당신이 하나를 공급했다면 우리는 그것을 거기에 넣을 것입니다 내가보기에 Studio를 가르치면, 여기에 내가 가지고있는 속성이 있습니다 여기에 그들의 속성 ID가 무엇인지, 이것은 우리가 그 부분을 가능하게합니다 코드 완성 기능으로 이동하십시오

다음 단계는 실제로 우리가 보기의 인스턴스가 있으면 속성을 읽고 싶습니다 다시 말하지만, 우리의 견해가 Kotlin에서 정의되고 자바를 사용하고 있기 때문에 – 이것이 생성 된 코드이기 때문에 – 우리는 viewgetColor를 호출한다 직접 호출한다 getter에게 반사가 필요 없습니다

매우 빠릅니다 이를 통해 뷰 계층의 실시간 업데이트를 수행 할 수 있습니다 Studio에서는 우리가 가지고 있지 않기 때문에 우리가 전에했던 모든 추가적인 오버 헤드 우리를 얻는 모든 것이 현재의 가치에 달려 있습니다 우리가 말할 수있는 것은 여기에 우리가 가지고있는이 사랑스러운 푸른 색 텍스트 색입니다

우리는 그것이 무엇인지에 관계없이 말할 수 있습니다 그것이 런타임에 설정되었는지 여부 viewsetColor를 호출했을 수도 있습니다 또는 자원에 설정되어있는 경우

그러나 대부분의 속성 값은 자원에서 설정되며, 그래서 우리는 그 사건을 돕고 싶었습니다 우리는이 경우에, 그것은 위젯에 정의되어 있습니다 리소스에 API를 추가하여, 나는이 가치를 얻었다 그게 어디서 왔는지 말해줘 Google은 해당 데이터를 추적하여 전체 리소스를 통해 저장합니다

뼈대 또한, 우리는 통찰력을 얻고 싶었습니다 스타일이 어떻게 영향을 미치는지 그래서 자원 프레임 워크가 해결 될 때 속성 값 – 어떤 스타일을 적용할지 결정해야합니다 의사 결정 트리를 가져 와서 API를 추가하여이를 나타냅니다

근본적으로 고려 된 스타일 목록입니다 그러나 결국 사용되거나 사용되지 않을 수 있습니다 해당 속성 값을 해석하는 동안 이 모든 문제는 일시적인 현상입니다 왜냐하면보기, 일단 팽창되면, 그들은 그들의 관계를 잊는다 리소스

일단 그들이 건설되면, 그들은 그들이 어디에서 온 것인지 기억하지 못한다 개발자 옵션을 추가했습니다 속성 ID의 맵과, 그들이 왔던 곳, 스타일 해상도는보기의 테마에서 스택됩니다 그래서 스튜디오 – 준비가되었거나 관심이있을 때 재산으로 더 자세히 조사하고 싶어요 돌아와

보기로하고,보기에게 묻는다, 헤이, 어디에서 당신의 속성 값이 왔는지, 그들의 스타일은 무엇입니까? Q가 가진 모든 것을 꽤 많이 감쌌다 바딤과 제롬을 환영하고 싶습니다 우리를 감싸는 무대에 [박수 갈채] VADIM CAEN : 전체 툴 체인에 대해 들었습니다

그리고 집에 돌아갈 때 그것을 사용하기를 바랍니다 레이아웃 편집기로 레이아웃을 작성하고, 우리가 추가 한 새로운 기능 네비게이션 편집기로 네비게이션 만들기, 자원 관리자로 자원 관리, 새로운 레이아웃 검사기로 검사를 수행하십시오 올해 I / O에는 Android Studio 협상이 가득합니다 바로 뒤에 – 원형 극장에서 – 당신은 안드로이드 개발의 새로운 기능을 볼 수 있습니다

Tor 및 [? Ja ?] 그렇다면 당신은 2 단계의 Android 빌드 시스템의 새로운 기능 그것은 다른 쪽 위에있다 그것은 오늘 오후에 시작한다 여기에 빨간 점이 거의 없습니다 Android Studio 팁 및 트릭 제공 선별 된 엔지니어 및 프로젝트 매니저에 의해, 2 단계

마지막으로 내일, ConstraintLayout의 새로운 기능 Nicolas와 John의 모션 레이아웃 우리는 여기서 밖에 질문을 할 것입니다 와 주셔서 대단히 감사합니다 내년에 봐 [음악 재생]

How To Play Android Games On PC/Laptop | Best Android Emulator | Play Pubg In 1 GB Ram

안녕하세요 시청자 나는 네가 가장 좋아하는 사람이고 최악의 네가있는 사람이야 조금이라도

제발 오늘 나는 너에게 그걸 말하려고한다 아이들과 노인들이 기다리고있었습니다 모든 아이들을 위해 , 모든 노인 젊은이가 수색 중이 었어 인터넷 하지만 친구, 그 일이 도착했습니다

자, 비디오를 시작하자 예 시청자, 그런 것에 대해 이야기하겠습니다 클랜 오브 클랜 (Clash of Clans) pubg, 지하철 surfur 및 원하는 모든 것 android (모바일) 관련 항목 이제 당신을 위해 모바일을 사는데 방해받지 않을 것입니다 하지만 컴퓨터 (PC) / 랩톱 컴퓨터를 설치할 수 있습니다 어떤 전화도 걸 수 없습니다 (두려워해서는 안됩니다)

자신을 즐기고 아이들도 즐길 수있게하십시오 (있는 경우) 그 일에 대해 말해 줄 수 있어요 이 것은 "BLUESTACKS"로 알려져 있습니다 "bilustacks"가 아닌 "bluestacks"를 작성하십시오 영어로 작성하십시오 (농담

하하하하하) Google은 미국인입니다 Ok 형제 나의 좋은 파키스탄 인디언 브라더스

클릭하자 나는 그것을 클릭했다 당신 앞에서 본 것은 블루 슬랙스입니다 정말 농담이야 미안 해요 (구독 취소하지 마시고

'' ') 일족, 주술 및 많은 게임의 전투를 볼 수 있습니다

다운로드하십시오 이미 다운로드했기 때문에 다운로드하지 않을 것입니다 지금 가입하십시오 제발 비용을 무료로하십시오 나는이 비디오를 3 번 ​​좋아하고, 싫어요 버튼을 60 번 누르는 것보다 싫어하면 내 비디오를 좋아했습니다

한 명만 구독하면 어떻게 될지 아무것도 그렇게 해주십시오

구독하기 구독하기 SUBSCRIBE ————————————————- ——-> SUBSCRIBE ————————————————- ——-> SUBSCRIBE ————————————————- ——->