GAPID Graphics Debugger (Android Game Developer Summit 2018)

벤 클레이튼 : 안녕하세요, 저는 벤입니다 나는 잘 생겼어

이것은 파스칼입니다 파스칼은 또한 그것에 대해 거의 작업하고 있습니다 내가 가진 한 그래서이 슬라이드는 아마 지금은 조금 무의미합니다 GAPID, 오픈 소스, 개발 된 GL ES 및 Vulkan을위한 열린, 추적 및 재생 도구 현재 디버거입니다

많은 그래픽을 진단하고 수정하는 데 사용할 수 있습니다 게임 개발시 문제 우리는 현장에서 사용 해왔고 아주 바보 같은 것을 발견했습니다 일부 게임 엔진들 그렇지 않으면 완전히 숨겨 질 것입니다 개발자로부터

그것은 크로스 플랫폼입니다 Windows, Mac Linux를 실행하며 디버깅 할 수있는 Android 애플리케이션을 추적하는 데 사용할 수 있습니다 Vulkan에게는 실제로 데스크톱도 지원합니다 Windows에서 Vulkan 응용 프로그램을 추적 할 수 있습니다 또는 Linux, 분명히 Mac이 아닙니다

그리고 네, 지금 가서 다운로드 할 수 있습니다 GitHub에 있습니다 따라서 githubcom/google/gapid, 그런 다음 릴리스를 살펴볼 수 있습니다 그래서 그것에 대해 이야기하는 대신에, 결국 그래픽입니다

뿐만 아니라 몇 가지 물건을 보여줍니다 그래서 파스칼에게 가져 가겠습니다 파스칼 뮐러 : 그래, 우리가 처음 시작할 때, 이 시작 대화 상자가 나타납니다 캡처와 같은 가장 일반적인 작업을 빠르게 수행 할 수 있습니다 및 추적

마우스를 볼 수 있는지 보겠습니다 캡처, 추적 대화 상자 추적 할 API를 선택합니다 그리고 GL을 추적합니다 Android 기기를 선택할 수 있습니다

우리는 USB 포트가 부족하기 때문에, 우리는 실제로 추적을하지 않을 것입니다 그것은 또한 꽤 지루합니다 APK를 선택하십시오 몇 가지 옵션이 있습니다 그리고 파일을 추적 할 수 있습니다

하지만 대신에 이전에 찍은 흔적을 열어 두겠습니다 이것은 Google의 유일한 게임 인 Sushi, Android에서 상단에서 캡처 된 프레임을 볼 수 있습니다 프레임의 일부 프레임 미리보기가 표시됩니다 이것은 대부분 메뉴에 지나지 않습니다 우리가 더 흥미로운 것을 발견 할 수 있는지 봅시다

신청서의 시작 왼쪽 하단에는 모든 명령이 표시됩니다 그리고 프레임 단위로 그룹화하고 콜을 그렸습니다 그리고 애플리케이션에 디버그 마커를 포함시키는 경우 여기에 표시되는 디버그 마커가 표시됩니다

우리는 모든 그룹을 볼 수 있습니다 이것은 나를 위해 작은 것입니다 예를 들어 프레임을 한 단계 씩 이동할 수 있습니다 어떻게 그것이 둘 다 일어나는 지보십시오 여기에 그룹화 된 모든 그리기 호출이 표시됩니다

물론 실제 그리기 호출도 볼 수 있습니다 하지만 전화를 받아야 할 수도 있습니다 하지만 분명히 우리는 또한 GL 드라이버 상태의 나머지 부분 예를 들어, 형상을 볼 수 있습니다 그것은 여기 렌더링되었습니다

이것은 단지 약간의 잎이다 여기에 새우 초밥을 골라 드리겠습니다 좀 더 흥미로운 지오메트리를 볼 수 있습니다 예를 들어, 법선을 디버깅 할 수 있습니다 그들이 좋아 보이지 않는다면

형상을 검사 할 수 있습니다 이 무승부에 하나가있었습니다 또한 모든 텍스처를 검사 할 수 있습니다 그래서 우리는 사용 된 텍스처를 봅니다 그리고 이것은 또한 당신에게 내용을 보여줄 것입니다

렌더링 된 타겟 텍스처가 정말 멋지다 일반적으로 그림자를 렌더링해야합니다 화면에지도 여기에서 검사 만하실 수 있습니다 그리고 우리는 당신과 같은 이미지 도구를 가지고 있습니다

채널을 비활성화 할 수 있으므로 다시 섀도우 맵에 유용합니다 다른 채널에 대해 다른 값이 있습니다 확대하고 검사 할 수 있습니다 물론 셰이더를 보여줍니다 그리고 우리가 할 수있는 일 중 하나 빠른 프로토 타이핑입니다

차광 할 문제가있을 때마다 그늘을 더하고 있습니다 너는 그것을 구할 수있다 응용 프로그램을 다시 빌드해야합니다 그런 다음 패키지를 패키지로 만들어 장치에 배포해야합니다

단지 당신이 그 점 0 또는 무엇을 잊어 버린 것을 알아내는 것입니다 그래서 여기에서 쉐이더를 편집 할 수 있습니다 여기에 내가 전에 구한 것을 붙여 넣으십시오 변경 사항을 푸시합니다 몇 초 후에 변경 사항을 볼 수 있습니다

그 일이 일어나고 우리의 Skybox가 멋진 일몰으로 변하게됩니다 빨간 모든 프레임에서 변경되었음을 알 수 있습니다 우리는 작은 하늘 상자를 멋지고 붉은 색으로 바 꾸었습니다 우리는 GL 드라이버의 전체 상태를 추적했습니다

