개요
Android Pie는 최신 Android OS이며 2018 년 8 월 6 일에 공식적으로 출시되었습니다. 기능에 대한 자세한 내용은 Android Pie 기능문서. Android Pie에는 몇 가지 동작 변경 사항이 포함되어 있습니다. 대부분은 Android Pie (API 레벨 28)를 대상으로하는 앱에 영향을 주지만, Android Pie 기기에서 실행되는 이전 Android 버전을 대상으로하는 앱에서도 문제가 발생할 수 있습니다.
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를 사용하는지 확인하는 것입니다. 이렇게 하려면 다음과이 같이 하십시오.
-
안전한 통신을 위해 CDN을 사용하도록 설정합니다.
- Video Cloud 고객 (집 CDN 또는 기명 CDN을 사용하든 상관없이) 은 브라이트코브 계정 관리자에게 문의하여 계정이 HTTPS를 통해 전송되도록 구성되었는지 확인해야 합니다.
-
원격 자산을 사용하는 사용자는 CDN을 적절하게 구성해야 할 수 있습니다.
-
보안 통신을 사용하여 미디어 콘텐츠를 전달할 수 있습니다. 여기에는 동영상, 광고, 자막, 포스터 이미지, 미리보기 이미지 및 기타 타사 API 연결이 포함됩니다.
-
비디오 클라우드 고객: Playback API를 사용하여 각 자산에 대한 보안 프로토콜을 검색합니다. Android 용 Brightcove SDK는 사용 가능한 경우 기본적으로 HTTPS를 선택합니다.
- 브라이트코브 플레이어 고객: 미디어 콘텐츠가 HTTPS를 통해 전송되는지 확인합니다.
-
모든 도메인에 대한 HTTP
앱은 모든 도메인에 대해 명확한 HTTP 트래픽을 사용할 수 있습니다. 다음은이를 수행하는 방법에 대한 두 가지 예입니다.
애플리케이션 태그 업데이트
-
이를 활성화하려면 AndroidManifest파일에 다음 줄을 추가하십시오.
application
꼬리표. 예:<application android:name="mypackage.MyApplication" android:usesCleartextTraffic="true"> … </application>
네트워크 보안 구성 파일 추가
-
XML 파일 (예: network-security-config.xml ) 을 만들고입술/XML디렉토리에 추가합니다. 명확한 트래픽을 허용하는 방법은 다음 예를 참조하세요.
<network-security-config> <base-config cleartextTrafficPermitted="true"/> </network-security-config>
-
아래 그림과 같이안드로이드 매니페스트에서파일 이름을 설정하십시오:
<application android:name="mypackage.MyApplication" android:networkSecurityConfig="@xml/network_security_config"> … </application>
자세한 내용은 Android의네트워크 보안 구성문서를 참조하십시오.
특정 도메인 용 HTTP
일반 HTTP 요청을 사용하도록 허용 할 특정 도메인을 지정할 수 있습니다. 이렇게 하려면 다음과이 같이 하십시오.
-
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>
-
아래 그림과 같이안드로이드 매니페스트에서파일 이름을 설정하십시오:
<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에도 적용됩니다.