Android Q의 범위 지정 저장소는 개발자가 SAF를 사용하도록 강요하는데, 이는 짜증나는 일입니다.

click fraud protection

Android Q의 범위 지정 저장소 변경 사항은 현재 저장소 액세스 프레임워크에 몇 가지 결함이 있기 때문에 처리하기 어려운 문제입니다.

Android Q는 휴대전화의 저장 공간이 작동하는 방식을 근본적으로 바꾸고 있습니다. Pie까지의 모든 버전에서 Android의 저장소는 데스크톱 컴퓨터처럼 작동했습니다. 원하는 앱을 사용하여 파일을 읽거나 쓸 수 있습니다(앱에 권한을 부여한 경우). Q를 통해 Google은 "범위 지정 저장소,'를 사용하면 Android가 iPhone처럼 작동하게 되어 저장 공간이 각 앱마다 분리됩니다. 앱은 자체 파일에만 액세스할 수 있으며 앱을 제거하면 모든 파일이 삭제됩니다.

다행히도 Android Q는 중앙 파일 시스템의 Android 원래 동작 중 일부를 여전히 유지하고 있습니다. 안타깝게도 이제 사용자가 앱에 액세스하도록 설정하는 것이 번거롭고 성능과 기능이 크게 저하되었습니다. 그리고 개발자는 이를 지원하기 위해 앱을 실질적으로 다시 코딩해야 합니다.