추적의 어느 시점에서든 검사 할 수 있습니다 문제가 발생하여 원하는 경우 이 시점에서 계획 상태가 무엇인지 알기 위해, 당신은 들어가서 추적을 조사 할 수 있습니다 비행기 상태를 볼 수 있습니다 (예 : 여기 프레임 박스는 여기에 있습니다 설정 한 모든 값을 볼 수 있습니다 오, 이건 달라야합니다

우리는 또한보고 시스템의 시작을 가지고 있습니다 예를 들어, 오류를 추적합니다 감옥 오류 – 감옥 추적 오류가 발생합니다 여기에 예를 들어 설명하겠습니다 명령에 빨리 갈 수 있습니다

그리고이 get integer가 흥미있는 식별자를 가지고 있음을 보아라 존재하지 않습니다 그리고 우리는 다른 것들에 대해서도 계획하고 있습니다 우리가 당신의 흔적에서 발견하고 당신을 줄 수있는 하루를 어떻게 향상시킬 수 있는지에 대한 실용적인 피드백 나는 그것의 대부분을 다루고 있다고 생각합니다

BEN CLAYTON : 기억을 시도 했습니까? 파스칼 뮐러 : 분명히, 어떤 명령에 대해서는, GL 유니폼과 같은 것을 찾아 보자 기억을 보는 것은별로 흥미롭지 않습니다 바늘 그래서 우리는 분명히 기억을 추적합니다 그리고 어떤 기억이 통과되었는지 알 수 있습니다

그리고 [INAUDIBLE]에서 포맷 할 수 있습니다 여기에서 여러분은 그 행렬을 볼 수 있습니다 이 유니폼에 전달되었습니다 BEN CLAYTON : 메모리는 일종의 전동 공구입니다 그러나 선택한 특정 명령에 대해 당신은 그 모든 메모리를 볼 수 있습니다

명령에 의해 읽거나 썼다 그 시점에서 하나씩 벗어나는 오류에 유용합니다 그래, 그게 지금 그 도구에요 다른 몇 가지 그는 GL에 여러 맥락을 넣었습니다

맨 위에있는 바, 기본적으로, 가장 관련성이 높은 문맥을 고려 특정 게임 하지만 많은 엔진의 경우 스핀 업되는 다중 컨텍스트 그래서 그들 사이를 볼 수 있습니다 인터리빙 된 컨텍스트 모드에 대한 옵션으로서, 그래서 문맥이 어떻게되는지 볼 수 있습니다 그들 각각과 이야기하는 것

하지만 그래, 그게 우리가 지금하는 일이야 그런데 질문이 있으면, 방해해서는 안됩니다 파스칼 뮐러 : 예 청중 : 고해상도 CPU 타임 스탬프가 있습니까? 이에? 때로는 코드가 CPU 측에서 무엇을하는지 알고있는 것이 좋습니다 프레임을 만들 때

벤 클레이튼 : 현재, 아니 우리는 타임 스탬프와 같이 여분의 메타 데이터를 넣고 싶었습니다 정보 우리는 그 유용성에 관해서 울타리에 서있다 추적을하면 시간이 왜곡되기 때문입니다

따라서 실시간 정보를 갖는 것은 약간의기만 행위가 될 수 있습니다 그러나 스택 추적 정보 같은 것들 특히 유용 할 것입니다 특정 드로우 콜을 보는 것은 나쁘다 그게 어디서 온거야? 그래 관객 : [INAUDIBLE] BEN CLAYTON : 다시 한번 말하지만, 그들을 우리에게 보내주십시오

그리고 우리는 그들에게 행동 할 것입니다 청중 : 프레임 속도보기에 현재 렌더링이 표시됩니까? 바운드 된 타겟, 또는 백 버퍼가 될까요? 우리가 사용하는 프레임 버퍼는 현재 무엇이 있는지 보여줍니다 그 시점에서 흔적이 많다 BEN CLAYTON : 게시물 효과와 화면에서 벗어나면 모든 것을 디버깅 할 수 있습니다 관객 : 아마도 나는 그것을 놓쳤습니다

GPU 및 Android OS의 요구 사항은 무엇입니까? 지금 지원됩니까? Android 버전은 모든 GPU에서 작동합니까? BEN CLAYTON : 좋습니다, 이론적으로 그렇게 중요하지 않아야합니다 우리가 그 순간에 가로 챌 방법 드라이버를 패치하는 것입니다 그리고 패치 할 수있는 것에 몇 가지 제한이 있습니다 그래서 우리는 특정 바이트 수를 요구합니다 우리가 변경하려고하는 함수 당 명령 수

특정 운전자에게는 기능이 너무 짧습니다 Android 최신 버전 출시 및 곧 출시 예정 [INAUDIBLE] OS 지원입니다 그래서 우리는이 불쾌한 운전자에게 패치를하지 않을 것입니다 실제로 OS에 훅이 생깁니다 그래서 우리는 무엇이든 추적 할 수 있습니다

관객 : 안녕하세요 픽셀 버퍼 [INAUDIBLE]의 [INAUDIBLE] 확장 프레임에 있습니까 을지 지하다– BEN CLAYTON : 현재 깊이를 검사 할 수 있습니다 스텐실에 대한 견해가 없습니다 그러나 우리는 곧 그 일을 할 것입니다 관객 : 그것은 우리에게 매우 유용합니다

BEN CLAYTON : 우리가하는 일에 대해서 – 그 전에 도구가 꽤 모듈 식입니다 우리는 모든 현명한 사람들이 있습니다 하나의 특정 프로세스에서 그리고 UI는 사실 전혀 묶여 있지 않습니다 우리는 RPC 사용자 인터페이스를 사용하여 서버와 통신합니다

그리고 우리는 실제로 우리가 다른 도구를 가지고 있습니다 당신이 그것을 다운로드 할 때 배 그것은 GAPID라고합니다 실제로 동일한 기능을 많이 제공합니다 개발하는 데 정말 유용했습니다

이 명령을 사용하여 명령, 상태, 프레임, 그것을 사용하여 GL 오류 또는 Vulkan 문제를 찾으십시오 자동화 된 테스트에서이 점에서 많은 가치를 발견합니다 추적을 할 수 있습니다 명령 줄 도구를 사용할 수 있습니다 예를 들어 야간 빌드의 일부로 그렇지 않으면 실종 될 응용 프로그램의 문제

그래서 예를 들어, 나는 가지 않을거야 명령 행을 입력하십시오 그러나 우리가 단지 demoing하고 있었던 것과 같은 흔적이 주어지면서, 특정 시점에서 스크린 샷을 얻을 수 있습니다 우리는 또한 MP4 비디오를 만들 수 있습니다 네가 가진 건 뭐든간에

우리가 가지고있는 또 다른 모드가 있습니다 추적하는 동안 프레임 버퍼를 캡처합니다 그리고 나서 우리가 검증을 할 때, 우리는 실제로 리플레이가 일치하는지 확인할 수 있습니다 하나의 기기 재생이 진행될 때, 운전자와 운전자 사이의 변화에 ​​특히 유용 할 수 있습니다 예를 들면

그리고 내 슬라이드가 실패했습니다 예 그래서 우리가 현재하고있는 현재의 일, 시도해 본 사람들을 위해 이미 GAPID, 실망했을 수도 있습니다 도구의 성능 우리는 그것이되어야 할만큼 빠르지 않다는 것을 충분히 알고 있습니다

그리고 너무 많은 메모리를 차지합니다 이것이 우리의 가장 중요한 것입니다 지금 당장 노력하고있어 빨리해라 리소스를 덜 차지하게 만듭니다

GL ES의 중간 실행 캡처는 다음과 같습니다 우리는 사람들이 많이 많이 원한다는 말을 들었습니다 그래서 우리는 그것을 곧 풀어 나갈 것입니다 그리고 기기 재생시 – 우리가 간단히 언급했듯이 나는이 컴퓨터의 모든 USB 포트를 실제로 사용했습니다

GL ES에 대한 재생이이 컴퓨터에서 수행되고 있습니다 따라서 우리는 GL ES에서 다시 데스크톱 GL로 변환하여 재생합니다 우리가 할 수있는 한 멀리까지 가져 왔습니다 애플은 GL 드라이버를 더 이상 밀어 붙이지 않았다 우리는 현재 GL ES가 실제로 데스크톱 GL, 기본 포트를 초과하므로 데스크톱 재생, 번역을 통해 실제로는 불가능하기가 어렵다

불칸에게도 마찬가지입니다 공연 우리는 또한 그곳에서 유효성 확인을 원합니다 보고서의 일부로 따라서 레이어를 가질 필요가 없습니다 너는 흔적을 남겼다

그리고 같은 정보를 얻습니다 그리고 마지막은 Vulkan 데이터를 시각화하기위한 향상된 UI입니다 Vulkan은 GL ES의 매우 다른 짐승입니다 즉각적인 모드가 아닙니다 명령 버퍼가 있습니다

일련의 호출 순서로 항목을 표시하려고합니다 그것을하는 한 방법입니다 그러나 우리가 느끼는 최선의 방법은 아닙니다 그래서 우리는 지금 많은 연구를하고 있습니다 이 새로운 그래픽을 더 잘 시각화하는 방법 API를 사용하면 그래프 표현이 더 많을 수도 있습니다

그 후에 우리는 사물에 대한 많은 아이디어를 가지고 있습니다 우리가하고 싶은 것 그러나 우리는 당신으로부터 피드백을 받고 싶습니다 어디에 우리가 시간을 투자해야하는지 나는이 프로젝트를 수년 동안 이끌어 왔습니다

그리고 10 대 때, 나는 항상 RTS 게임을 너무 많이 사용했습니다 그래서 테크 나무는 일종의 방법입니다 나는 많은 것들이 있다는 점에서 내가하는 일을 시각화한다 내가 할 수 있고 어떤 것들은 잠금 해제 다른 것들 나머지 슬라이드는 우리가 할 수있는 일의 일부를 겪게 될 것입니다

그리고 어떻게 내 미친 gamey 두뇌에 그들을 분류합니다 당신이 기입 할 수있는 설문지가 있습니다 우리가 이것을 통과 할 때 함께 놀면 도움이 될 것입니다 너 내가 뭘 말하는지 알 수 있도록 질문이있을 때에 대해

원하지 않는다면 괜찮습니다 나 한테서 붙들지 않을거야 하지만 그걸 열 수 있다면 계속 해봐 슬라이드는 질문과 관련됩니다 그게 다가와

시원한 파스칼 뮐러 : 문제가 있습니다 벤 클레이튼 : 질문 하나? 청중 : 그래픽 프로파일 러에 대한 타임 라인이 있습니까? GPU를 위해? 파스칼 풋내기 : 타임 라인? 오늘부터 피드백이 무엇인지 알게 될 것입니다 우리는 타임 라인을 얻을 수 있을지도 모릅니다 시원한

첫 번째 그룹은 통계입니다 프로파일 링을 포함하지 않는 것들을 분류합니다 이 그룹에서는 여전히 의미있는 가치를 지니고 있습니다 그래서 우리가 지금 가지고 있어야만하는 가장 간단한 것, 일종의 x 물건입니다 프레임 당 그리기 호출 수입니다

가장 확실한 것입니다 기기에서 2,000 회의 무승부 전화 오직 몇 백에 대처할 수 있습니다 당신은 나쁜 시간을 보낼 것입니다 이것의 예는 프레임 당 분명히 드로우이며, 무승부 당 정점, 무엇이든간에 삼각형, 메모리 사용량의 추정치도 마찬가지입니다 가지고있는 텍스처의 수

우리는 또한 일종의 장치 예산을 생각해 내고 싶다 작년 내 작품의 일부 게임 회사에 나갔다 60 점을 얻는 데 도움을 주려고합니다 x 당 y 가지를 기반으로, 숫자 개발중인 도서 목록 어떤 종류의 합리적인 지침도없이 얼마나 많은 무승부를 요구해야하는지 특정 장치를 만들 수있다 조금 우울합니다

우리는 일종의 데이터를 제공 할 수 있습니다 특정 주력 장치의 경우, 프레임 당 x 개의 정점을 제출하는 것이 좋습니다 예를 들면 우리는 GAPID 내부의 자동 지식을 가질 수 있습니다 다른 장치 모음 네가 알면 경고 해 줄거야

그 예산 밖에서 FrameBuffer 시각화 – 이것들 당신이하는 오버 드로의 숫자 같은 것들입니다 여기에 물건을 넣을 수도 있습니다 심도가 떨어질 수있는 조각을 강조 표시하는 것과 같습니다 시험, 좋은 일이 될 수있다

또는 쉐이더 프로그램에 의해 프레임을 표시하는 것, 예를 들면, 이것은 좋은 알기 방법입니다 여기서 쉐이더를 최적화해야 할 곳을 찾아야합니다 관객 : [INAUDIBLE] 파스칼 뮌스터 : 네, 오버 드로가 그 일부입니다 관객 : [INAUDIBLE] 파스칼 뮌스터 : 이제오고 있습니다 셰이더 정적 분석 – 이것은 까다로운 문제입니다

그것은 공기 중 하나의 손가락이어야합니다 많은 다른 GPU가 있기 때문에 거기 밖으로, 귀하의 쉐이더 코드 사이에 많은 중간 레이어 셰이더가 실제로하는 일은 하드웨어가 수행하는 작업입니다 하지만, 우리는 숫자에 대한 대략적인 견적을 내놓을 수 있습니다 텍스트를 통한 ALU 작업의 예를 들어, 손을 물결 치는 데 도움이 될 수 있습니다 셰이더가하는 일 중 프로파일 링 – 큰 기능 요청은 여기에 있습니다

사람들이 생각하는 제일 먼저하는 것은 틀과 그림, 카운터, 나는 말했다 그러나 프레임과 드로 타임은 아주 좋습니다 불행히도 타일링 된 아키텍처는 통화 시간은 매우 어렵습니다 우리는 몇 가지 아이디어를 가지고 있습니다 유용한 일부 데이터를 찾을 수 있습니다

그러나 프레임 속도가 얼마인지 알면, 어떤 일들이 얼마나 오래 걸리고 있는지 아는 것 우리가하고 싶은 것이 분명합니다 IHV로부터 하드웨어 카운터를 얻을 수 있다면, 우리는 하드웨어의 거대한 바다를 맛보고 싶습니다 아무도 정말로 이해할 수없는 카운터 의미있는 시간이기 때문에 얼마나 많은 시간을 할 수 있는지 알려줄 수 있습니다 [INAUDIBLE]을 (를) 지출하면 얼마나 많은 시간을 할애 할 수 있습니다 예를 들어, 캐시 엉망진창

많은 IHV 도구들 드로우 콜 타임 (draw call time)과 같은 것을 제공하는 것은 상대적 셰이더 비용입니다 그래서 그들의 도구가 정확히 어떻게 말할 수 없을지라도 오랜 한 번의 무승부 요청이 걸렸습니다 그들은 더 많은 접근 방식을 취합니다 이것들은 당신이 가진 모든 쉐이더 프로그램들이다 그리고이 특별한 것은 실제로 당신의 시간의 30 %를 필요로합니다

최적화해야하는 곳입니다 이것은 내가 생각하기에 매우 소중한 것입니다 우리는 확실히해야합니다 우리가 처음 두 가지 일을 끝내면, 우리는 통계를 바탕으로 한 제안을하고 싶습니다 따라서 이전에 다른 도구를 사용한 적이 있다면, 그들은 종종 당신이 생각했는지 제안합니다

정점 형식을 변경하는 것에 대해 [INAUDIBLE] 그 (것)들을 분리하는 것과 반대로? 이러한 것들이 우리가 도구를 원할 것입니다 실제로 가서 당신을 위해 할 수 있습니다 도구에 실제로 사용할 수있는 패턴이 여러 개있는 경우 탐지하여 추적에 적용하고 시간을 정하십시오 우리는 일종의 정렬 된 목록을 제공 할 수 있습니다 영향으로 주문한 이익을 최적화하기 위해 할 수있는 일

나는 게임 개발자, 그들의 시간은 소중합니다 너는 삼일을 보내고 싶지 않아 절반 이상 향상시킬 수있는 무언가를 최적화합니다 이 한 가지 일을 보여줄 수 있다면 시간의 10 %를 절약 할 수 있습니다 자주 잊혀지는 또 다른 일 전력 사용 및 열전쌍입니다

정말 중요합니다 그래서 우리가 당신에게 어떤 프로파일 링을 줄 수 있다면 타이밍에 관한 정보, 우리도해야한다 얼마나 많은 힘을 사용하고 있는지 보아라 우리가 할 수있는 게 있는지 알아봐 그것을 줄이기 위해 제안하십시오

셰이더 디버깅 – 버텍스 나 프래그먼트를 클릭 할 수 있음 귀하의 FrameBuffer에서 단일 라인 스테핑 있습니다 그래서 이것은 아주 기본적인 버그입니다 우리는 당신이 전방과 후방으로 나아갈 수 있기를 원합니다 시계 창을 가지고, 당신이 따라갈 때 모든 값을보십시오 여기에도 큰 질문이 있습니다

당신이 더 많은 시뮬레이션을 할 수 있을지 여부 실제 하드웨어 대 두 가지 모두에 장단점이 있습니다 디버깅하려는 경우, 그리고 당신은 검은 색 픽셀을 얻고 있고 그것은 드라이버 또는 하드웨어입니다 문제를 제기 한 다음, 분명히, 실제로 하드웨어 문제가 있음을 여러분에게 증명할 수 있습니다 반면에, 실제 하드웨어에서 벗어나려고 할 때 같은 방식으로 왜곡 된 결과를 줄 수 있습니다 픽셀 역사 – 그것은 디버깅의 일부분이며, 하지만 FrameBuffer를 클릭하면 색깔에 영향을 미치는 모든 무승부, 또는 깊이 또는 스텐실

나는 그것들을 포함 시키거나 제외시킬 수있다 이후 겹쳐 썼다 셰이더 기능 및 성능 표 버텍스 폼에 더 일반적입니다 미친 버텍스가 하나 있다면 스크린에서 반 마일, 너 너 그 하나의 것을 식별 할 수 있고, 가서 가서 디버깅 할 수 있습니다 왜 당신이 [무관심한] 또는 무엇인가를 가지고 있는지 알아 내십시오

그리고 우리가 생각한 다른 것 너 괜찮 으면, 아주 좋을거야 특정 쉐이더 디버깅, 입력 강조하기 출력합니다 예를 들어 텍스쳐가 있다면, 당신이 당신의 쉐이더에서 샘플링하고 있다는 것, 실제로 조각을 강조 표시합니다 그 특별한 쉐이더 [INAUDIBLE]에 관련되어 있습니다 우리가 할 수 있다고 가정하면, 매우 좋을 것입니다

등방성 필터링이있는 경우 실제로 사용되는 모든 조각 그리고 마침내 레퍼런스 레서 라이저를 사용하게됩니다 그래서 우리 말의 문제를 만지십시오 데스크톱 리플레이를 우리가 할 수 있다고 생각하는 한 이제 대안을 찾고 있습니다

따라서 참조 복원 기가 매우 유용 할 수 있습니다 다른 것들을 위해서뿐만 아니라 보장 된 재생을 갖는 것 호스트 시스템에서 수행 할 수 있습니다 이제 첫 번째는 우리가 알고있는 것입니다 장치에는 문제가 있습니다 운전자는 버그가있을 수 있습니다

하드웨어에 실제로 결함이있을 수 있습니다 우리는 이것에 대해 정말로 듣고 싶습니다 우리는 얼마나 많이 원하는지 충분히 강조 할 수 없다 깨진 운전자에 대해 듣기 우리는 사람들이 나쁜 시간을 보내고 있다는 것을 압니다

그러나 우리는 나가서 당신 이야기를 많이해야합니다 그래서 당신이 흔적을 가지고 있다면, 당신이 그것을 가지고, 당신은 유휴 상태입니다, 우리는 우리가 백그라운드에서 재연 할 수 있다고 생각합니다 참조 수복물로 그 후에, 당신은 당신이 기기에서 재생되고있다 우리가해야한다고 생각하는 것과 일치합니다 그리고 그들이 같지 않으면, 우리는 당신을 제공 할 수 있습니다

원 클릭 리포터 버그 그것은 우리에게 우리가 운전수에게 줄 수있는 정확한 기록을줍니다 팀이이를 수정해야합니다 그래서 그것은 안드로이드 생태계에 좋은 방법이 될 것입니다 모든 주위에서 더 좋을 것

GL ES 및 Vulkan 등이 있습니다 그것에 물결 모양의면을, 특히 떠있는 주위에 포인트 정밀도 및 샘플링 우리가 참조 회복기를 가지고 있다면, 우리는 여기에 가치가 있다고 생각합니다 네가 할 수있는 손잡이가있어서 기본적으로 물건이 어떻게 보이는지 비교하는 것 다른 하드웨어 사양 그래서 부동 소수점 정밀도는 고전적인 것입니다

부동 소수점 정밀도를로드하는 경우, 그러면 셰이더가 갑자기 0으로 나누기 시작합니다 이것은 일어나고 무언가이다 우리가 너를 자동으로 잡을 수 있을지도 몰라 [INAUDIBLE]에서 On-host replay – 우리는 GL ES를 얻었습니다

우리는 Vulkan을 위해서도 그것을 원합니다 레퍼런스 레서 라이저로 확실히 가능합니다 우리가 지금 가지고있는 것보다 훨씬 견고합니다 그리고 나서 마침내 자동화 된 테스트가 시작됩니다 이런 종류의 GAPID 도구로 돌아갑니다

당신이 안식의 휴식을 취한다면 네가하고있는 야간 빌드를 가지고있어 기본적으로 GAPID를 기본적으로 가질 수 있습니다 게임의 흔적을 가져라 그래픽의 API를 잘못 사용하지 않았는지 확인하십시오 그리고 이것을 사용하여 참조를 얻을 수도 있습니다

게임이 어떻게 보이는지에 대한 비디오 그리고 도구를 사용하여 실제로 얻으십시오 관심을 보이는 여러 기기의 동영상 잠재 고객이 팝업으로 표시 할 때 문제가 될 수 있습니다 점점 지난 주와는 달리 문 밖으로 게임 그래서 그것은 내가 방금 만났던 많은 것들이었습니다

아주, 아주 빨리 덮여 내가 여기에서 놓친 것들이 있다면 당신은 생각합니다 매우 귀중합니다 제발, 제발, 알려주세요 그리고 그게 다야

질문 있니? 관객 : 파워 프로파일 링에 대해 이야기했습니다 BEN CLAYTON : 죄송합니다, 그를 위해 마이크 관객 : 방금 전원 프로파일 링에 대해 언급했습니다 당신은 정교 할 수 있습니까? BEN CLAYTON : 아직 연구 중에 있습니다 그러나 그 생각은 우리가 능력을 가질 수 있다는 것입니다

같은 프레임을 되풀이하여 재생합니다 실제로 하드웨어를 지원하여 배수관을 보았다면 열전자를 모니터링하면 적어도 게임을 꾸준히 계속한다면, 함께 올라와라 이 특정 프레임과 비슷한 네가 가질 특성의 종류 야 배터리 및 열전쌍 그리고 우리가 최적화를 위해 가지고있는 휴리스틱 중 하나는, 우리는 또한 그것을 시도 할 수 있습니다

너를 밤새껏 달려야하는 무언가일지도 모르다 시도하고 안정적인 결과를 얻을 수 있습니다 하지만 주와 주보다 좋습니다 너 자신을 파고 들었다 관객 : 질문지에 대한 URL을 백업 할 수 있습니까? BEN CLAYTON : 물론입니다

우리는 거기에 갈 관객 : 힘과 열기에 관해서는 그걸 묶을 방법이 될거야 코어 주파수 및 CPU 사용량, 거기 있는지 여부를 볼 수 있습니다 통화 제출 간의 절충 시간 대 실제 GPU 시간? 벤 클레이튼 : 좋은 제안 그래 어쩌면

이것들은 우리가 간단히 살펴 봤던 것들입니다 우리는 개발을 시작하지 않았습니다 그래, 그게 가치있는 일이라면

Пишем Instagram #0 – Android Kotlin Курс

안녕 얘들 아 이 새로운 프로젝트에 대해 이야기하고 싶습니다

이 프로젝트는 Instagram app clone이 될 것입니다 기본 Android 앱입니다 우리는 또한 코 틀린 어를 사용할 것입니다 그리고 모두와 공유하십시오 0 에서이 응용 프로그램을 구축하는 과정 나는 모든 걸음마다 너를 걸을거야

실제 응용 프로그램이 될 것입니다 프로그래밍 기술을 사용하는 방법을 보게 될 것입니다 정말 복잡한 앱을 작성하려면 간단한 튜토리얼이 많이 있습니다 하지만 실제로 큰 응용 프로그램은 없습니다 나는 너에게 도움이 될 것 같아

우리는 사용자 프로필 화면을 만들 것입니다 우리는 사진을 여기에서 가질 것이다 프로필 수정 화면 사용자 사진 업로드 Firebase를 사용합니다 데이터를 저장하려면 Firebase가 정말 편리합니다 간단 해 실제 애플 리케이션을 위해 Amazon S3에 파일을 보관할 것입니다 하지만 우리는 일을 단순하게 유지하고 Firebase에 충실합니다

좋아요와 함께 알림도 보내 드리겠습니다 그림 화면 업로드 검색 화면 나는 우리가 지을 것이라고 생각한다 가장 중요한 기능 그러나 그들 모두는 아닙니다 시간 제한을 위해서 우리는 또한 피드 스크린을 가질 것이다 게시물 포함 너희들에게 유용 할거야 이 모든 것이 어떻게 나타나는지 보려면 나는 모든 단계를 나눌 것입니다

소스 코드 공유 구독을 잊지 마세요 그리고이 비디오처럼 그리고 코스에서 뵙겠습니다

안드로이드 폰으로 시스템 모니터 만들기

안녕하세요, Hugencyclopedia의 Hugemon입니다 이 비디오에서는 여분의 안드로이드 장치를 사용하여 시스템 모니터를 만드는 방법을 설명합니다

Android 기기 용으로 여분의 Android 기기, Aida 64 Extreme 및 전체 화면 브라우저 앱이 필요합니다 설명에서 각 소프트웨어에 대한 링크를 찾을 수 있습니다 Aida64의 "Preferences"에서 "Hardware monitor"아래의 "LCD"를 선택하십시오 오른쪽 창에서 "원격 센서"를 선택하십시오 여기에 네트워크 포트를 설정할 수 있습니다

포트를 설정 한 후 RemoteSensor LCD 지원을 활성화하고 적용을 클릭하십시오 안드로이드 장치에서 전체 화면 브라우저를 실행하고 PC에 연결하십시오 내부 ip 주소와 방금 설정 한 포트 이 파란색 웹 페이지가 나타납니다 안드로이드 장치가이 페이지에 연결할 수없는 경우 다른 포트를 시도하거나 Windows 방화벽 설정을 변경해야합니다 이 파란색 페이지에 연결 한 후, Aida64의 "미리보기 해상도"를 파란색 페이지에 표시되는 해상도로 설정하십시오

LCD 메뉴 아래에 "LCD 항목"메뉴가 있습니다 모니터링하려는 값에 대한 표시기를 추가하여 화면을 사용자 정의 할 수 있습니다 "추가"버튼을 클릭하고 표시 할 값을 선택하십시오 다양한 크기와 색상으로 실험 해보십시오 항목을 이동하려면 오른쪽에있는 화살표 버튼을 사용할 수 있습니다 '적용'을 누르면 Android 기기 화면도 업데이트됩니다

내보내기 및 가져 오기 버튼을 사용하여 화면 레이아웃 저장 및로드 내가 사용하고 있던 레이아웃을 가져올 것이다 다음 동영상에서는 PC로 Android 기기를 원격 제어하는 ​​방법을 보여 드리겠습니다 Hugemon 로그 아웃

Build the new, modular Android App Bundle (Google I/O ’18)

피에르 레 세네 : 안녕하세요 저는 Pierre이고 Google Play의 소프트웨어 엔지니어입니다

안토니 모리스 : 안녕하세요 저는 Google Play의 소프트웨어 엔지니어 인 Anthony입니다 IBRAHIM KARAHAN : 저는 Google의 파트너 개발자 옹호자 인 Ibo입니다 피에르 레 세네 : 음, 여러분 중 일부는 이전 세션에서 온 것일 수도 있습니다 Google Play에 대한 개요를 제공 한 원형 극장에서 동적 게재 및 새로운 게시 형식 안드로이드 앱 번들 (Android App Bundle)과 어떻게 이것은 애플 리케이션을 작게 만들 것입니다

이 세션에서는 기술 심층적 인 다이빙을 할 것입니다 이 새로운 출판 형식 우리는 그것이 무엇을 포함하는지, 그것을 어떻게 만드는지, 그것을 게시하는 방법뿐만 아니라 그것을 테스트 할 수있는 다른 방법을 제공합니다 Google Play의 생성 및 게재 방법에 대해서도 설명합니다 APK를 최종 사용자에게 제공합니다

이제 Android App 번들의 형식부터 시작해 보겠습니다 Android App Bundle은 zip 아카이브입니다 이미 익숙한 파일이 들어 있습니다 APK에서는 텍스트 파일, 리소스, 자산, 네이티브 라이브러리 앱 번들과 APK가 두 가지 목적을 지닌 두 가지 고유 한 형식입니다

앱 번들은 순전히 출판 형식입니다 그래서 그것은 장치에 직접 설치 될 수 없습니다 또한 일부 메타 데이터 파일 최종 APK에서 끝나지 않는 도구가 올바른 방식으로 APK를 구축하는 데 도움이됩니다 마지막으로 앱 번들의 형식이 APK보다 엄격합니다 우리는 도구가 완전히 묶음에있는 파일 이해하기 유효한 APK를 생성 할 수 있습니다

이제 하나의 앱 번들을 열고 내부 내용을 살펴 보겠습니다 그래서 그 묶음을 열면, 이것은 당신이 기대해야하는 것입니다 그래서 이것은 많은 사람들에게 익숙해 져야합니다 바퀴를 다시 발명하는 대신에, 우리는 APK의 일부 구조를 재사용하기로 결정했습니다 우리가 파일을 더 잘 설명하는 데 필요한 것을 수정해야합니다

그래서 우리는 그들을 자유롭게 통과 할 것입니다 시작하려면 앱 번들에 다중 모듈 지원, 전에 들었을 수도 있습니다 그리고 곧 모듈에 대해 더 자세히 알려 드리겠습니다 지금 당장은 최상위 디렉토리 앱 번들에는 모듈의 이름이 있습니다 모듈에는 항상 base라는 모듈이 있습니다

번들에 이것이 우리가 여기서 바라 보는 것입니다 Android 매니페스트가 계속 표시됩니다 새 프로젝트는 실제 XML 파일입니다 APK에서는 바이너리 형식을 볼 수 있습니다

앱 번들에서 프로토콜 버퍼로 컴파일됩니다 형식을 사용하면보다 쉽게 ​​변환 할 수 있습니다 APK와 달리 dex 파일은 dex라는 디렉토리 아래에 있습니다 Android 리소스, 애셋, 반면에 부정적인 도서관은, APK와 동일한 디렉토리 구조를 따르십시오 유일한 차이점은 XML 리소스입니다

이들은 또한 프로토콜 버퍼 포맷으로 컴파일되며, 바이너리 형식 대신 resourcespb 파일은 리소스 테이블입니다 이것은 파일 resourcesarac과 같습니다

APK에서 보았을 수도 있습니다 앱에있는 리소스를 설명합니다 및 타겟팅pb 확장자는 프로토콜 버퍼 형식입니다

다시 말하면, 이전에 도구를 변형하기가 더 쉬워졌습니다 APK에서 이진 형식으로 변환됩니다 assetspb 및 nativepb 파일 자산에 대한 자원 테이블과 동일합니다

및 네이티브 라이브러리 그래서 자산이나 네이티브 라이브러리가있는 경우에만 존재합니다 또한 파일의 대상 지정을 설명합니다 각각의 디렉토리에 있습니다 앞에서 언급 한 것처럼 리소스 테이블, 자산 테이블 및 기본 라이브러리 테이블 앱 파일 타겟팅에 대해 설명합니다

그래서 나는 그것이 의미하는 바를 설명하겠습니다 파일 타겟팅은 설명입니다 주어진 파일을 대상으로하는 장치 또는 사용자 유형 Google Play 동적 게재의 핵심 개념입니다 파일 타겟팅을 이해 한 이후 은 주어진 사용자에게 필요한 파일 만 제공 할 수 있음을 의미합니다 그리고 이것이 우리가 앱을 더 작게 만들 수있게 해줍니다

앱 번들은 APK에 존재하는 타겟팅을 다시 사용합니다 당신은 이미 이것에 익숙합니다 그래서 나는 빨리 가서 빨리 달릴 것입니다 리소스의 경우, 예를 들어, 리소스의 디렉토리 이름에 HDPI HDPI 장치를 대상으로 지정하거나 프랑스 사용자를 대상으로 fr을 추가하십시오 네이티브 라이브러리의 경우 동일합니다

디렉토리에 아키텍처를 추가합니다 여기서도 새로운 것은 없습니다 앱 번들도 같은 방식으로 작동합니다 이제 우리는 당신 중 일부를 위해, 애셋은 앱의 큰 부분을 차지합니다 따라서 앱 번들은 자산 타겟팅을 지원합니다

언어 타겟팅부터 시작합니다 곧 텍스처 압축 형식을 추가 할 예정입니다 및 그래픽 API 버전 따라서 우리는 관련 자산 만 사용자에게 제공 할 수 있습니다 앱과 게임의 크기를 줄이십시오

이것이 대상 자산 디렉토리를 만드는 방법입니다 해시 기호를 사용하는 동안 타겟팅하는 저작물 디렉토리를 식별하려면 다음에 정의하는 키가옵니다 우리가 목표로 삼고있는 차원들 – 예를 들어, lang은 언어를, tcf는 텍스처 압축 포맷을, 등등 그런 다음 키와 관련된 값이옵니다 음, 몇 가지 예를 살펴 보겠습니다

애셋이 포함 된 디렉토리의 예는 다음과 같습니다 프랑스어 사용자 이것은 자산 디렉토리의 또 다른 예이며, 여기서 텍스쳐 압축 포맷에 기초하여 타겟 화되고, etc1 형식을 지원하는 장치를 타겟팅합니다 이제 앱 번들 형식에 대해 더 많이 알고 있으므로 나는 Anthony에게 그것을 넘겨 줄 것이다 사용자에게 소규모 앱을 제공하는 데이 방법을 사용하는 방법을 알려줍니다 ANTHONY MORRIS : 고마워, 피에르

안녕, 모두들 피에르가 너에게 설명하고 있었어 우리가 어떻게 형식을 바꾸는 지 Play 스토어에 게시합니다 그리고 지금 나는 너에게 설명 할거야 사용자에게 제공하는 서비스의 형식을 어떻게 변경하는지, 어떻게 우리가 이것을 제공하는 데에만 사용하는지 각 사용자에게 필요한 것

이제 분할 된 APK부터 시작하겠습니다 그래서 Android Lollipop에서 Android에 기능을 추가했습니다 플랫폼으로 분할 APK라고합니다 Split APK를 사용하면 여러 APK를 장치에 설치할 수 있습니다 마치 하나의 앱에 속한 것처럼 행동합니다

이 분할 APK를 설치할 수 있습니다 다른 장치에서 다른 조합으로, 한 번에 하나씩 설치하거나 한 장씩 설치할 수 있습니다 이제 분할 된 APK는 일반 APK와 동일한 형식을 갖습니다 여기에는 Java 코드 색인 파일, 원시 코드, 자원, 및 자산 디렉토리 일단 APK가 분리되면, 단일 APK에있는 것처럼 액세스 할 수 있습니다

또한, 각 애플리케이션 패키지 이름과 버전이 같다 다른 모든 것들과 코드 장치에 설치되어 있어야합니다 동일한 키로 서명해야합니다 자 이제 Android App을 어떻게 사용할 수 있는지 살펴 보겠습니다 우리가 장치에 제공하는 분할 APK를 묶어서 생성하십시오

먼저 앱 번들을 살펴 보겠습니다 모든 장치에 공통되는 모든 것을 찾아야합니다 기본 APK에 넣습니다 그래서 여기에는 Android 매니페스트 파일이 포함됩니다 예를 들어, dex 파일 등이 있습니다

그런 다음 다른 APK를 생성합니다 각 화면 밀도에 대해 각 분할에는 모든 내구재가 포함됩니다 Android 프레임 워크에 의해 선택되었을 것입니다 그 밀도를 가진 장치에서 다른 APK를 생성 할 수도 있습니다

네이티브 라이브러리를 포함하는 각 네이티브 아키텍처 용 그 아키텍처의 그리고 우리는 다른 분할을 생성 할 수 있습니다 앱에서 지원하는 각 언어에 대해 각 언어의 문자열을 다른 APK에 저장합니다 자, 함께, 우리는 이러한 분할 구성을 호출합니다 분할 또는 구성 분할

이제 기기에 앱을 제공하려고 할 때, 우리는이 분할의 서브 세트를 제공하기 만하면됩니다 모든 기기에 모든 것을 제공하는 대신 그래서 삼성 갤럭시 J5가 있다고 해봅시다 기본 APK와 xhdpi 밀도를 설치합니다 split, ARM 아키텍처 분할 및 영어 왜냐하면 나는 영어 만 할 뿐이니까 하지만 그보다 조금 더 까다 롭습니다

Pierre는 프랑스어와 영어를 모두 구사하며, 그는 자신의 장치에서 두 가지 언어를 모두 지정합니다 설정 그래서 그의 장치에서 Pixel 2 XL과 올바른 밀도와 아키텍처 우리는 영어와 불어를 모두 제공합니다 자기 장치로 나눠 피에르가 브라질로 이주하여 포르투갈 인

그런 다음 포르투갈어를 장치에 추가 할 수 있습니다 이제 그가이 작업을 수행 할 때 Play 스토어 이를 인식하고 포르투갈어를 다운로드하려고 시도합니다 기기에서 스플릿을 사용하는 모든 앱에 대한 언어 분할 그리고 그 당시 장치가 온라인 상태가 아닌 경우, 그러면 우리는 그 언어를 다운로드 할 것입니다 다음 기회에 나눕니다

그리하여 이것이 config split이 작동하는 방법입니다 그러나 내가 처음에 언급했듯이, Lollipop 이상에서만 지원됩니다 이는 현재 사용자의 약 85 %를 차지하지만 대부분의 사용자는 여전히 L 장치를 대상으로합니다 이러한 기기의 경우 앱 번들 여전히 크기 절약을 달성 할 수 있습니다 특정 밀도를 포함하는 독립 실행 형 APK 생성 및 아키텍처

그래서 우리가 L 플러스에서 할 것처럼 분할을 생성하는 대신, 우리는 독립형 APK 매트릭스를 생성 할 것입니다 우리는 이것을 언어로 확장하는 것을 간략히 고려했다 쪼개지도 그러나 우리는 합계의 약간을했다 손에 조금 닿았습니다

하지만 지금은 Pre L 기기의 경우 각 독립 실행 형 APK에 모든 언어를 포함합니다 이제 앱을 제공하려고 할 때 장치에 가장 적합한 단일 APK를 선택하십시오 Galaxy Nexus라는 첫 번째 Android 기기가 있다면 우리는 hdpi 팔 독립형 APK를 제공 할 것입니다 이것을 인식 할 수 있습니다 당신이 한 일과 비슷하다

과거에는 멀티 APK로 하지만이 모든 것을 하나로합시다 이 그림은 이렇게 보입니다 실제로는 방법에 대한 세부 사항을 실제로 걱정하지 않아도됩니다 이 모든 분할 APK가 생성됩니다 또는 독립 실행 형 APK가 생성됩니다

하나의 앱 번들 만 업로드하면됩니다 Play는 오른쪽 분할을 생성하고 각 장치에 적합한 역할을합니다 그리고 우리가 지금까지 토론 한 차원들 시작일뿐입니다 Pierre는 앱 번들을 사용하여 애셋을 타겟팅하는 방법에 대해 설명했습니다 그래픽 API를 사용하면 곧 설정 분할을 생성합니다 그걸 바탕으로 우리는 또한 설정 생성을 시작합니다

새로운 플랫폼 기능을 활용하기 위해 분할합니다 그리고 우리는 압축되지 않은 네이티브 라이브러리 m-class 장치에서 이제 이보에게 가져 가라고 부탁합니다 이 앱을 사용하여 앱 크기를 얼마나 줄일 수 있는지 살펴 봅니다 묶음

이브라힘 카라간 : 고마워요, 안소니 이제 Play에서 APK를 기기로 분할하는 방법을 알았습니다 우리는 앱 번들로 크기 절약에 대해 이야기 할 것입니다 평균적으로 앱 번들로 게시 된 앱 20 % 더 작아지고 매회 20 % 절약됩니다 응용 프로그램이 다운로드되거나 업그레이드됩니다

이제 우리가이 숫자에 어떻게 도달했는지 살펴 보겠습니다 Play 스토어의 모든 애플리케이션을 분석했습니다 다운로드 횟수는 1 백만 회를 넘습니다 그리고 우리는 문자열에 대해 언어 분리를 사용하여 크기의 95 % 이상을 절약 할 수 있습니다 이미지의 경우 45 %입니다

또한 네이티브 라이브러리의 경우 크기의 20 %를 절약 할 수 있습니다 즉, 모든 앱이 앱 번들로 이동하는 경우, 우리는 하루에 약 10 페타 바이트의 데이터를 저장합니다 앱 다운로드 및 업데이트에서 가져옵니다 그것은 1000 만 기가 바이트, 또는 3 억 뮤직 비디오입니다 YouTube에서

그리고 그 위에 사용자는 추가 300 메가 바이트를 볼 수있었습니다 더 많은 사진, 더 많은 앱 또는 더 많은 음악을위한 디스크 공간 확보 자신의 장치에 이제 실제 크기 절약을 살펴 보겠습니다 이는 초기 액세스 프로그램 및 파트너 중 일부입니다 그래서 우리는 Twitter로 시작할 것입니다

Twitter – 이미 다중 APK로 게시 중입니다 전에 아키텍처가 분할되었습니다 그러나, 그들의 응용 프로그램은 번역되었습니다 많은 언어로, 그리고 그것은 여러 화면을 지원합니다 밀도 그들은 여전히 ​​출판비로 많은 비용을 절감합니다

앱 번들과 함께 크기가 20 % 증가합니다 또한 더 이상 다중 APK를 제공 할 필요가 없습니다 다음은 이전에 멀티 APK를 사용하지 않는 TextPlus입니다 앱 번들을 사용하면 앱 번들을 사용하여 모든 크기에서 26 %의 크기 절감 Jaumo의 앱은 원래 크기의 절반이며, 이것은 그들이 [무관심] 한 대형 도서관을 가지고 있기 때문입니다 또한 단일 APK에서 여러 아키텍처를 지원했습니다

이제 앱 번들을 만드는 방법을 살펴 보겠습니다 지금 저장을 시작할 수 있습니다 최신 안드로이드 스튜디오 32 카나리아 Android 앱 번들을 완벽하게 지원합니다 이제 우리는 빌드 할 새로운 옵션을 보게 될 것입니다

빌드 메뉴의 번들 [부적절한] 모든 앱 번들 할당은 쉽습니다 우리는 앱 모듈, 제품 맛을 선택하기 만합니다 빌드 유형 및 Android Studio 당신을위한 앱 번들을 만들고, 서명하고, 게시 할 준비가되었습니다 커맨드 라인을 선호하는 사람들을 위해 또는 자동화 된 빌드 시스템과 통합하려는 경우, 새로운 Gradle Android 플러그인은 새로운 작업 세트를 제공합니다

Android 앱 번들을 만들 수 있습니다 기억하십시오, 이것은 당신이 사용하는 것입니다 – 조립 작업 명령 줄에서 APK를 만듭니다 이제 앱 번들의 경우 번들 명령으로 전환하십시오 어셈블 링 태스크와 마찬가지로, 번들 태스크 또한 특정 향미료를 만들 수 있습니다 귀하의 응용 프로그램의

일단 번들 작업이 끝나면 출력 폴더에 앱 번들을 만들려고하는데, 맛과 빌드 유형이 선택되었습니다 빌드 된 아키텍트는 bundleiad입니다 번들 작업은 서명 구성과 호환됩니다 귀하의 build

gradle 파일 그리고 하나의 gradle 작업으로, 당신은 서명 된 앱 번들을 생성 할 수 있습니다 출판 준비 또한 앱 번들을 사용하면 Play가 자동으로 애플리케이션을 아키텍처, 화면 밀도, 및 언어 스플릿을 기본적으로 사용합니다 당신 구성을 할 필요가 없습니다

그러나 우리는 또한 개발자 스플릿을 완전히 제어 할 수 있습니다 어떤 이유로 든 분할을 사용하지 않으려는 경우 모든 차원에서 새로 도입 된 기능을 사용하여 번들 블록은 여기에 이제 Pierre는 앱을 게시하는 방법에 대해 이야기 할 것입니다 번들을 재생 콘솔에 추가합니다 PIERRE LECESNE : 감사합니다

좋아요, 그래서 당신은 앱 번들을 만들었습니다 이제 어떻게 게시 할 수 있는지 살펴 보겠습니다 Google Play Console에 있습니다 먼저 Google Play에서 앱 서명에 등록해야합니다 기억하는 사람들을 위해이 프로그램을 시작했습니다

작년에 Google I / O에서 등록 할 때 공개 키를 안전하게 전송합니다 Google Play에 그런 다음이 릴리스 키를 사용하여 Play에 서명합니다 사용자를 대신하여 생성 된 APK 사용자에게 보내기 전에 그러나 APK를 계속 업로드하는 경우 제작 탭 트랙에서 테스트 트랙에서 앱 번들을 테스트하고, Play는 업로드 된 APK를 사임하지 않습니다 그리고 우리는 당신이 자신감을 가질 수 있도록 이것을했습니다 먼저 작은 청중에게 앱 번들을 시험해보고, 현재 프로덕션 사용자에게 영향을주지 않습니다

등록한 후에는 릴리스를 관리하고, APK에서했던 것처럼 새 릴리스 만들기 – 앱 번들을 현재 같은 위치에 드롭합니다 APK를 삭제하고 업로드를 기다립니다 업로드되면 출시를 검토하고 출시를 해제 할 수 있습니다 그게 전부 야 그리고 나는 충분히 강조 할 수 없다

더 이상 멀티 APK를 처리 할 필요가 없습니다 Play Console이 백그라운드에서 생성했습니다 지원되는 모든 APK를 제공합니다 이제 앱 번들을 업로드했습니다 그리고 플레이는 너를 위해 모든 힘든 일을 해냈다

큰 그러나 개요를 가질 수 있으면 좋지 않을까요? Play에서 무엇을 생성 했습니까? 이제 Play Console에서 새로운 도구를 만들었습니다 번들 탐색기라고합니다 번들 탐색기를 사용하면 업로드 된 번들을 탐색 할 수 있습니다 보세요

첫 번째 화면에서 오른쪽 상단 모서리에 번들 게시로 얻을 수있는 크기 절감 효과 이제 앱의 1/4 이상을 저장했습니다 물론 이것은 장치마다 다릅니다 그래서 우리는 널리 사용되는 장치 구성을 사용하여 이것을 계산했습니다 또한 장치 구성 목록 아래에 있습니다

및 해당 장치에 대한 APK 서비스의 전체 크기입니다 몇 가지 기기를 클릭하고 어느 기기를 볼 수 있습니까? 기기는 각 버켓에 있습니다 지원되는 모든 장치를 이름으로 검색 할 수도 있습니다 생성 된 APK 집합을 다운로드하려면 특정 장치에 게재되었습니다 이것은 매우 도움이 될 것입니다

그 특정 장치에 대한 버그 보고서를 얻고, 그리고 사용자가 얻은 것을 정확히 얻고 싶습니다 APK가 제공되는 서비스 따라서 이름을 검색하고 다운로드를 클릭 한 다음, Play에서 제공 한 APK 세트를 받게됩니다 물론, 우리는 여러분 모두를 잊지 않았습니다 누가 우리의 출판 API를 사용하는지 앱 번들 업로드는 오늘 API를 사용하여 가능합니다

모든 문서를 찾을 수 있습니다 developersgooglecom/android 게시자 그리고 이제 앤서니에게 넘기십시오 ANTHONY MORRIS : 고마워, 피에르

이제 우리는 빌드하고 게시하는 방법을 배웠습니다 Android 앱 번들 그러나 우리가 배포판을 완성하기 전에, 우리는 여전히 테스트의 라운드를하고 싶습니다 그러나 앱 번들 자체는 설치할 수 없습니다 그럼 어떻게 테스트합니까? 첫째, 개발 과정에서 앱에서 빌드 된 APK를 설치할 수 있습니다

Android Studio에서 직접 다운로드 할 수 있습니다 따라서 여기서 아무 것도 할 필요가 없습니다 그러나 품질 관리 팀의 경우 항상 그렇지는 않습니다 Android Studio에서 소스 코드에 액세스 할 수 있습니다 따라서 세 개발자의 이야기를 통해 이야기하겠습니다

앨리스, 밥, 클레어 QA로 앱 번들을 테스트하는 방법 항목 앨리스부터 시작합시다 Alice는 새로 출시 된 내부 테스트를 사용합니다 재생 콘솔에서 내부 트랙은 알파 베타 트랙과 유사하지만, 이미 익숙 할 수도 있습니다 그러나 지연이 거의 없다는 점이 다릅니다

번들 업로드와 업데이트 사이 테스터 장치에서 사용할 수 있습니다 품질 보증 테스트를위한 신속한 처리 Play Console (앨리스)을 거치며 품질 보증팀이 받게 될 신뢰감이 있습니다 자신의 장치에서 byte와 byte는 무엇과 같은가? 최종 사용자는 릴리스를 프로덕션으로 푸시하면 얻을 수 있습니다 앨리스가 어떻게 이것을 설정하는지 보도록하겠습니다

정말 간단합니다 그래서 Alice는 최대 100 명의 QA 테스터의 이메일리스트를 생성합니다 내부 테스트 트랙에 적합합니다 그녀의 QA 테스터가 업데이트 링크를 따릅니다 업로드 된 번들을 받게됩니다

내부 테스트 트랙으로 그게 전부 야 그러나 모든 사용자가 Play Console에 액세스 할 수있는 것은 아닙니다 귀하의 품질 보증주기 동안 피에르가 밥의 이야기를 들어 봅시다 피에르 레 세네 : 사실, 밥은 접근 할 수 없습니다

Play Console에 연결합니다 그는 자신의 컴퓨터에서 로컬로 테스트하는 것을 선호합니다 아무것도 업로드하기 전에,하지만 그는 여전히 사용자가 얻을 수있는 것을 테스트하려고합니다 어떻게 그 일을합니까? 음, 번들에서 APK를 생성하려면, Play는 Bundletool이라는 새로운 도구를 사용합니다 따라서 Bob이 로컬에서 빌드를 재생하려면, 그는 단순히 Bundletool을 다운로드하고 몇 가지 간단한 명령

Bundletool에는 Build APKs라는 명령이 있습니다 Android 앱 번들을 사용하여 우리가 APK 세트 아카이브라고 부르는 것 APK 세트에는 APK 모음이 들어 있습니다 장치에 설치할 준비가되었습니다 APK 설치라는 또 다른 명령 해당 APK 세트 아카이브를 가져 와서 APK를 추출하고, 해당 장치에 설치하십시오

실제 커맨드 라인 작업을 보도록하겠습니다 그래서 여기에 명령 [? 최근?] Bob에 의해 build-apks 호출, 앱 번들 전달, APK가 만들어지기를 원하는 위치를 말합니다 그리고 깃발 연결 장치를 통과시킴으로써, Bundletool은 현재 기기 전용 APK를 구축합니다 자신의 컴퓨터에 연결되어 있습니다 그리고 Bob이 APK를 생성하려고한다면, 말하자면 팀원이 아닌 다른 사람 손에 물리적 장치, 그것은 여전히 ​​수 있습니다

사양이 포함 된 파일을 제공하십시오 장치를 JSON 형식으로 그리고 당신은 여기서 그 파일의 압축을 볼 수 있습니다 이 장치가 지원하는 API에 대한 정보를 제공하며, 지원되는 언어, 화면 밀도 및 APK 버전 Bundletool도 이러한 장치 사양 파일을 생성합니다 따라서 온라인에서 장치 사양을 찾을 필요는 없습니다

또는 직접 작성하지 않아도됩니다 이 명령을 실행하면됩니다 이 파일을 생성하십시오 또한 Bob은이 APK를 설치하려고하기 때문에 장치에서 APK는 개인 키로 서명해야합니다 그래서 그는 경로를 키 스토어에 전달합니다

APK 세트에 포함 된 모든 APK 그러면 서명되어 Bob의 장치에 직접 설치할 수 있습니다 다음은 APK 설치 명령의 호출입니다 APK 세트에서 APK를 추출합니다 연결된 장치에 직접 설치합니다 쉬운

그래서 Bob과 그의 지역 테스트였습니다 이제 Ibo가 클레어의 이야기를 들려 줄 것입니다 이브라힘 카라한 : 클레어가 일하고있다 중간 규모 회사의 경우 그들의 응용 프로그램을 채우기 위해 지속적인 통합 도구를 설정하십시오 매일 QA 팀은 야간에 응용 프로그램 빌드, 여러 장치에 설치, 응용 프로그램이 올바르게 작동하는지 테스트합니다

클레어는 QA 팀을 돕고 싶어합니다 그녀는 Bundletool을 다시 사용합니다 CI에 APK 세트를 생성합니다 그녀는 다음과 같은 명령을 사용합니다 Bob은 이전에 사용했습니다

그러나 이번에는 장치 사양 플래그를 생략하고, APK 세트를 생성합니다 APK 세트에는 가능한 모든 기기의 APK입니다 이제 QA 팀이 CI에서 설정 한 APK 만 가져옵니다 그들은 장치를 연결하려고합니다 install-apks 명령을 실행하십시오

Bundletool이 장치 구성을 읽습니다 첨부 된 기기에서 APK 세트의이 구성과 일치하는 APK, 장치에 설치하십시오 Play와 동일한 선택입니다 특정 기기에 대해 APK를 게재 할 때 발생합니다 Bundletool이 할 수있는 한 가지 더 범용 플래그를 전달하여 범용 APK를 생성하는 것입니다

범용 APK는 파일을 포함하는 단일 APK입니다 모든 장치의 모든 파일 따라서 모든 장치에 설치할 수 있습니다 글쎄, 그건 정말 대변하지 않아 사용자가 언제 받게 될지 Play 스토어에서 애플리케이션을 설치합니다 그러나 이는 APK를 사용자에게 전달하는 편리한 방법입니다

사용자가 어떤 장치를 실행 중인지 모를 때 Bundletool은 Android App Bundle을 만드는 데 사용되는 도구이기도합니다 Gradle은 장면 뒤에서 그것을 사용합니다 우리는 다른 사람들과 함께 일할 것입니다 체인, 툴체인 제작, 빌드 툴 통합 Android 앱 번들을 만들 수 있습니다 귀하가 사용하고있는 툴체인의 그리고 마지막으로, 우리는 어떻게 Google이 제공 한 APK를 생성합니다

귀하의 사용자에게 Bundletool을 오픈 소싱하는 이유는 무엇입니까? 오늘 가서 githubcom/google/bundletool을 이용하십시오 실행 파일 또는 [? 빌드?]에서 그것 출처 이제 Pierre는 다른 방법에 대해 이야기 할 것입니다 응용 프로그램을 더 작게 만들 수 있습니다

PIERRE LECESNE : 감사합니다 Google Play 동적 전송을 사용하면 우리는 헤어지는 새로운 방법을 도입하고 있습니다 앱을 별도의 기능으로 통합하여 각 사용자마다 필요합니다 레시피 앱이 있다고 가정하고 초기 다운로드를 작게 유지하려고합니다 모든 사용자가 좋아하는 동안 레시피 검색, 작은 분량 만 선택 실제로 새로운 레시피를 추가 할 수 있습니다

그리고이 기능이 앱의 중요한 공간 당신이 할 수있는 일은 그 기능을 자체 모듈로 분해하는 것입니다 필요한 때에 만 봉사하십시오 여기서 사용자를 찾는 방법을 볼 수 있습니다 앱을 엽니 다

그래서 사용자가 레서피를 추가하기를 원할 때, 그는 바닥에 작은 플러스를 클릭한다 그리고 백그라운드에서 볼 수 있습니다 모듈이 다운로드되어 설치됩니다 몇 초 후에 모듈을 사용할 수 있습니다 앱의 어느 부분에서 별도의 기능으로 탈출 하시겠습니까? 사용자 중 일부만이 기능을 사용하는 경우, 좋은 후보가 될 수 있습니다

특히 해당 기능이 앱에서 상당한 공간을 차지하는 경우 마지막으로, 사용자가 몇 초 동안 기다릴 수 있는지 고려하십시오 기능을 사용하기 전에 생성 할 기능을 결정한 후에는 이것이 앱 번들에서와 같이 보일 것입니다 기본 디렉토리 이외에도, 이제 별도의 디렉토리가 있습니다 앱의 각 모듈에 대해 이 디렉토리의 형식은 정확하게 앞에서 다룬 기본 형식과 동일합니다 Play에서 재생할 APK입니다

각 모듈에 대해 분할 세트를 생성합니다 기능 분리 및 구성으로 구성 해당 모듈을 분할합니다 Anthony는 앞에서 언급했듯이 APKS가 분리되어 소개되었습니다 Android Lollipop을 사용하여 3L 기기를 지원하고, 거절 할 모듈을 표시 할 수 있습니다 Bundletool은 지정된 APK를 생성합니다

모듈이 함께 병합되었습니다 이제 동적 기능의 작동 방식에 대해 살펴 보았습니다 내가 너를 이보에게 넘겨 주자 너는 너를 보여 줄 것이다 그것들을 만드는 법

IBRAHIM KARAHAN : 고마워, 피에르 동적 모듈을 만들려면 필요한 작업 만 수행하면됩니다 안드로이드 스튜디오 32 카나리아 다운로드 동적 기능 마법사를 사용하십시오 파일 메뉴의 새 모듈을 클릭하고, 동적 모듈을 선택하십시오

모듈 이름을 입력하면 Android Studio가 실행됩니다 새로운 동적 모듈을 만들 것입니다 수동으로 동일한 작업을 수행 할 수도 있습니다 manifest 및 buildgradle 파일을 편집하십시오

새 모듈의 매니페스트부터 시작할 것입니다 첫 번째 단계는이 모듈을 선언하는 것입니다 앱의 새로운 APK로 설정합니다 이렇게하려면 split 속성을 추가합니다 매니페스트 태그에 이름을 지정합니다

이 예제에서는 vrviewer입니다 다음 단계는 모듈 태그를 추가하는 것입니다 모듈을 선언하려고하면 모듈에 제목을 붙이십시오 이 태그는 Play 스토어에서 모듈을 식별하는 데 사용됩니다 귀하의 응용 프로그램의

그런 다음이 모듈을 주문형 모듈로 선언합니다 onDemand 특성을 추가합니다 즉,이 모듈은 사용자의 기기로 전달됩니다 앱이 Play 스토어에 앱을 요청하면 설치시 전달하는 대신 물론, 주문형 모듈은 L plus 장치에서 지원됩니다 따라서 3L 장치에서이 모듈을 제공하기로 결정한 경우, 융합 태그를 추가 할 것입니다

포함하도록 Play 스토어에 지시 이 모듈은 설치시 기본 모듈 옆에 있으며, 3L 기기 또는 범용 APK로 전송할 때 이제 buildgradle 파일을 살펴보십시오 동적 모듈부터 시작하겠습니다 첫 번째로 지금은 새로운 플러그인을 사용하고 있습니다 com

androiddynamic-feature 두 번째로 기본 모듈을 추가합니다 이 모듈에 대한 종속성으로 기본 모듈에 포함 된 기능에 액세스 할 수 있습니다 베이스의 build

gradle 파일에 필요한 유일한 변경 사항 모듈은 동적 피처 목록을 추가하는 것입니다 모든 동적 모듈 이름을이 목록에 넣으십시오 이것은 gradle이 리소스를 저장하도록 지시하는 것입니다 동적 모듈에서 사용할 수있는 기본 모듈 이제 Anthony는 어떻게 이러한 모듈을 사용할 수 있는지 보여줄 것입니다 새로운 Play Core 라이브러리로 ANTHONY MORRIS : 고마워, 아이보

그럼 어떻게 가는지 살펴 보겠습니다 온 디맨드 모듈의 설치 요청시기 당신은 그들이 설치되기를 원한다 따라서 Play 스토어와 상호 작용하려면 분할 설치 API를 도입했습니다 Play Core Library라는 새로운 라이브러리의 일부로 이제 Play Core 라이브러리는 Java 클라이언트 라이브러리입니다 장치에서 IPC를 사용하기 위해 Play와 통신합니다

그런 다음 Play 스토어에서 통신합니다 이 주문형 모듈을 Play의 서버에서 다운로드하여 당신은 그들을 요청합니다 약간의 코드를 살펴 보겠습니다 API는 동일한 작업 프레임 워크를 사용하여 구성됩니다 Google Play에서 익숙 할 것입니다

서비스 API 및 FireBase API 분할의 설치는 호출 된 클래스에 의해 조정됩니다 splitInstallManager 모든 모델로 요청을 구성합니다 다운로드하고 싶은 파일 재생을 시작하기 위해 startInstall을 호출합니다

요청한 모듈에 필요한 분할을 다운로드하십시오 API를 사용하면 수신 할 수도 있습니다 다운로드 및 설치 프로세스 전반에 걸쳐 업데이트합니다 진행 상황을 표시하고 다운로드 할 때 사용할 수 있습니다 설치 진행 상황을 사용자에게 알려주고, 온 디맨드 기능을 다운로드하기를 기다리고 있습니다

피에르 비디오에서 이걸 봤어 모듈의 주소를 다운로드 할 때 나타났습니다 대규모 모듈의 경우 사용자 확인을 받아야합니다 분할 설치 API로 다운로드하기 전에 앱이 요청할 때마다이 작업을 수행해야합니다 10 메가 바이트 이상의 온 디맨드 모듈 다운로드받을 수 있습니다

그러나 대체 옵션이 있습니다 이러한 모듈을 설치하는 데 필요하지 않은 경우 즉각적인 사용을 위해 즉각적으로 사용할 수 있으며 이것을 지연이라고합니다 설치 API 이 간단한 한 줄을 사용하여 지연된 설치를 요청하는 경우 모듈의 사용자가 편리한 시간에 다운로드 할 수 있습니다 일반적으로 사용자가 장치를 사용하고 Wi-Fi에서 충전하는 방법에 대해 설명합니다

이 때문에 우리는 더 큰 모듈을 설치할 수 있습니다 API에 의해, 사용자 확인을 요구하지 않고, 최대 100 메가 바이트 따라서 이것은 매우 사용자 친화적 인 방법입니다 앱의 대형 주문형 모듈을 다운로드 할 수 있습니다 분할 설치 API를 사용하여 귀하의 주문형 모듈

따라서 현재 어떤 모듈이 설치되어 있는지 확인할 수 있습니다 그리고 사용자가 더 이상 해당 모듈을 필요로하지 않는 경우, 모듈 제거를 요청할 수 있습니다 사용자에게 귀중한 디스크 공간 확보 기기에서 앱의 공간을 줄일 수 있습니다 이제 주문형 모듈을 설치하고 설치할 때 N Plus 기기에서는 앱을 다시 시작할 필요가 없습니다 따라서 코드는 즉시 사용할 수 있습니다

설치 완료 후 새로운 자원 및 자산 컨텍스트 개체를 새로 고치면 사용할 수 있습니다 그러나 Android L / M에서는 스플릿을 설치합니다 앱을 다시 시작해야합니다 올바르게 설치하려고합니다 하지만이를 피하기 위해 분할 컴팩트 라이브러리, 에뮬레이트하는 L / M에 스플릿 설치 앱이 백그라운드에 들어갈 때까지 우리는 올바르게 설치할 수 있습니다

그래서이 분할 컴팩트 라이브러리 앱을 다시 시작하지 않아도된다는 의미입니다 이 모듈 안에있는 거의 모든 것들 앱에서 즉시 사용할 수 있습니다 이 분할 컴팩트 라이브러리를 설정할 수 있습니다 어떻게하면 될지와 매우 유사한 방식으로 앱에서 Multidex 라이브러리를 설정하는 것에 익숙해야합니다 마지막으로 앱 업데이트를 릴리스하면 Play는 기본 모듈과 이미 설치된 모든 주문형 모듈을 포함합니다

따라서 장치에있는 모듈의 버전 항상 동기화됩니다 항상 같은 버전입니다 파트너는 이것이 실제로는 이 모델에 대해서 좋아, 그럼이 모든 걸 감싸 줘 오늘부터 모든 개발자가 Android App Bundles를 만들 수 있습니다

안드로이드 스튜디오 32 카나리아 그리고 모든 사용자에게 Play에서이를 게시 할 수 있습니다 그래서 나는 여러분 모두가 이것을 시도하고 보도록 권합니다 전환하여 앱이 얼마나 작아 질 수 있는지 안드로이드 애플 리케이션 번들로

이제 모듈화를 시작할 예정입니다 개발자들에게 앞으로 몇 개월 동안 오늘부터 모듈화 된 앱을 만들 수 있습니다 Studio Canary에 게시하고 게시 할 수 있습니다 Play 콘솔의 내부 트랙과 알파 트랙으로 이동합니다 하지만 우리는 출판과 제작을 시작할 것입니다

앞으로 몇 개월 동안 베타 버전으로 추적합니다 관심이 있으시면 관심사를 등록 할 수 있습니다 제공되는 링크에서 모듈화합니다 그리고 그걸로와 주셔서 감사합니다 질문이 있으시면 나중에 잡으실 수 있습니다

나는 우리가 지금 시간이 있다고 생각하지 않는다 또는 Sandbox에서 며칠 동안 우리를 붙잡을 수 있습니다 C, 무대 뒤 그리고 고마워 훌륭한 입출력을 가져라

[음악 재생]

The real reason Google made Android

– 안드로이드는 이제 약 10 년이되었습니다 그리고 그것은 모두 시작되었습니다

T-Mobile G1 출시로 2008 년 9 월 23 일 그러나 여기에 하나의 질문이 있습니다 구글이 왜 안드로이드 만들기를 귀찮게 했습니까? (기분 좋은, 낙관적 인 음악) 오늘 스마트 폰 전투에 대해 생각할 때 당신은 안드로이드 대 아이폰처럼 꽤 생각합니다 그리고 그것이 바로 그 방법이지만, iPhone으로 돌아 가기 전에, 아이폰이 나온 직후에도, 세상은 완전히 달라졌습니다 전화는 실제로 상대적으로 작았습니다

그들은 손바닥에 딱 맞습니다 그들 대부분은 터치 디스플레이가 없었습니다 스마트 폰을 가지고 있다면, 당신은 IT 분야, 당신은 월가에서 일했거나, 당신은 저처럼 거대한 괴상한 사람이었습니다! 어쨌든, 다음은 2007 년을 되돌아 보았습니다 블랙 베리는 좀 왕 이었어 장치가 간단했기 때문에 그들은 빠르다

그들은 초장 배터리 수명을 가졌다 Palm은 Palm OS에서 시계를 다 쓰고있었습니다 다음에 할 일을 파악하려고했습니다 노키아는 몇 가지 심비안 물건을하고 있었어 기본적으로 다른 모든 사람들 Windows 모바일 장치를 만들고있었습니다

Pocket PC에서 Windows Mobile으로 이동 마이크로 소프트가 전화기에 더 집중하기 시작했을 때, 그러나 이것은 Windows 전화가 존재하기 전에있었습니다 어쨌든, 요점은 마이크로 소프트가 복제하려고 시도했다는 것입니다 Windows PC 비즈니스 모델이지만 전화, 그래서 삼성, 모토로라, HP와 파트너쉽을 맺었다 HTC와 다른 소규모 제조업체들 그리고이 스마트 폰 중 상당수는 자란 PDA와 같은 느낌이었습니다

안테나가 부착되어 있습니다 그러나 그것은 변화하기 시작했다 아이폰이 굴러 갈 무렵 (uptempo, 재즈 음악) 바로 여기,이 원본은 모토 Q입니다 Windows Mobile을 실행했으며 2006 년에 나왔습니다

자, 나는 말하지 않는다 이 때가 가장 좋은 스마트 폰 이었어 그러나 그것은 달리기에 실제로 있었다 그것에 대해 정말 멋진 것들이 있습니다 여기에 백라이트 QWERTY 키보드가 있습니다

이 도핑 조그 다이얼이 있어요 사람들을 깨닫게 해주는 전화 중 하나였습니다 스마트 폰과 같은 그 무언가 실제로 더 많은 사람들이 이용할 수 있습니다 어쨌든, 이건 일종의 가제트 야 dorky 찾고 전화 바로 여기, 또는 더 구체적으로는 전화와 똑같습니다

그들은 Google을 생각하게 만들었습니다 그것은 안드로이드를 할 필요가있다 좋아, 그럼 왜 그걸 알아? 자, 먼저 시작하겠습니다 나는 상황의 증거를 모르겠다 이걸 좀 봐

이것은 곧입니다 그것은 안드로이드 폰의 첫 프로토 타입이었습니다 좀 친숙 해 보이는 군 그렇지? 모토 Q와 비슷해 보입니까? 아니면이 다른 전화와 비슷합니다 나중에 조금 나온 Treo Pro입니다

재미있는 사실, 나는 Palm이 정말로 나쁜 장소에있을 때 그것을 들었다 HTC에 가서 기본적으로 뭔가를 가져갔습니다 HTC는 이미 개발 중이었습니다 Windows Mobile Treo로 전환 시켰습니다 이게 가능할 수도있어

Windows Mobile Treo 장치 바로 여기 더 빨리, 어쩌면, 결국 어쩌면 변했다 어쨌든 이건 전화기 같은거야 삼성 블랙 잭 (Samsung Blackjack)과 모토 큐 (Moto Q) 마이크로 소프트가 아마 가까워지고있는 것을 보여줬다 실제로 모바일에서 무엇을하고 있었는지 알기 위해 그래서 Google은이 휴대 전화를 보았습니다 마이크로 소프트에게 총을 들이기로 결정했다

당시 애플이 아닌, Andy Rubin의 Android 회사를 인수했습니다 그리고 일해야 해 아마이 유명한 이야기를 읽었을거야 Andy Rubin이 어떻게 반응했는지 첫 번째 아이폰의 출시에 이르기까지 대서양의 한 기사에 따르면, 그는 기조 연설을보고있는 차에 있었고, 그는 아이폰을 보았을 때 "이런 젠장! "우리는 그 전화를 발송하지 않을 것"이라고 말했다

그는 강력하지 않다고 말하지 않았다 그 사람이 강하지 못해서 어쨌든, 우리가 그 전화를 안 보내겠다고했을 때, 그는 Sooner, 왜냐하면 아이폰과 비교해 보면, 이 Windows Mobile 전화처럼 보였습니다 이제 Diane Hackthron에 따르면, 당시 Google 엔지니어였습니다 그녀는 Sooner를 떨어 뜨리기로 한 결정이 아이폰 발표 이전에 좋았습니다

우리는 꽤 오랫동안 그것을 계속 사용했지만, 내부적으로 개발, 유일하게 준 안정적인 하드웨어 플랫폼 이었기 때문에 우리가 가진 것 어떤 이야기의 버전이 사실이든, 최종 결과는 이것이었습니다 꿈이라는 코드 인 HTC G1은, 그것은 상업적으로 사용 가능한 최초의 전화였습니다 Android를 실행 한 사람 그리고 그것은 1 년 후에 공개되었고 아이폰 이후에 약간의 변화가 있었다 이제는 조만간에 비해 훨씬 더 발전합니다

예를 들어 터치 스크린이 있습니다 Windows Mobile 전화와 비교 그것은 또한 꽤 고급 느낌 그것은 당신이 입력 할 수있는 풍경 키보드를 가지고, 이 시원한 조수가 플립 업을 찾고있어 스크롤볼이 있어요 SD 카드를 넣을 수도 있습니다

이것은 슈퍼 가제트 가젯이며, 그것을 사용하여, 그것을보고, 당신은 정말로 그들이 더 집중되어 있다고 말할 수 있습니다 비즈니스 사용자를 얻고 Windows Mobile을 사용하는 방법 그들이 아이폰을 훔치려 고 시도했던 것보다 그래서 나는 이것이 모든 상황적인 증거라고 인정합니다 아마도 실제 증거를 원할 것입니다 그리고 정말 좋은 증거가 무엇인지 압니까? 실제 증거

구글의 전 CEO는 말했다 안드로이드가 윈도우 모바일을 채택하고 있었다 지난 10 년간 수행 된 대규모 기술 재판 중 하나 Google 대 Oracle이었습니다 증언을 얻으므로 기술 시험은 훌륭합니다 증인석에서 임원을 사귈 수 있습니다

질문에 대답해야합니다 그리고 오라클은 정말로 이야기 할 필요가있었습니다 안드로이드 초기에 대해 증명할 수 있습니다 배심원 재판 절차의 사본이 여기에 있습니다 2012 년 4 월 24 일부터 Oracle v

Google 오라클의 변호사가 Eric Schmidt에게 질문하고 있습니다 Android의 기원에 대해 그리고 에릭 슈미트 (Eric Schmidt) "우리는 Microsoft의 제품에 대해 상당히 우려했습니다 "지금과 관련이있는 것은 어렵다 "당시 우리는 매우 우려했다 "MS의 모바일 전략이 성공적 일 것이라고 확신했다

"이것은 아이폰이 발표되기 전에였다 "아이폰 혁명이 일어나기 전에" 솔직히 말해서, 당신은 그것을 가지고 있습니다 Android가 작동하는 방식의 전체 구조 Windows Mobile을 깎을 수 있도록 설계되었습니다 삼성, LG, HTC, 기본적으로 대부분의 회사 그때 전화를 다시 만들고 있었어

윈도우 모바일 폰을 만들고 있었다 구글도 안드로이드 폰을 만들었다 그리고 나서 그것들을 기본적으로 독점적으로 만듭니다 그게 속임수 였어 그래서 전체 생태계를 가지고 있습니다

Android 휴대 전화 파트너 Google은이 모든 회사를 알고있었습니다 전화를 만들고 싶어, 그래서 운영 체제를 만들어야한다는 것을 알았습니다 그 전화는 달릴거야 Google은 휴대 전화를 원했습니다 마이크로 소프트가 데스크톱에서 가진 것, 규모

그들은 모든 전화에서 안드로이드를 원했습니다 더 많은 안드로이드 고객이 더 많은 검색을 원했기 때문에, 이는 Google에 더 많은 돈을 제공합니다 Google은 모든 돈을 벌기 때문에 검색, 이것이 바로 Android에 대한 비용입니다 Android를 무료로 제공합니다 실제로 구글은 돈을 더 벌었 다

더 많은 사람들이 사용하고 있었기 때문에 Microsoft 이로 인해 기업들은 윈도우에 대한 라이선스 비용을 지불하게되었다 결론은 만약 당신이 궁금해했다면 Android가 왜 그렇게 작동하는지, 왜 아직도 오늘날에도 이상한 단점이 있습니다 같은 메뉴와 뒤로 버튼 등 뭐든지간에, 아이폰을 보지 마라 실제로 다시 돌아봐야합니다 다시 모토 Q에서 이것이 그들이 경쟁하려했던 것이기 때문입니다

안녕 모두, 지켜봐 줘서 고마워 우리는 아마이 더 많은 역사 비디오 중 일부를 할 것입니다 그래서 내가 무슨 순간을 알려주지 관심이있는 Android의 역사에서 아니면 니가 뭘 향수하는지 알려줘 젠장,이 작은 전화기를 사랑해 너무 괴상하고 트랙볼도 있고, 헤드폰 잭도 없습니다

그래서 가져 가라, 모든 전화는 지금 만들었다, 나는, 어떻게 든 짐작한다!

Android 2.2 Official Video

>> 우리는 안드로이드 22를 발표하게 된 것을 기쁘게 생각합니다

강조하고 싶은 네 가지 영역이 있습니다 이 비디오에서 Google은 Android의 전반적인 속도와 성능을 지속적으로 개선하기 위해 노력하고 있습니다 안드로이드 22에서 새로 선보인 Dalvik JIT 컴파일러는 2 ~ 5 개의 X 성능을 제공합니다 Android 2

1에 비해 CPU 바운드 코드가 향상되었습니다 이 데모 버전의 게임 복제본 섬, CPU가 게임 시뮬레이션 스레드를 유지할 수없는 경우 화면이 빨간색으로 변합니다 초당 30 프레임 이상 여기에서 JIT가있는 Android 22 기기는 게임 시뮬레이션을 유지합니다

프레임 속도는 35 이상이고 21 장치는 30 이하로 빠르게 내려갑니다 개발자는 Android Cloud to Device Messaging을 사용하여 간편하게 알림을 활성화하고, 전화로 전송하고, 양방향으로 전송할 수 있습니다 Apps 용 동기화 기능 이 API를 사용하면 App 서버가 인증 된 메시지를 Google 서버에 보내면 사용자의 기기에있는 앱으로 메시지가 전송됩니다 이 예에서 개발자는 Android Cloud to Device Messaging을 사용하여 URL을 사용하도록 설정했습니다

데스크톱 브라우저에서 추가 전화 번호 정보로 보내면 자동으로 푸시 페이지가 열립니다 Google지도에서 적절한 응용 프로그램 앱 백업 API를 사용하면 모든 앱에서 데이터는 백업 된 후 새 장치에 설치 될 때 복원됩니다 이 기능은 제어됩니다 사용자가 기기의 자동 복원 설정을 통해 Android 2

2를 사용하는 개발자 앱이 기기의 SD 카드에 설치되기를 원하는지 여부를 지정할 수 있습니다 에 거주하는 앱 SD 카드를 사용하면 사용자는 SD 카드에서 내부 저장 공간으로 앱을 이전 할 수 있습니다 응용 프로그램 설정 관리 Android 22는 전화를 사용할 수있는 기능을 제공합니다 휴대용 핫스팟

사용자는 휴대 전화에서 휴대용 핫스팟을 활성화 한 다음 컴퓨터를 휴대용 핫스팟에 연결하여 인터넷에 액세스하십시오 우리는 브라우저를 계속 만들고 있습니다 더 빠르고 더 안드로이드 22는 V8 자바 스크립트 엔진을 소개합니다

Android 21에 비해 JavaScript 렌더링 시간이 2 ~ 3 배 개선되었습니다 너는 볼 수있어 각각의 SunSpider JavaScript 벤치마킹의 병존 시각화의 차이점 시험 결과 Android 마켓에 몇 가지 새로운 기능을 도입했습니다 사용자는 권한이 변경되지 않는 한 앱 자동 업데이트

사용자는 모든 앱을 업데이트 할 수도 있습니다 클릭 한 번으로 변경되지 않은 권한으로 애플리케이션 오류 보고서는 개발자 앱이 사용자가 제출 한 보고서를 중단시키고 정지시킵니다 이 보고서를 사용할 수 있습니다 Android 마켓 게시자 계정을 통해 개발자에게 제공됩니다 Android에 대해 자세히 알아 보려면 2

2, 저희 웹 사이트 developerandroidcom을 방문하십시오

안드로이드에서 HOMM3 HOTA를 해보자! (Play HOTA in Android device/ Click English CC)

Google "VCMI" 첫 번째 "VCMI Project"를 클릭하십시오 클릭 안드로이드 버전 주의 깊게 읽으십시오

"Daily builds"를 클릭하십시오 VCMIapk의 최신 버전을 다운로드하십시오 VCMIapk를 Android 기기로 전송 파일 탐색기에서 VCMI

apk 찾기 VCMIapk 설치 설치가 끝나면 VCMI 응용 프로그램을 한 번 실행하십시오 그런 다음 vcmi-data 디렉토리가 장치에 만들어집니다 파일 탐색기로 다시 이동하십시오 홈 디렉토리에서 "vcmi-data"폴더를 찾을 수 있습니다

vcmi-data 폴더로 이동하십시오 "Data, Mp3, Maps"폴더를 이미 전송 했으므로이 세 폴더가 장치에 없어야합니다 이 폴더는 HOMM3이 설치된 PC에서 찾을 수 있습니다 HOMM3을 가지고 있지 않다면 wwwgog

com에서 받으십시오 HOMM3이 설치된 C :로 이동하십시오 이 세 폴더는 Android 기기로 전송됩니다 ( '게임'폴더 제외) 이 폴더를 / vcmi-data로 전송합니다 HOMM3이 VCMI에서 제대로 작동하는지 확인하려면 VCMI를 실행하십시오

"VCMI 시작"을 클릭하십시오 가스로 요리! VCMI에 인터페이스 모듈을 이미 설치 했으므로 인터페이스가 달라집니다 자, HOTA 설치를 시작합시다! Android의 파일 탐색기로 돌아갑니다 VCMI 데이터 디렉토리로 이동하십시오 너의 것 안에 "Mods"폴더가 없을 것이다

귀하의 디렉토리에 그것을 확인하십시오 나는 이미이 폴더를 만들었고 몇몇 개조를했다 다시 PC로 이동하십시오 Google "vcmi mod" 이 버튼을 클릭하십시오 느린 인터넷에서 고통 받고

여기에 개조가 많이 있습니다 일부 개조자는 Android에서 제대로 작동하지 않을 수 있습니다 HOTA를 다운로드합시다 이 HOTA

zip을 확인하십시오 이 폴더 인 "hota"는 Android의 / vcmi-data / mods 폴더에 압축이 풀려 있어야합니다 안드로이드에서 / vcmi-data / mods 폴더로 간다면 "hota"폴더는이 디렉토리에 있어야합니다 나는 또한 "새로운 인터페이스"와 "트루 타입 글꼴"개조를 추가했습니다

인터페이스 모드는 잘 작동하지만 글꼴 모드는 제대로 작동하지 않습니다 VCMI를 실행 해 봅시다 설정 섹션에서 Mods로 이동하는 경우 HOTA 및 인터페이스 개조가 있습니다 VCMI를 시작합시다

네, 마침내 우리는 COVE를 할 수있을 것입니다 훌륭한!! 행운을 빕니다! 다음에 봐!