安卓餅支持與本地 SDK 的安卓

在本主題中,您將了解如何使用 Android 餅與布萊特灣原生 SDK 的 Android。

概覽

Android Pie是最新的Android操作系統,已於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 以進行安全通訊。

    • 視訊雲端客戶 (無論您是使用房屋 CDN 還是具名的 CDN) 都應該聯絡他們的 Brightcove 客戶經理,確保帳戶設定為透過 HTTPS 交付。
    • 對於那些使用遠程資產的人,您可能需要適當地配置您的 CDN。

  2. 使用安全通訊傳遞您的媒體內容。這包括影片、廣告、字幕、海報圖片、縮圖和其他第三方 API 連線。

    • 視訊雲端客戶:使用播放 API 擷取每個資產的安全通訊協定。適用於Android的Brightcove SDK在可用時默認情況下會選擇HTTPS。

    • 布萊特灣玩家顧客:請確認您的媒體內容是透過 HTTPS 傳送。

適用於所有域的HTTP

您的應用可以對所有域使用清晰的HTTP流量。以下是兩個有關如何執行此操作的示例:

更新應用程序標籤

  1. 要啟用此功能,請打開Android清單文件,然後在application標籤。例如:

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

添加網絡安全配置文件

  1. 創建一個 XML 文件,例如 network-security-config.xml ,並將其添加到 RE /xml 目錄中。請參閱以下示例,了解如何允許清除流量:

    <network-security-config>
       <base-config cleartextTrafficPermitted="true"/>
    </network-security-config>
  2. 如下圖所示在您的 Android 資訊清單中設置文件名:

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

    如需詳細資訊,請參閱 Android 的網路安全性設定文件。

特定域的HTTP

您可以指定允許使用明確HTTP請求的某些域。為此,請按照下列步驟操作:

  1. 創建一個 XML 文件,例如 network-security-config.xml ,並將其添加到 RE /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. 如下圖所示在您的 Android 資訊清單中設置文件名:

    <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"/>

不建議使用的常數

有幾個常量在連接管理器類。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本機SDK。