안드로이드 Q (안드로이드 10) 변경사항

2019. 8. 5. 12:23Reviews


 

Android Q에 포함된 기능동작 변경사항

  1. Android Q에서 실행되는 앱에 영향을 줄 수 있는 시스템 변경사항을 살펴봅니다. (Behavior changes for apps)
    자세히 알아보기
    1. 모든
      1. Android Q 플랫폼에는 앱에 영향을 줄 수 있는 동작 변경이 포함되어 있습니다. 다음과 같은 동작 변경사항은 targetSdkVersion에 상관없이 Android Q에서 실행되는 모든 앱에 적용됩니다. 이러한 변경사항을 적절히 지원해야 하는 경우 앱을 테스트한 후 필요에 따라 수정해야 합니다.
  2. 앱에서 지원해야 하는 새로운 사용자 개인정보 보호 장치를 알아봅니다. (Privacy and location)
    자세히 알아보기
    1. 범위 지정 저장소 (Scoped storage)
      공유된 외부 저장소의 파일에 액세스할 때 적용되는 새로운 제한사항에 관해 알아봅니다. 대부분 앱별 디렉터리 또는 강력한 유형의 미디어 컬렉션에 있는 파일을 사용하여 작업을 완료합니다.
      자세히 알아보기
      1. Android Q 베타 4를 기준으로, Android 9(API 레벨 28) 이하를 타겟팅하는 앱은 기본적으로 이전 Android 버전의 저장소 작동 방식이 변경되지 않습니다. 기존 앱이 범위 지정 저장소를 사용하도록 업데이트할 때 새 requestLegacyExternalStorage manifest 속성을 사용하면 앱에서 Android 9 이하를 타겟팅하는 경우에도 Android Q 기기에서 앱의 새 동작을 사용 설정할 수 있습니다.
      2. 사용자에게 파일에 대한 더 많은 권한을 제공하고 파일이 복잡해지는 것을 제한하기 위해 Android Q에서는 앱이 /sdcard 경로에 저장된 파일과 같이 기기의 외부 저장소에 있는 파일에 액세스하는 방법을 변경합니다. Android Q에서는 저장소 사용자 측 런타임 권한에 해당하는 READ_EXTERNAL_STORAGE 및 WRITE_EXTERNAL_STORAGE 권한을 계속 사용합니다. 하지만 기본적으로 Android Q를 타겟팅하는 앱과 변경을 선택하는 앱에는 외부 저장소에 대한 필터링된 보기가 제공됩니다. 이러한 앱은 해당 앱별 디렉터리 및 특정 유형의 미디어만 볼 수 있으므로 앱이 추가 사용자 권한을 요청할 필요가 없습니다.
    2. 기기 위치 (App access to device location)
      포그라운드에서 앱을 사용하는 동안에만 기기 위치에 액세스를 허용하는 새로운 사용자 옵션에 관해 알아봅니다.
      자세히 알아보기
      1. Android Q 베타 4를 기준으로 이번 변경사항에는 다음 속성이 포함됩니다.
        1. 백그라운드에 있는 동안 기기 위치에 대한 액세스를 요청하는 경우 앱에 영향을 줍니다.
        2. 사용자는 백그라운드에서 기기 위치에 대한 액세스를 앱에 부여한 후 알림을 받을 수 있습니다.
        3. 백그라운드에서 위치에 액세스하는 데 새 권한을 사용하거나 백그라운드 위치 업데이트가 없을 경우 단계적 성능 저하를 확인하여 완화
        4. Android Q에서는 동작이 항상 사용됨
      2. Android Q에서는 앱이 기기 위치에 액세스할 수 있는 경우 사용자가 더 세밀하게 관리할 수 있습니다. Android Q에서 실행되는 앱에서 위치 액세스를 요청하면 사용자에게 그림 1과 같은 대화상자가 표시됩니다. 이 대화상자를 통해 사용자는 두 가지 범위로, 즉 앱을 사용하는 동안(포그라운드만 해당) 또는 항상(포그라운드 및 백그라운드) 위치 정보에 액세스할 수 있는 권한을 부여합니다.
      3. 사용자가 앱의 위치 정보 액세스를 더 세밀하게 관리할 수 있도록 Android Q에는 새로운 위치 정보 액세스 권한인 ACCESS_BACKGROUND_LOCATION이 도입되었습니다. 기존 ACCESS_FINE_LOCATION 및 ACCESS_COARSE_LOCATION 권한과 달리 새 권한은 앱이 백그라운드에서 실행되는 경우에만 앱의 위치 정보 액세스에 영향을 줍니다. 앱 활동 중 하나가 표시되거나 앱이 포그라운드 서비스를 실행 중인 경우가 아니면 앱은 백그라운드에 있는 것으로 간주됩니다.
      4. 위치에 대한 사용자 동의를 요청하는 대화상자
    3. 백그라운드 앱 시작 (Background activity starts)
      사용자 상호작용 없이 백그라운드에서 시작하는 활동에 관한 새로운 제한사항을 살펴봅니다.
      자세히 알아보기
      1. Android Q 베타 4를 기준으로 이번 변경사항에는 다음과 같은 속성이 포함됩니다.
        1. 사용자 상호작용 없이 활동을 실행하는 경우 앱에 영향을 줌
        2. 알림에서 트리거된 활동을 사용하여 완화
        3. 백그라운드 활동 시작 허용 개발자 옵션을 사용 설정하여 제한사항 사용 중지
      2. Android Q는 앱이 활동을 시작할 수 있는 경우를 제한합니다. 이 동작을 변경하면 사용자에게 발생하는 중단을 최소화할 수 있고 사용자가 화면에 표시되는 내용을 더 자세히 제어할 수 있습니다.
      3. 동작에 관한 변경사항은 Android 9(API 레벨 28) 이하를 타겟팅하는 앱을 포함하여 Android Q에서 실행되는 모든 앱에 적용됩니다. 또한 앱이 Android 9 이하를 타겟팅하고 원래 Android 9 이하를 실행하는 기기에 설치된 경우에도 이 동작 변경은 기기가 Android Q로 업그레이드된 후에 계속 적용됩니다.
      4. 하지만 사용자 상호작용의 직접적 결과로 앱이 활동을 시작하는 동안에는 앱이 이 변경사항의 영향을 받지 않을 가능성이 높습니다. 실제로 대부분의 앱은 이 변경사항의 영향을 받지 않습니다.
      5. 변경사항
        1. 경고 메시지
        2. 시간이 중요한 이벤트의 알림 만들기
          1. 우선 순위가 높은 알림
          2. 사용자에게 알림 표시
        3. 동작 변경 사용 중지
    4. 하드웨어 식별자 (Data & Identifiers)
      IMEI, 일련번호, MAC 등의 데이터와 같은 기기 하드웨어 식별자에 액세스하는 데 새로운 제한사항이 적용됩니다.
      자세히 알아보기
      1. 문서에서는 데이터 및 시스템 식별자에 액세스할 때 적용되는 여러 가지 제한사항을 설명합니다. 이 변경사항을 통해 사용자의 개인정보를 보호할 수 있습니다.
      2. 변경사항 중 일부는 Android Q에서 실행되는 모든 앱에 영향을 주지만, 다른 변경사항은 Android Q를 타겟팅하는 앱에만 영향을 줍니다.
      3. 변경사항
        1. 관심 연락처
        2. 무작위 MAC 주소
        3. /proc/net filesystem 액세스 (NetworkStatsManager / ConnectivityManager)
        4. 재설정할 없는 기기 식별자 - READ_PHONE_STATE
        5. 틀립보드 데이터 액세스
    5. 카메라 및 연결 (Camera & Connectivity)
      전체 카메라 메타데이터에 액세스하는 데 새로운 제한사항이 적용되며, 이제 여러 연결 워크플로에 세부적인 위치 정보 액세스 권한이 필요합니다.
      자세히 알아보기
      1. 문서에서는 카메라 및 연결 정보 액세스에 적용되는 몇 가지 제한사항에 관해 설명합니다. 이 변경사항을 통해 사용자의 개인정보를 보호할 수 있습니다.
      2. 변경사항 중 일부는 Android Q에서 실행되는 모든 앱에 영향을 주지만, 다른 변경사항은 Android Q를 타겟팅하는 앱에만 영향을 줍니다.
      3. 변경사항
        1. 모든 카메라 정보에 액세스하는데 권한이 필요함
        2. Wi-Fi 사용 중지 관련 제한사항
        3. Wi-Fi 네트워크 구성 제한사항
        4. 전화 통신, Wi-Fi, BT API 필요한 세부적인 위치 정보 액세스 권한 - ACCESS_FINE_LOCATION
      4. API Lists
        1. 전화 통신
          1. TelephonyManager
            1. getCellLocation()
            2. getAllCellInfo()
            3. requestNetworkScan()
            4. requestCellInfoUpdate()
            5. getAvailableNetworks()
            6. getServiceStateForSubscriber
            7. getServiceState()
          2. TelephonyScanManager
            1. requestNetworkScan()
          3. TelephonyScanManager.NetworkScanCallback
            1. onResults()
          4. PhoneStateListener
            1. onCellLocationChanged()
            2. onCellInfoChanged()
            3. onServiceStateChanged()
        2. Wi-Fi
          1. WifiManager
            1. startScan()
            2. getScanResults()
            3. getConnectionInfo()
            4. getConfiguredNetworks()
          2. WifiAwareManager
          3. WifiP2pManager
          4. WifiRttManager
        3. 블루투스
          1. BluetoothAdapter
            1. startDiscovery()
            2. startLeScan()
            3. LeScanCallback()
    6. 권한 (Permission)
      1. 문서에서는 권한 모델에 대한 여러 가지 변경사항을 설명합니다. 이 변경사항은 사용자 개인정보 보호를 향상하기 위해 적용됩니다.
      2. Android 9(API 수준 28) 이하를 타겟팅하는 경우에도 Android Q에서 실행되는 모든 앱에 영향을 주는 변경사항은 다음과 같습니다.
      3. 변경사항
        1. 화면 콘텐츠에 대한 제한 액세스
          1. READ_FRAME_BUFFER, CAPTURE_VIDEO_OUTPUT, CAPTURE_SECURE_VIDEO_OUTPUT
          2. MediaProjection API
        2. 레거시 앱에서 사용자 표시 권한 확인
          1. Google Play에 앱을 게시하려면 Android 8.0(API 레벨 26) 이상을 타겟팅해야 합니다.
          2. 앱에서 Android 5.1(API 수준 22) 이하를 타겟팅하는 경우 아래 그림과 같이 Android Q에서 앱을 처음 실행할 때 권한 화면이 사용자에게 표시됩니다.
        3. 실제 활동 감지
          1. Android Q는 사용자의 걸음 수를 인식하거나 걷기, 자전거 타기, 자동차로 이동하기와 같은 사용자의 신체적 활동을 분류해야 하는 앱에 사용할 새 ACTIVITY_RECOGNITION 런타임 권한을 도입했습니다. 이 권한은 설정에서 기기 센서 데이터가 사용되는 방식을 사용자에게 보여 주도록 설계되었습니다.
          2. Activity Recognition API와 같이 Google Play 서비스에 있는 일부 라이브러리에서는 사용자가 앱에 이 권한을 부여한 경우에만 결과를 제공합니다.
        4. UI에서 제거된 권한 그룹
  3. 폴더블, 공유, 연결, 미디어, NNAPI, 생체 인식 등을 위한 API를 알아봅니다. (Features and APIs)
    자세히 알아보기
    1. API Difference Report
      https://developer.android.com/sdk/api_diff/q-beta3/changes.html?hl=ko
    2. 보안 기능 향상
      1. 향상 생체 인식 인증 대화상자 - FingerprintManager / BiometricPrompt
      2. APK에서 직접 삽입 DEX 코드 실행
        1. 이제 삽입된 DEX 코드를 앱의 APK 파일에서 직접 실행하도록 플랫폼에 알릴 수 있습니다. 이 옵션을 사용하면 공격자가 기기에서 로컬로 컴파일된 코드로 변조한 경우에 공격을 차단할 수 있습니다.
        2. 기능을 사용하면 앱이 시작될 때 ART에서 이전에 미리 컴파일된 네이티브 코드를 읽는 대신에 JIT 컴파일러를 사용해야 하므로 앱 성능에 영향을 줄 수 있습니다. 게시된 앱에서 이 기능을 사용할지 여부를 결정하기 전에 앱의 성능을 테스트하는 것이 좋습니다.
        3. android:useEmbeddedDex = true
          aaptOptions {
                 noCompress 'dex'
              }
  1. TLS 1.3 지원
    1. 플랫폼의 TLS 구현은 이제 TLS 1.3을 지원합니다. TLS 1.3은 성능 이점과 향상된 보안을 포함하는 TLS 표준의 주 버전입니다. 벤치마킹 결과에 따르면 TLS 1.3을 사용하면 TLS 1.2에 비해 보안 연결을 최대 40% 더 빠르게 설정할 수 있습니다.
    2. SSLContext
  2. 공개 Conscrypt API - android.net.ssl.SSLSockets
  1. 연결 기능
    1. Wi-Fi 네트워크 연결 API - WifiNetworkSpecifier
    2. 사용자 승인 우회
    3. Wi-Fi 네트워크 제안 API
      기기의 네트워크 사용자 인증 정보를 추가하여 Wi-Fi 액세스 포인트에 자동 연결할 수 있는 지원이 추가되었습니다.
    4. Wi-Fi 고성능 짧은 지연 시간 모드 개선
    5. DNS 리졸버에서 전문 검색
    6. Wi-Fi 간편 연결 - ACTION_PROCESS_WIFI_EASY_CONNECT_URI
    7. Wi-Fi Direct 연결 API 제공
  2. 통신 기능
    1. 통화 품질 개선 - IMS 품질에 대한 정보 수집 기능 추가
    2. 통화 선택 발신번호 표시 - 주소록에 없는 통화를 잠재적 스팸 전화로 식별
    3. 통화 리디렉션 서비스 API - NEW_OUTGOING_CALL 중단 > CallRedirectionService 대체
  3. 외부 저장소에 파일을 만드는 기능 개선
    1. 독점적으로 액세스 가능한 권한 추가 - IS_PENDING
    2. 디렉토리 힌트 - MediaColumns.RELATIVE_PATH / MediaColumns.DISPLAY_NAME
    3. 기기 선택
      1. 기본 공유 저장소 기기는 항상 VOLUME_EXTERNAL_PRIMARY라고 합니다. 다른 볼륨은 MediaStore.getExternalVolumeNames()를 호출하여 탐색할 수 있습니다.
      2. StorageVolume 클래스의 createAccessIntent() 메서드는 Android Q에서 지원이 중단되었으므로 외부 저장소 기기를 둘러보는 데 이 메서드를 사용해서는 안 됩니다. 이 메서드를 사용하면 Android Q 기기를 실행하는 사용자가 앱 내에서 외부 저장소에 저장된 파일을 볼 수 없습니다.
    4. 미디어 그래픽
      1. 오디오 재생 캡처
      2. 네이티브 MIDI API
      3. MediaCodecInfo 개선
    5. Thermal API 제공
    6. 카메라 이미지
      1. 흑백 카메라 지원
      2. 다이나믹 포커스 형식 0 Dynamic Depth Fromat - DDF
      3. 고효율 이미지 파일 형식 (HEIF) 제공
      4. 다중 카메라 개선 - Camera2 API
    7. 접근성 서비스 API
      1. AccessibilityNodeInfo 입력 플래그
      2. 접근성 대화상자 음성 피드백
      3. 물리적 키보드의 접근성 바로가기
      4. 소프트 키보드 컨트롤러 향상
      5. 사용자 정의 접근성 시간 제한
    8. 자동 완성 향상
      1. 호환성 관련 자동 완성 요청
      2. 사용자 이름과 비밀번호 동시에 저장
      3. 저장 UI 사용자 상호작용
      4. 데이터세트 업데이트 지원
      5. 필드 분류 향상
        1. UserData.Builder 생성자
        2. 여러 유형의 카테고리 ID 대한 매핑 허용
        3. 신용카드 번호 지원 향상
        4. 앱별 필드 분류 지원
      6. UI 시스템 제어
        1. JVMTI PopFrame 한도 지원
        2. Surface control API
        3. WebView 중단 렌더기 감지 - WebViewRederProcessClient
        4. 설정 패널
        5. 공유 향상
        6. 어두운 테마
      7. 포그라운드 서비스 유형 - foregroundServiceType

 

Android Q 베타 시작하기 

  1. Android Q 다운로드 — Pixel 기기를 등록하거나 에뮬레이터를 설정합니다.
  2. 환경 설정 — 자세한 내용은 설정 가이드에서 확인할 수 있습니다.
  3. 새로운 기능 확인 — 앱에 영향을 줄 수 있는 개인정보 보호 기능 및 동작 변경사항을 알아봅니다.
  4. 앱 테스트 — 절차를 거치면서 문제를 찾아봅니다.
  5. 앱 업데이트 — 가능한 경우 Q를 타겟팅하고 베타 채널 또는 기타 그룹을 통해 사용자를 대상으로 테스트합니다.