概覽
Android Pie是最新的Android操作系統,已於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 以進行安全通訊。
- 視訊雲端客戶 (無論您是使用房屋 CDN 還是具名的 CDN) 都應該聯絡他們的 Brightcove 客戶經理,確保帳戶設定為透過 HTTPS 交付。
-
對於那些使用遠程資產的人,您可能需要適當地配置您的 CDN。
-
使用安全通訊傳遞您的媒體內容。這包括影片、廣告、字幕、海報圖片、縮圖和其他第三方 API 連線。
-
視訊雲端客戶:使用播放 API 擷取每個資產的安全通訊協定。適用於Android的Brightcove SDK在可用時默認情況下會選擇HTTPS。
- 布萊特灣玩家顧客:請確認您的媒體內容是透過 HTTPS 傳送。
-
適用於所有域的HTTP
您的應用可以對所有域使用清晰的HTTP流量。以下是兩個有關如何執行此操作的示例:
更新應用程序標籤
-
要啟用此功能,請打開Android清單文件,然後在
application
標籤。例如:<application android:name="mypackage.MyApplication" android:usesCleartextTraffic="true"> … </application>
添加網絡安全配置文件
-
創建一個 XML 文件,例如 network-security-config.xml ,並將其添加到 RE /xml 目錄中。請參閱以下示例,了解如何允許清除流量:
<network-security-config> <base-config cleartextTrafficPermitted="true"/> </network-security-config>
-
如下圖所示在您的 Android 資訊清單中設置文件名:
<application android:name="mypackage.MyApplication" android:networkSecurityConfig="@xml/network_security_config"> … </application>
如需詳細資訊,請參閱 Android 的網路安全性設定文件。
特定域的HTTP
您可以指定允許使用明確HTTP請求的某些域。為此,請按照下列步驟操作:
-
創建一個 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>
-
如下圖所示在您的 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。