Google의 Android 엔지니어링 팀은 Android 11에 관한 질문에 답하기 위해 Reddit에서 AMA를 주최했습니다. 다음 Android OS 버전에 대해 알아낸 내용은 다음과 같습니다.
어제 구글이 출시했습니다. 안드로이드 11 베타 2, 최종 SDK, NDK, 앱 지향 표면, 플랫폼 동작, 개발자를 위한 비 SDK 인터페이스 제한 사항을 제공합니다. 오늘 Google은 Reddit의 /r/AndroidDev 커뮤니티에서 Android 11과 관련된 질문에 답변하고 있습니다. 지난 주에 질문을 받은 후. 다음은 Google의 AMA(무엇이든 물어보세요)에서 배운 모든 내용을 요약한 것입니다.
Android 11의 가장 기대되는 기능 중 하나는 OS가 출시되면 사용할 수 없습니다. 9월 8일 베타 종료: 스크롤 스크린샷. 처음에는 Android 11에서 출시 예정, Google은 이제 이 기능이 "R에 적용되지 않았다"는 것을 확인했습니다. Android 11 개발자 프리뷰 1 및 모든 후속 DP 및 베타 릴리스에는 스크롤 스크린샷을 찍을 수 있는 자리 표시자 버튼이 있습니다. 숨겨진 개발자 명령으로 수동으로 표시됨, 그러나 버튼을 탭하면 해당 기능이 "구현되지 않았습니다"라는 토스트 메시지만 표시됩니다.
우리는 이 기능이 베타 버전이나 안정 버전으로 출시되길 바랐지만 그런 일은 일어나지 않을 것 같습니다.
이 소식은 일부 사용자에게는 당연히 당황스러울 것입니다. 결국 많은 OEM이 수년 동안 자체 소프트웨어에 이 기능을 탑재해왔는데, Google이 Pixel 휴대전화에 이 기능을 추가하는 데 왜 그렇게 오랜 시간이 걸리나요? Google 시스템 UI 팀의 Dan Sandler가 설명했듯이 문제는 Google이 이를 올바르게 수행하기를 원한다는 것입니다. 일부 스크롤 스크린샷 구현은 단순히 스크롤을 에뮬레이트한 다음 화면이 움직일 때 여러 스크린샷을 함께 연결합니다. Android에서 UI 자동화를 다뤄본 적이 있다면 Sandler 씨가 언급한 것처럼 앱이 항상 작동하는 것은 아니라는 점을 알게 될 것입니다. "늪지대 표준 RecyclerView를 사용하거나 자체 OpenGL 가속 스크롤 엔진을 구현했습니다." 구글이 계획하고 있기 때문에 Pixel 스마트폰뿐만 아니라 전체 Android 생태계에 대해 AOSP의 일부로 이 기능을 구현하려면 다음을 확인해야 합니다. 효과가 있을 거야
모두 단지 "특정 기기에서 직접 선택한 하나 또는 두 개의 앱"이 아닙니다.팀은 특히 발생하는 문제로 인해 "[그들의] 제한된 자원에 집중"해야 했기 때문입니다. 코로나19로 인해 팀은 향후 Android 릴리스를 위해 백버너에 스크롤 스크린샷을 추가하기로 결정했습니다.
사용자에게 백그라운드 제한 사항을 알리는 새로운 CDD 요구 사항
많은 Android OEM, 특히 중국 OEM이 백그라운드에서 실행되는 앱에 대해 공격적인 제한을 두고 있다는 것은 비밀이 아닙니다. 일부 개발자는 자신의 앱이 백그라운드에서 종료되는 것에 너무 좌절하여 함께 뭉쳐서 ''라는 웹사이트를 만들었습니다.내 앱을 죽이지 마세요"백그라운드 앱 프로세스를 얼마나 제대로 처리하는지에 따라 OEM 순위를 매깁니다. 같은 개발자들 최근에도 벤치마크를 한 적이 있다 사용자는 기기가 백그라운드에서 앱을 얼마나 적극적으로 종료하는지 테스트할 수 있습니다. 많은 OEM이 백그라운드 앱 프로세스를 종료하는 것을 좋아하는 이유는 복잡하지만 Redditor /u/의 이 댓글에서 가장 잘 설명될 수 있다고 생각합니다.아마도 의심스러운. 이 댓글은 중국 내 안드로이드 앱 개발의 복잡한 상황과 중국 기술 기업들이 어떻게 상황을 더욱 복잡하게 만드는 데 관여하고 있으며 Google 서비스 부족이 지속적인 문제에 어떻게 기여하는지 엉망.
그럼에도 불구하고, 많은 앱 개발자들은 Android 플랫폼 동작에 대한 이러한 변경으로 인해 당연히 좌절감을 느꼈고, 이로 인해 개발자들이 의견을 제시하게 되었습니다. Google에 대해 무엇을 하고 있는지 물어보세요. Reddit AMA 상단으로 이동하세요. Google의 답변은 다음과 같습니다.
이 응답에서 빼내야 할 몇 가지 사항이 있습니다. 첫째, Google은 OEM이 적용하는 백그라운드 앱 제한 사항에 대해 사용자에게 더욱 투명해지기를 원합니다. (출시되지 않은) Android 11 호환성 정의 문서(CDD)를 확인한 결과 섹션 3.5 - API 동작 호환성에 다음 제안된 추가 사항을 발견했습니다.
앱을 제한하는 독점 메커니즘을 구현하고 해당 메커니즘이 AOSP의 '희귀' 대기 버킷보다 더 제한적인 기기 구현은 다음을 충족해야 합니다.
[C-1-5] 앱 제한사항이 앱에 자동으로 적용되는 경우 사용자에게 알려야 합니다(MUST). (신규) 그러한 정보는 그러한 제한이 적용되기 24시간 이전에 제공되어서는 안 됩니다.
(참고) 강제 정지는 "희귀"보다 더 제한적인 것으로 간주되며 새로운 3.5.1/C-1-5를 포함하여 3.5.1의 모든 요구 사항을 준수해야 합니다.
기본적으로 Google은 OEM이 제한적인 앱 종료 기능을 구현하는 것을 막지 않습니다. OEM은 앱 제한이 자동으로 적용되는 경우에만 사용자에게 알리도록 요구하고 있습니다. OEM은 배터리를 많이 소모하는 백그라운드 앱의 실행을 중단한다는 대화 상자를 표시할 수 있습니다. 사용자는 실제로 백그라운드에서 실행하고 싶은 앱도 인식하지 못한 채 동의할 수 있습니다. 체하는! Google은 앱이 백그라운드에서 예기치 않게 종료되는 경우를 처리할 책임을 개발자에게 부여하고 있습니다. 실제로 Reddit 댓글은 계속해서 새로운 "앱 프로세스 종료 이유" 앱이 사용자나 OS에 의해 종료되었는지, 아니면 단순히 충돌이 발생했는지 개발자에게 알려줄 수 있는 API입니다.
반면, Google은 특정 권한 있는 애플리케이션이 백그라운드 앱 제한을 우회하도록 허용하는 OEM의 불공정 관행을 마침내 해결하고 있습니다. 개발자가 작성한 이 매체 게시물 티모시 아시임웨 WhatsApp, Facebook 및 기타 앱과 같은 앱에 대해 자세히 설명하면 일부 OEM 소프트웨어의 엄격한 백그라운드 제한에서 자동으로 면제됩니다. 구글은 "기기 제조업체가 상위 앱에 대한 허용 목록을 생성하지 않도록 요구한다"고 밝혔습니다. 이것이 어떻게 시행될지는 모르지만, OEM은 마침내 앱의 규모에 관계없이 타사 개발자를 동등한 입장에서 대해야 한다는 사실을 아는 것이 좋습니다. 이다.
마지막으로 Google은 Android 11이 어떻게 "오작동하는 앱으로 인한 악의적인 행동을 방지하기 위한 추가 조치를 추가"하여 OEM이 백그라운드 프로세스를 공격적으로 종료하는 것을 덜 유혹적으로 만들었다고 언급합니다. 그러나 회사는 이러한 "추가 조치"가 무엇인지 자세히 설명하지 않았습니다.
향상된 장치 간 백업
지난 달 우리는 Android 11 문서의 변경 사항을 발견했습니다. 더 나은 로컬 데이터 백업에 대한 지원 암시. Android 11에서는 사용자가 앱 파일의 '기기 간' 마이그레이션을 시작할 때 시스템이 API 레벨 30을 대상으로 하는 모든 앱의 허용백업 매니페스트 속성을 무시합니다. Google 직원 Eliot Stock은 이 기능이 "삼성의 탁월한 스마트 스위치 제품"과 같은 "휴대폰 제조업체가 장치 간 마이그레이션 도구를 훨씬 쉽게 구축"할 수 있도록 하기 위한 것이라고 말합니다. "사용자 관점에서 앱이 기기 간에 보다 안정적으로 전송되도록 보장합니다." 안타깝게도 이는 클라우드 기반 백업에는 적용되지 않습니다. Google은 "소프트웨어 개발자에게 무엇을 제어할 수 있는지를 제공하고 싶어하기 때문입니다. 앱 데이터에서 발생합니다." 따라서 Android 11은 Google Play 서비스에 내장된 Google 드라이브 등을 통한 모든 클라우드 기반 백업 및 복원에 대해 AllowBackup 속성을 계속 존중합니다. 지원. 마지막으로 Google은 앱당 25MB 백업 한도가 일부 개발자에게는 충분하지 않을 수 있다는 점을 인정하고 이를 해결하기 위한 방법을 모색하고 있습니다. 그러나 PC에 대한 로컬 백업은 고려되지 않으며 Google은 다음 계획을 반복합니다. adb 백업을 단계적으로 중단 향후 Android 릴리스에서.
개발자는 원활한 데이터 마이그레이션 방법을 구현하는 것이 좋습니다. 그만큼 새로운 블록 스토어 라이브러리Google ID 서비스 라이브러리의 일부인 은(는) 복원된 앱에 더 쉽게 로그인할 수 있도록 설계되었습니다. 하지만 이를 구현할지 여부를 선택하는 것은 개발자의 몫입니다. 도서관.
I/O 미리 읽기 프로세스(IORap)를 통해 더 빠른 앱 시작 속도
Google은 항상 Android의 성능을 향상시키는 방법을 실험하고 있습니다. Android 10에 추가된 잘 알려지지 않은 기능 중 하나는 USAP(Unspecialized App Process Pool)입니다. 이 기능은 앱 시작 프로세스 중에 Zygote 분기를 제거하여 Pixel 2 기기에서 평균 앱 시작 속도를 약 5ms 정도 절약합니다. 해당 기능은 현재 AOSP에서는 기본적으로 비활성화되어 있습니다., Google은 추가된 메모리 사용에 대해 여전히 테스트가 필요하다고 설명합니다. 하지만 더 흥미로운 점은 I/O 미리 읽기 프로세스(I/O Read Ahead Process)라는 Android 11의 새로운 기능입니다.IORap). 구글에 따르면, 이 기능은 "콜드 스타트업이 5% 이상 빨라지고 히어로 케이스가 20% 더 빨라집니다." 이 기능 앱 실행을 촉진하기 위해 "시작 프로세스 중에 애플리케이션 아티팩트(예: 코드 및 리소스)를 미리 가져옵니다." 속도.
Google은 또한 "부팅 클래스 경로 및 시스템 이미지를 최적화하는 데 사용되는 프로필을 개선했습니다" 이는 앱 성능을 향상시키고 시스템과 관련된 메모리 및 저장 비용을 줄입니다. 유물. 이러한 변경 사항은 대부분 더 많은 양의 RAM을 갖춘 장치에 도움이 될 것입니다. 하지만 Google은 가장 많은 이점을 얻을 수 있는 기준이 무엇인지 밝히지 않았습니다.
Android 11의 범위 지정 저장소 변경 - /다운로드에 대한 액세스가 제한되는 이유는 무엇인가요?
Android 11을 타겟팅하고 ACTION_OPEN_DOCUMENT_TREE 인텐트를 사용하여 외부의 특정 디렉터리에 대한 액세스를 요청하는 앱 저장소는 더 이상 사용자에게 외부 저장소의 루트 디렉터리(/data/media/{user})에 대한 액세스를 요청할 수 없습니다. 디렉터리(/data/media{user}/Download) 또는 외부 저장소(/Android/data 또는 /Android/obb). 다운로드 디렉터리에 대한 액세스가 제한되는 이유는 무엇입니까? Google Roxanna Aliabadi에 따르면, 다운로드 폴더가 '개인정보가 있을 위험이 가장 높기 때문'입니다. 예를 들어, 세금을 다운로드하는 사용자는 반품 또는 은행 명세서에서 앱이 지속적인 읽기 액세스를 남용할 가능성에 대해 걱정할 필요가 없습니다. 예배 규칙서. 구글은 안드로이드가 특정 폴더를 제한했음을 나타내기 위해 문서 선택기에 "텍스트가 업데이트될 것"이라고 밝혔습니다. 선택됩니다." 이렇게 하면 앱에 특정 디렉터리에 대한 액세스 권한을 부여할 수 없는 이유에 대한 혼란이 줄어들기를 바랍니다. 더 이상.
향후 범위 지정 저장소 및 Play 정책 변경 사항에 대한 자세한 내용은 다음을 참조하세요. 이 글을 참고하세요.
기타 주제
-
루팅/모딩에 대한 Google의 입장
- Google AOSP 팀의 Jeff Bailey는 선택 지원에 대한 회사의 입장을 다시 한 번 강조합니다. 구글은 "픽셀 기기 라인의 모딩/루팅이 가능하도록 계속 보장할 것"이지만, "OEM이 자사 기기를 허용하지 않도록 선택하는 것도 지원할 것입니다"라고 밝혔습니다. 또한 Google은 최근 변경된 사항과 관련하여 소프트웨어 개발자에게 "루팅된 장치에서 소프트웨어가 실행되지 않도록 허용"할 수 있는 선택권을 제공하고 있습니다. SafetyNet Attestation API의 소프트웨어 변조 감지.
-
"열고 기본값으로 설정"은 어떻게 되었나요?
- 안드로이드 10이 만들어졌습니다. 앱을 기본 핸들러로 설정하는 것은 좀 짜증나는 일입니다 Google은 "악용적인 앱"으로부터 사용자를 보호하기 위해 수행되었다고 말한 특정 링크에 대해 설명합니다. 구글이 물러섰다 이 변경 사항을 재고한 후 사용자를 보호하기 위해 "무대 뒤에서 여러 가지 변경 사항"을 적용합니다.
-
Vulkan Graphics API를 사용하여 UI를 렌더링하시나요?
- 구글은 결국 사용할 계획이다. UI를 렌더링하는 Vulkan 그래픽 API, 이는 일부 성능 향상을 가져올 것입니다. 이것은 아직도 평가중, 그러나 회사는 공유할 구체적인 내용이 없었습니다.
-
많은 장치에서 CallScreeningService가 누락되었습니다.
- Android 앱은 다음을 구현할 수 있습니다. CallScreening서비스 API 새로운 수신 및 발신 전화를 가로채서 발신자를 식별하고 전화를 수락하거나 거부할 수 있습니다. 개발자 /u/에 따르면 이는 공식적으로 문서화된 API이지만 이를 제대로 구현하지 않는 OEM이 많은 것 같습니다._zeromod_. Google 확인하다 이 API는 모든 기기가 Android 호환으로 간주되기 위해 통과해야 하는 자동화된 테스트 모음인 CTS(호환성 테스트 모음)에 의해 검증되었습니다. 어떤 이유로든 이 API는 Huawei, Vivo, Xiaomi 또는 Samsung과 같은 OEM의 장치에서 호출될 때 null을 반환하므로 이러한 OEM의 소프트웨어에 버그가 있을 가능성이 높습니다.
-
오디오 플러그인 프레임워크에 대한 계획 없음
- 한 개발자가 Google에 Apple의 Audio Units와 같은 오디오 플러그인 프레임워크를 구현할 계획이 있는지 물었지만 대답 가까운 장래에 그런 일이 일어날 가능성이 낮다는 것입니다.
Android 엔지니어링 팀의 모든 답변을 읽을 수 있습니다. 여기. 팀은 몇 가지 의견을 통해 Java, Kotlin, Android 빌드 시스템, CameraX API 및 기타 주제에 대해 약간 이야기합니다. Wear OS, Android TV, Android Auto에 대한 의견도 여러 개 있지만 Google은 대부분 반복합니다. 이러한 플랫폼에 대한 기존 작업을 확인하고 개발자에게 "휴대폰 너머의 안드로이드" 8월 10일부터 일주일.