일반 파일 시스템 액세스가 필요한 앱(예: Office 제품군, 이미지 편집기 또는 파일 관리자는 이제 '저장소 액세스 프레임워크" (SAF), 모든 파일 작업에 사용됩니다. SAF는 Android 5.0 Lollipop부터 사용 가능했지만, 어렵고 취약한 부분이 있어 개발자들은 꼭 필요한 경우가 아니면 사용하지 않는 경향이 있습니다. 문서화된 API, 열악한 사용자 경험, 열악한 성능, 열악한 안정성(주로 장치 공급업체별 구현 형태로 나타남) 문제). SAF로 전환하는 데 어려움이 있어 Google에서는 아직 SAF를 표시하지 않는 앱을 ​​허용하기로 결정했습니다. Android Q 지원은 예전처럼 작동하지만 Play 스토어에서 모든 앱이 Q를 지원하도록 요구하면 변경됩니다. 내년.

SAF를 통해 사용자가 직면하는 가장 확실한 변화는 앱에 저장소 액세스 권한을 부여하는 경험입니다. 앱이 액세스하려면 OS에 요청한 다음 디렉터리 선택 화면을 표시합니다. 이 화면에서 사용자는 해당 앱이 파일을 읽고 쓸 수 있는 폴더 계층 구조의 루트를 선택합니다. 사용자는 로컬 파일에 대한 액세스가 필요한 각 앱에 대해 이 프로세스를 수행해야 하며, 외부 SD 카드에 대한 액세스 권한도 부여해야 하는 경우 앱당 두 번 수행해야 합니다.

Google은 최소한 이 프로세스를 개선했습니다. Q 베타 3, 이전 베타에서는 앱이 사용자가 선택할 위치를 제안하는 것을 허용하지 않았기 때문에 사용자가 꽤 많은 작업을 수행해야 함 실제로 기기의 기본 저장소를 찾으려고 합니다.

파일 I/O 성능은 SAF에서 다소 저하되지만 가장 두드러진 문제는 파일에 있습니다. 디렉토리 작업은 기존 파일 액세스보다 25~50배 정도 느립니다. 파이. 파일 관리자의 경우 이는 검색 및 스토리지 사용량 계산을 수행하는 데 훨씬 더 오랜 시간이 걸린다는 것을 의미합니다. 데모 앱에 대한 버그 보고서는 다음과 같습니다. 여기에서 사용 가능합니다.

SAF를 사용하는 기존 파일 I/O API 간의 성능 차이를 보여주는 SAFTest의 샘플 테스트 실행입니다.

더 큰 성능 문제는 일부 앱이 작업을 수행하기 전에 파일을 로컬 "범위 지정 저장소" 영역에 복사해야 한다는 것입니다. 이러한 파일의 크기가 여러 기가바이트인 경우 문제가 될 수 있습니다. 비디오 파일이나 압축된 아카이브의 경우. 많은 Android 앱은 개발자 커뮤니티에서 엄청나게 많은 오픈 소스 Java 라이브러리를 활용하며, 이러한 라이브러리가 작동하려면 일반적으로 직접적인 파일 시스템 액세스가 필요합니다. 이는 Android 전용이 아니며 SAF와 작동하려면 다시 작성해야 합니다. 더 나쁜 것은 패키지 관리자나 zip API와 같은 많은 Android 자체 내부 라이브러리가 작동하지 않는다는 것입니다. 예를 들어, 파일 관리자는 전체 APK를 자체 범위 저장소 영역에 먼저 복사하지 않으면 (표준 Android API를 사용하여) APK 파일의 아이콘을 표시할 수도 없습니다. 버그 보고서.

기술적으로 관심이 있는 사람들의 경우 현재 appops 명령을 사용하여 ADB를 통해 앱별로 Android Q의 '범위 지정 저장소'를 비활성화할 수 있습니다. 루트 사용자는 데스크톱 컴퓨터 없이 자신의 장치에서 직접 명령을 실행할 수 있습니다. 이러한 명령은 문서에 개발자 기능으로 설명되어 있으므로 언제든지 제거될 수 있습니다.

앱에 대한 일반 저장소 액세스를 활성화합니다.

adb shell cmd appops set your-package-name android: legacy_storage allow && \adb shell am force-stop your-package-name

앱에 대한 일반 저장소 액세스를 비활성화합니다.

adb shell cmd appops set your-package-name android: legacy_storage default && \adb shell am force-stop your-package-name

Google은 이러한 변경으로 인한 보안 및 개인 정보 보호 이점을 강조하지만 기술적으로는 개선이 없습니다. Android 1.0부터 앱에는 파일을 비공개로 저장할 수 있는 기능이 있었으며 거의 ​​모든 앱이 이 기능을 활용합니다. SAF를 통해 저장소의 루트 디렉터리에 대한 액세스 권한을 앱에 부여하면 해당 앱은 모든 파일을 읽고, 쓰고, 보낼 수 있습니다. Pie에서 저장소에 대한 액세스 권한을 앱에 부여했을 때와 똑같은 방식으로 사악한 개발자에게 접근하기를 원합니다.

유일한 "보안 개선"은 이제 사용자가 이 작업을 수행하는 것이 더 힘든 프로세스이기 때문에 발생합니다. 물론 앱이 귀하가 보유한 사진이나 비디오와 같은 가장 개인적인 정보만을 훔치려는 경우는 제외됩니다. Google은 간단한 팝업 클릭 예 보안을 사용하는 대체 액세스 솔루션을 추가했습니다. 대화.

이러한 변화를 통해 Google이 얻고자 하는 이점이 무엇인지는 알려져 있지 않습니다. Android Q 베타 문서에 공식적으로 명시된 이유는 "사용자에게 파일에 대한 더 많은 제어권을 제공하고 파일을 제한하기 위한 것입니다." 어지럽게 흩어져 있는 것." 현재 형태의 범위 지정 저장소는 사용자가 수행할 수 있는 작업에 대한 새로운 제한 사항이며, 제어. 혼란을 줄인다는 주장은 다소 타당할 수 있지만 이는 변경으로 인해 파일 사용 기능이 전혀 감소하기 때문입니다. 그리고 이제 일부 앱이 작동하기 위해 파일을 복제해야 하는 문제를 고려하면 "복잡함"이 증가합니다.

Google이 사용자에게 파일과 혼란에 대한 더 많은 제어권을 제공하는 데 진심으로 관심이 있다면 현재 Android Q 디자인을 그렇게 허위로 브랜드화하는 대신 이 문제를 직접적으로 해결하는 솔루션입니다. 개선. 가장 간단한 대답은 사용자가 기존 저장소 권한 요청 대화 상자를 사용하여 앱에 범위 지정 또는 일반 파일 시스템 액세스 권한을 부여할지 여부를 결정하도록 하는 것입니다. 여기서 잘못된 결정을 내리는 사용자에 대한 특별한 우려 사항이 있는 경우 다음을 수행하는 것이 가능합니다. 해당 대화 상자를 더욱 눈에 띄게 만들고 앱을 전체 승인하려면 추가 사용자 상호 작용이 필요합니다. 입장.

Android가 사용자에게 파일에 대한 더 많은 제어권을 부여하는 방법에 대한 답은 실제로 사용자에게 더 많은 제어권을 부여하는 것이지, 이를 빼앗아 Android 플랫폼의 기능을 근본적으로 제한하는 것이 아닙니다.


편집자 주: 이 기사는 XDA 선임 회원이 작성한 게스트 기사입니다. 티베크, 그의 작업으로 가장 잘 알려져 있습니다. FX 파일 탐색기. 이 기사의 내용은 XDA-Developers의 편집장인 Mishaal Rahman의 입력과 편집을 최소화하여 Android Q의 범위 지정 저장소 제한에 대한 자신의 의견과 분석을 반영합니다. 우리는 이러한 우려 사항 중 일부에 대해 문의하기 위해 Google에 연락했지만 게시 시점까지 회사로부터 답변을 받지 못했습니다.