Android 10(29)適配方案簡要說明
1、根據(jù)Google官方文檔說明,Android10引入了大量變更
官方文檔:https://developer.android.google.cn/about/versions/10/highlights?hl=zh_cn
1.1、Android 10 中的隱私權(quán)變更
1.1.1重大隱私權(quán)變更
分區(qū)存儲
針對外部存儲的過濾視圖踪央,可提供對特定于應(yīng)用的文件和媒體集合的訪問權(quán)限 訪問和共享外部存儲中的文件的應(yīng)用 使用特定于應(yīng)用的目錄和媒體集合目錄
增強了用戶對位置權(quán)限的控制力
僅限前臺權(quán)限毕贼,可讓用戶更好地控制應(yīng)用對設(shè)備位置信息的訪問權(quán)限 在后臺時請求訪問用戶位置信息的應(yīng)用 確保在沒有后臺位置信息更新的情況下優(yōu)雅降級
使用 Android 10 中引入的權(quán)限在后臺獲取位置信息
系統(tǒng)執(zhí)行后臺 Activity
針對從后臺啟動 Activity 實施了限制 不需要用戶互動就啟動 Activity 的應(yīng)用 使用通知觸發(fā)的 Activity
不可重置的硬件標(biāo)識符
針對訪問設(shè)備序列號和 IMEI 實施了限制 訪問設(shè)備序列號或 IMEI 的應(yīng)用 使用用戶可以重置的標(biāo)識符
無線掃描權(quán)限
訪問某些 WLAN、WLAN 感知和藍牙掃描方法需要獲得精確位置權(quán)限 使用 WLAN API 和藍牙 API 的應(yīng)用 針對相關(guān)使用場景請求?ACCESS_FINE_LOCATION?權(quán)限
1.1.2更多隱私權(quán)變更
標(biāo)識符和數(shù)據(jù):針對硬件標(biāo)識符(如 IMEI巡蘸、序列號、MAC 和類似數(shù)據(jù))實施了新限制擂送。
?移除了聯(lián)系人親密程度信息
?隨機分配 MAC 地址
?對 /proc/net 文件系統(tǒng)的訪問權(quán)限實施了限制
?對不可重置的設(shè)備標(biāo)識符實施了限制
?限制了對剪貼板數(shù)據(jù)的訪問權(quán)限
?保護 USB 設(shè)備序列號
攝像頭和連接性: 針對攝像頭元數(shù)據(jù)和連接 API 提供了更強大的保護措施悦荒。 ?對訪問攝像頭詳情和元數(shù)據(jù)的權(quán)限實施了限制
?對啟用和停用 WLAN 實施了限制
?對直接訪問已配置的 WLAN 網(wǎng)絡(luò)實施了限制
?一些電話 API、藍牙 API 和 WLAN API 需要精確位置權(quán)限
權(quán)限 :針對權(quán)限模型和要求的一些變更嘹吨。
?限制對屏幕內(nèi)容的訪問
?面向用戶的權(quán)限檢查(針對舊版應(yīng)用)
?身體活動識別
?從界面中移除了權(quán)限組
1.2影響應(yīng)用的行為變更
文檔:https://developer.android.google.cn/about/versions/10/behavior-changes-all?hl=zh_cn
限制非 SDK 接口: 為了幫助確保應(yīng)用的穩(wěn)定性和兼容性搬味,Android 平臺開始限制應(yīng)用在 Android 9(API 級別 28)中使用非 SDK 接口。Android 10 包含更新后的受限制非 SDK 接口列表(基于與 Android 開發(fā)者之間的協(xié)作以及最新的內(nèi)部測試)蟀拷。我們的目標(biāo)是在限制使用非 SDK 接口之前確保有可用的公開替代方案碰纬。
手勢導(dǎo)航: 從 Android 10 開始,用戶可以在設(shè)備中啟用手勢導(dǎo)航问芬。用戶啟用后悦析,手勢導(dǎo)航會影響設(shè)備上的所有應(yīng)用,無論應(yīng)用是否以 API 級別 29 為目標(biāo)平臺此衅。例如强戴,如果用戶從屏幕邊緣向內(nèi)滑動,系統(tǒng)會將該手勢解讀為“返回”導(dǎo)航挡鞍,除非應(yīng)用針對屏幕的相應(yīng)部分明確替換該手勢骑歹。
NDK 方面的變更
?共享對象不得包含文本重定位
?Bionic 庫和動態(tài)鏈接器路徑變更
?系統(tǒng)二進制文件/庫會映射到只執(zhí)行內(nèi)存
安全方面的變更
??TLS 1.3 默認處于啟用狀態(tài)
?TLS 不信任使用 SHA-1 簽名的證書
?KeyChain 行為變更和改進
?其他 TLS 和加密更改
WLAN 直連廣播
在 Android 10 中,以下與 WLAN 直連相關(guān)的廣播不具有粘性:
WIFI_P2P_CONNECTION_CHANGED_ACTION
WIFI_P2P_THIS_DEVICE_CHANGED_ACTION
如果的應(yīng)用依賴于在注冊時接收這些廣播(因為其之前一直具有粘性)墨微,請在初始化時使用適當(dāng)?shù)?get() 方法獲取信息道媚。
WLAN 感知功能?
Android 10 擴大了支持范圍,現(xiàn)在可以使用 WLAN 感知數(shù)據(jù)路徑輕松創(chuàng)建 TCP/UDP 套接字翘县。要創(chuàng)建連接到 ServerSocket 的 TCP/UDP 套接字最域,客戶端設(shè)備需要知道服務(wù)器的 IPv6 地址和端口。這在之前需要通過頻外方式進行通信(例如使用 BT 或 WLAN 感知第 2 層消息傳遞)炼蹦,或者使用其他協(xié)議(例如 mDNS)通過頻內(nèi)方式發(fā)現(xiàn)羡宙。而借助 Android 10,可以將此類消息作為網(wǎng)絡(luò)設(shè)置的一部分進行傳遞掐隐。
Go 設(shè)備上的 SYSTEM_ALERT_WINDOW
在 Android 10(Go 版本)設(shè)備上運行的應(yīng)用無法獲得 SYSTEM_ALERT_WINDOW 權(quán)限狗热。這是因為繪制疊加層窗口會使用過多的內(nèi)存钞馁,這對低內(nèi)存 Android 設(shè)備的性能十分有害。
如果在搭載 Android 9 或更低版本的 Go 版設(shè)備上運行的應(yīng)用獲得了 SYSTEM_ALERT_WINDOW 權(quán)限匿刮,則即使設(shè)備升級到 Android 10僧凰,也會保留此權(quán)限。不過熟丸,尚不具有此權(quán)限的應(yīng)用在設(shè)備升級后便無法獲得此權(quán)限了训措。
如果 Go 設(shè)備上的應(yīng)用發(fā)送具有 ACTION_MANAGE_OVERLAY_PERMISSION 操作的 intent,則系統(tǒng)會自動拒絕此請求光羞,并將用戶轉(zhuǎn)到設(shè)置屏幕绩鸣,上面會顯示不允許授予此權(quán)限,原因是它會減慢設(shè)備的運行速度纱兑。如果 Go 設(shè)備上的應(yīng)用調(diào)用 Settings.canDrawOverlays()呀闻,則此方法始終返回 false。同樣潜慎,這些限制不適用于在設(shè)備升級到 Android 10 之前便已收到 SYSTEM_ALERT_WINDOW 權(quán)限的應(yīng)用捡多。
關(guān)于以舊版 Android 系統(tǒng)為目標(biāo)平臺的應(yīng)用的警告
在搭載 Android 10 或更高版本的設(shè)備上,如果用戶首次運行以 Android 5.1(API 級別 22)或更低版本為目標(biāo)平臺的應(yīng)用铐炫,則會看到警告垒手。如果此應(yīng)用要求用戶授予權(quán)限,則系統(tǒng)會先向用戶提供調(diào)整應(yīng)用權(quán)限的機會倒信,然后才會允許此應(yīng)用首次運行科贬。
由于 Google Play 的目標(biāo) API 方面的要求,用戶只有在運行最近未更新的應(yīng)用時才會看到這些警告堤结。對于通過其他商店分發(fā)的應(yīng)用唆迁,我們也將于 2019 年引入類似的目標(biāo) API 方面的要求鸭丛。如需詳細了解這些要求竞穷,請參閱在 2019 年擴展目標(biāo) API 級別方面的要求。
移除了 SHA-2 CBC 加密套件
以下 SHA-2 CBC 加密套件已從平臺中移除:
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
這些加密套件不如使用 GCM 的類似加密套件安全鳞溉,并且大多數(shù)服務(wù)器要么同時支持這些加密套件的 GCM 變體和 CBC 變體瘾带,要么二者均不支持。
應(yīng)用使用情況的變更
?UsageStats 應(yīng)用使用情況方面的改進 - 當(dāng)在分屏或畫中畫模式下使用應(yīng)用時熟菲,Android 10 現(xiàn)在能夠使用 UsageStats 準(zhǔn)確地跟蹤應(yīng)用使用情況看政。此外,Android 10 可以正確地跟蹤免安裝應(yīng)用的使用情況抄罕。
?按應(yīng)用開啟灰度模式 - Android 10 可針對各個應(yīng)用設(shè)置灰度顯示模式允蚣。
?按應(yīng)用開啟干擾模式 - Android 10 可以選擇性地將應(yīng)用設(shè)置為“干擾模式”,此時系統(tǒng)會禁止顯示其通知呆贿,并且不會將其顯示為推薦的應(yīng)用嚷兔。
?暫停和播放 - 在 Android 10 中森渐,暫停的應(yīng)用無法播放音頻。
HTTPS 連接變更
如果在 Android 10 上運行的應(yīng)用將 null 傳遞給 setSSLSocketFactory()冒晰,則會出現(xiàn) IllegalArgumentException。在以前的版本中,將 null 傳遞給 setSSLSocketFactory() 與傳入當(dāng)前的默認 SSL 套接字工廠效果相同少辣。
android.preference 庫已棄用
從 Android 10 開始厂抽,將棄用 android.preference 庫。開發(fā)者應(yīng)該改為使用 AndroidX preference 庫蒋情,這是 Android Jetpack 的一部分埠况。如需獲取其他有助于遷移和開發(fā)的資源,請查看經(jīng)過更新的設(shè)置指南以及我們的公開示例應(yīng)用和參考文檔棵癣。
ZIP 文件實用程序庫變更
Android 10 對 java.util.zip 軟件包(用于處理 ZIP 文件)中的類進行了以下變更询枚。這些變更會讓庫的行為在 Android 和使用 java.util.zip 的其他平臺之間更加一致。
?Inflater
在以前的版本中浙巫,如果在調(diào)用 end() 之后調(diào)用 Inflater 類中的某些方法金蜀,這些方法會拋出 IllegalStateException。在 Android 10 中的畴,這些方法會改為拋出 NullPointerException渊抄。
?ZipFile
在 Android 10 及更高版本中,如果所提供的 ZIP 文件不包含任何文件丧裁,則 ZipFile 的構(gòu)造函數(shù)(采用的參數(shù)類型為 File护桦、int 和 Charset)不會拋出 ZipException。
?ZipOutputStream
在 Android 10 及更高版本中煎娇,如果 ZipOutputStream 中的 finish() 方法嘗試為不包含任何文件的 ZIP 文件寫入輸出流二庵,則此方法不會拋出 ZipException。
攝像頭變更
很多使用攝像頭的應(yīng)用都會假定如果設(shè)備采用縱向配置缓呛,則物理設(shè)備也會處于縱向催享,正如攝像頭方向中所述。在過去可以做出這樣的假定哟绊,但隨著可用的設(shè)備類型(例如可折疊設(shè)備)的擴展因妙,這一情況發(fā)生了變化。針對這些設(shè)備做出這樣的假定可能導(dǎo)致相機取景器的顯示產(chǎn)生錯誤的旋轉(zhuǎn)和/或縮放票髓。
以 API 級別 24 或更高級別為目標(biāo)平臺的應(yīng)用應(yīng)該明確設(shè)置 android:resizeableActivity攀涵,并提供必要的功能來處理多窗口操作。
電池用量跟蹤
從 Android 10 開始洽沟,只要在發(fā)生重大充電事件之后拔下設(shè)備電源插頭以故,SystemHealthManager 就會重置其電池用量統(tǒng)計信息。一般來說裆操,重大充電事件指的是設(shè)備電池已充滿怒详,或者設(shè)備電量從幾乎耗盡變?yōu)榧磳⒊錆M鳄乏。
在 Android 10 之前,無論何時拔下設(shè)備電源插頭棘利,無論電池電量有多微小的變化橱野,電池用量統(tǒng)計信息都會重置。
Android Beam 已棄用
在 Android 10 中善玫,我們正式棄用了 Android Beam水援,這是一項舊版功能,可通過近距離無線通信 (NFC) 在多個設(shè)備之間啟動數(shù)據(jù)共享茅郎。我們還棄用了一些相關(guān)的 NFC API蜗元。Android Beam 仍可供需要的設(shè)備制造商合作伙伴使用,但它已不再處于積極的開發(fā)階段系冗。不過奕扣,Android 仍將繼續(xù)支持其他的 NFC 功能和 API,并且從標(biāo)簽和付款中讀取數(shù)據(jù)等使用場景仍將繼續(xù)按預(yù)期執(zhí)行掌敬。