Android O의 새로운 자동 완성 프레임워크는 비밀번호 관리자의 접근성 서비스와 관련된 오랜 지연 문제를 해결합니다.
구글이 출시한 지 벌써 한 달이 지났다. 최초의 Android O 개발자 미리보기 (시간이 정말 빨리 지나갑니다!) Android의 새 버전과 마찬가지로 자세히 알아볼 내용이 많습니다. 우리는 출판했습니다 기사가 많다 이미 Android O에 대해 설명했지만, 마땅한 관심을 받지 못했다고 생각되는 기능이 하나 있습니다. 자동완성 프레임워크.
Android O에서 자동 완성
요즘에는 비밀번호 관리자가 아주 많습니다(비록 우리는 오픈 소스 KeePass의 일부), 하지만 Google이 공식적으로 비밀번호 관리자를 지원하는 것은 Android O에서만 가능합니다. Android O를 사용하면 타사 애플리케이션이 새로운 자동 완성 프레임워크를 통해 앱과 통신하는 자동 완성 서비스 롤을 채울 수 있습니다. 표준을 사용하는 앱 보다 요소는 기본적으로 자동 완성 프레임워크와 함께 작동하지만 개발자가 수행할 수 있는 추가 단계가 있습니다. 자동 완성을 위해 최적화 앱의 사용자 정의 뷰가 자동 완성될 수 있도록 합니다.
자동 완성 가능한 뷰에 초점이 맞춰지면 자동 완성 프레임워크는 자동 완성 요청을 호출합니다. 자동 완성 서비스는 사용자가 선택할 수 있는 특정 자동 완성 데이터 세트(예: 사용자 이름, 비밀번호, 주소, 신용 카드 번호 등)를 다시 전송하여 응답합니다. 자동 완성 서비스는 사용자가 설정 --> 앱 및 알림 --> 기본 앱 --> 자동 완성 앱에서 지정합니다.
위의 새로운 자동 완성 프레임워크에 대한 설명은 요청하는 앱과 자동 완성 서비스 종료 시 발생하는 상황에 대한 간략한 요약일 뿐입니다. 여기서 이해하는 데 가장 중요한 것은 Android O에서 자동 완성이 작동하는 방식에 대한 정확한 세부 정보가 아니라 비밀번호 관리자 앱 자체는 더 이상 보기가 자동 완성될 수 있는 시기 감지를 처리하지 않습니다..
추천 도서: AgileBits는 Android O의 자동 완성 프레임워크가 어떤 모습인지 보여줍니다.
Android O 이전 자동 완성
이를 Android O 이전의 자동 완성 작동 방식과 비교해 보세요. 비밀번호 관리자가 보기가 자동 완성될 수 있는 시기를 감지하는 공식적인 방법이 있기 전에는 각각의 애플리케이션은 자동 완성 가능한 항목을 찾기 위해 현재 보기를 스캔하는 접근성 서비스를 구현해야 했습니다. 필드.
그러나 접근성 서비스를 사용하면 상당한 지연이 발생함 특정 조건에서. 그러나 일반적인 비밀번호 관리자의 접근성 서비스와 관련된 지연은 너무나 명백하여 LastPass와 같은 인기 있는 서비스에서도 지원 페이지 문제에 관해서 올라왔습니다. 이러한 지원 페이지는 일반적으로 지원으로 인한 과도한 지연을 처리할 수 있는 유일한 방법을 알려줍니다. 접근성 서비스는 접근성 서비스를 비활성화하거나 자체 사용자 정의 입력을 사용하도록 전환하는 것입니다. 방법. 어느 쪽이든 자동 완성 기능이 상실됩니다.
그런데 정확히 LastPass의 접근성 서비스나 다른 비밀번호 관리자의 접근성 서비스가 그렇게 많은 지연을 일으키는 것처럼 보이는 이유는 무엇입니까? 그 이유는 이러한 비밀번호 관리자가 접근성 서비스를 활용하여 입력 필드를 감지하는 방식 때문입니다. 접근성 서비스의 속성 에 정의되어 있습니다. XML 리소스 파일 APK 파일을 디컴파일하여 서비스가 어떻게 작동하는지 확인할 수 있습니다.
다음은 LastPass APK를 디컴파일하여 가져온 리소스 파일입니다.
"@string/accessibility_service_description"
android: accessibilityEventTypes="typeViewFocused|typeWindowContentChanged"
android: accessibilityFeedbackType="feedbackGeneric"
android: notificationTimeout="200"
android: accessibilityFlags="flagReportViewIds"
android: canRetrieveWindowContent="true"
android: canRequestEnhancedWebAccessibility="true"
xmlns: andro />
이를 통해 다음 정보를 수집할 수 있습니다. LastPass의 접근성 서비스는 모니터링할 두 가지 이벤트 유형(TYPE_VIEW_FOCUSED 및 TYPE_WINDOW_CONTENT_CHANGED)을 요청합니다. 이는 앱/웹페이지의 콘텐츠가 변경되거나 초점이 맞춰지는 시기를 알아야 하기 때문에 수행되며, 그런 다음 현재 창 콘텐츠를 검색하여 비밀번호 입력 필드를 찾습니다. 그러나 서비스가 매우 자주 발생하는 두 개의 접근성 이벤트에 대해 지속적으로 이 작업을 수행하므로 지연이 발생합니다. 접근성 서비스로 인해 지연이 발생하는 방식에 대한 더 자세한 내용은 해당 문제에 대한 이전 기사를 참조하세요.
추천 도서: "의도한 대로 작동" - Android의 접근성 지연에 대한 탐구
안드로이드 O, 일석이조로 두 마리의 새를 죽인다
Android O 이전에는 이러한 지연을 완화하기 위해 비밀번호 관리자 개발자가 할 수 있는 일이 많지 않았습니다. 그 이유는 비밀번호 관리자가 접근성 서비스를 활성화하여 지속적으로 모니터링하지 않으면 자동 완성 가능한 입력 필드가 화면에 언제 나타나는지 알 수 없기 때문입니다. 하지만 Android O의 새로운 자동 완성 프레임워크 덕분에 이제 이러한 비밀번호 관리자는 접근성 서비스를 중단할 수 있습니다. 대신 데이터 입력이 필요한 앱은 자동 완성 프레임워크에 자동 완성 서비스를 호출하여 데이터를 보내도록 요청합니다. 이 새로운 프레임워크 덕분에 사용자는 더 이상 비밀번호에 의존할 필요가 없기 때문에 비밀번호 입력이 훨씬 쉬워졌습니다. 추가 입력 방법이 있지만 비밀번호 관리자의 접근성 서비스 활성화와 관련된 지연은 과거.
여러분 중 일부에게는 이 사실이 획기적인 것이 아닐 수도 있다는 것을 알고 있습니다. 그러나 접근성 서비스에 대한 논의가 너무 조용했기 때문에 이 주제를 다시 불붙일 가치가 있었을 것이라고 생각했습니다. 이번 주말에는 생각할 거리가 있습니다!
Android O의 새로운 자동 완성 프레임워크에 대해 어떻게 생각하시나요? 아래 댓글로 알려주세요!