안드로이드용 네이티브 SDK로 안드로이드 파이 지원

이 주제에서는 Android용 브라이트코브 네이티브 SDK에서 Android Pie 사용에 대해 배우게 됩니다.

개요

Android Pie는 최신 Android OS이며 2018 년 8 월 6 일에 공식적으로 출시되었습니다. 기능에 대한 자세한 내용은 Android Pie 기능문서. Android Pie에는 몇 가지 동작 변경 사항이 포함되어 있습니다. 대부분은 Android Pie (API 레벨 28)를 대상으로하는 앱에 영향을 주지만, Android Pie 기기에서 실행되는 이전 Android 버전을 대상으로하는 앱에서도 문제가 발생할 수 있습니다.

안드로이드 9 파이
안드로이드 9 파이

Android 용 Brightcove SDK를 사용할 때 알아야 할 몇 가지 변경 사항이 있습니다.

앱 동작 변경의 전체 목록은모든 앱의 동작 변경문서. Android Pie를 대상으로 할 때 독점적 인 동작 변경 사항은 API 28+의 동작 변경문서.

기본적으로 활성화 된 TLS

TLS (전송 계층 보안)는 컴퓨터 네트워크를 통해 보안 통신을 제공하기위한 프로토콜입니다. TLS는 HTTP 위에 구현되어 HTTPS를 통한 암호화 된 통신을 허용합니다.

Google이 Android Marshmallow (API 레벨 23)를 출시했을 때 일반 텍스트 트래픽을 비활성화하는 구성을 제공하여 앱이 명확한 HTTP 요청을 만들지 못하게했습니다. Android Pie (API 레벨 28) 출시와 함께 일반 텍스트 트래픽은 기본적으로 사용 중지됩니다.

기본적으로 일반 텍스트 트래픽이 비활성화 된 상태에서 애플리케이션이 일반 HTTP 요청을 시도하면 다음 메시지와 함께 IOException이 발생합니다.

Exception: IOException java.io.IOException: Cleartext HTTP traffic to * not permitted

자세한 내용은 Google 웹 사이트를 방문하십시오. 프레임 워크 보안 변경네트워크 보안 구성 .

앱이 Android Pie (API 레벨 28) 이상을 대상으로하는 경우 앱이 예상대로 작동하도록이 동작 변경을 처리해야합니다. 여기에는 다음과 같은 세 가지 방법이 있습니다.

HTTPS 전용

한 가지 옵션은 모든 네트워크 요청이 HTTPS를 사용하는지 확인하는 것입니다. 이렇게 하려면 다음과이 같이 하십시오.

  1. 안전한 통신을 위해 CDN을 사용하도록 설정합니다.

    • Video Cloud 고객 (집 CDN 또는 기명 CDN을 사용하든 상관없이) 은 브라이트코브 계정 관리자에게 문의하여 계정이 HTTPS를 통해 전송되도록 구성되었는지 확인해야 합니다.
    • 원격 자산을 사용하는 사용자는 CDN을 적절하게 구성해야 할 수 있습니다.

  2. 보안 통신을 사용하여 미디어 콘텐츠를 전달할 수 있습니다. 여기에는 동영상, 광고, 자막, 포스터 이미지, 미리보기 이미지 및 기타 타사 API 연결이 포함됩니다.

    • 비디오 클라우드 고객: Playback API를 사용하여 각 자산에 대한 보안 프로토콜을 검색합니다. Android 용 Brightcove SDK는 사용 가능한 경우 기본적으로 HTTPS를 선택합니다.

    • 브라이트코브 플레이어 고객: 미디어 콘텐츠가 HTTPS를 통해 전송되는지 확인합니다.

모든 도메인에 대한 HTTP

앱은 모든 도메인에 대해 명확한 HTTP 트래픽을 사용할 수 있습니다. 다음은이를 수행하는 방법에 대한 두 가지 예입니다.

애플리케이션 태그 업데이트

  1. 이를 활성화하려면 AndroidManifest파일에 다음 줄을 추가하십시오. application꼬리표. 예:

    <application
       android:name="mypackage.MyApplication"
       android:usesCleartextTraffic="true">
    …
    </application>

네트워크 보안 구성 파일 추가

  1. XML 파일 (예: network-security-config.xml ) 을 만들고입술/XML디렉토리에 추가합니다. 명확한 트래픽을 허용하는 방법은 다음 예를 참조하세요.

    <network-security-config>
       <base-config cleartextTrafficPermitted="true"/>
    </network-security-config>
  2. 아래 그림과 같이안드로이드 매니페스트에서파일 이름을 설정하십시오:

    <application
     android:name="mypackage.MyApplication"
     android:networkSecurityConfig="@xml/network_security_config">
    …
    </application>

    자세한 내용은 Android의네트워크 보안 구성문서를 참조하십시오.

특정 도메인 용 HTTP

일반 HTTP 요청을 사용하도록 허용 할 특정 도메인을 지정할 수 있습니다. 이렇게 하려면 다음과이 같이 하십시오.

  1. XML 파일 (예: network-security-config.xml ) 을 만들고입술/XML디렉토리에 추가합니다. 도메인 설정 방법은 다음 예를 참조하십시오.

    <network-security-config>
     <domain-config cleartextTrafficPermitted="true">
         <domain includeSubdomains="true">c.brightcove.com</domain>
         <domain includeSubdomains="true">solutions.brightcove.com</domain>
     </domain-config>
    </network-security-config>
  2. 아래 그림과 같이안드로이드 매니페스트에서파일 이름을 설정하십시오:

    <application
     android:name="mypackage.MyApplication"
     android:networkSecurityConfig="@xml/network_security_config">
    …
    </application>

    자세한 내용은 Android의네트워크 보안 구성문서를 참조하십시오.

Apache HTTP 클라이언트 지원 중단

Android Pie에서는 Apache HTTP 클라이언트 지원이 제거되었습니다. 이는 Android Pie 이상을 대상으로하는 앱에 영향을줍니다. 비표준을 사용할 때 이전 버전의 Android를 대상으로하는 앱에도 영향을 미칠 수 있습니다. ClassLoader . 런타임에ClassLoader Android Pie에서 Apache HTTP 클라이언트 클래스를로드하려고 시도하면NoClassDefFoundError . 자세한 내용은 Google의 : Apache HTTP 클라이언트 지원 중단문서.

앱에서 Brightcove FreeWheel 플러그인을 사용하는 경우이 문제가 발생하고 다음과 같은 예외가 발생합니다.

java.lang.NoClassDefFoundError: tv.freewheel.utils.URLLoader
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/impl/client/BasicCookieStore;

이 문제를 해결하려면 앱의 매니페스트 파일에 다음 줄을 포함하세요.

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

더 이상 사용되지 않는 상수

에서 더 이상 사용되지 않는 몇 가지 상수가 있습니다. ConnectivityManager수업. 이러한 상수 중 일부는 현재 Brightcove SDK, 특히 오프라인 재생 및 오프라인 분석 기능에서 사용됩니다. 목록은 다음과 같습니다.

  • android.net.ConnectivityManager.TYPE_BLUETOOTH
  • android.net.ConnectivityManager.TYPE_ETHERNET
  • android.net.ConnectivityManager.TYPE_MOBILE
  • android.net.ConnectivityManager.TYPE_VPN
  • android.net.ConnectivityManager.TYPE_WIFI
  • android.net.ConnectivityManager.TYPE_WIMAX

이는 언급 된 기능의 기능에 영향을 미치지 않지만 이러한 상수는 향후 Android OS 버전에서 제거 될 수 있습니다. 이는 Brightcove Native SDK에도 적용됩니다.