Android Q 的預覽版發佈快半個月了,新一年的 Android 適配工做也要提上日程了,當前國產安卓機的系統更新愈來愈快,對及時適配的要求也就愈來愈高。根據預覽版放出的博客和已更新的文檔,咱們能夠提早準備處理一些適配的內容。html
目前看來,開發者能夠提早準備的工做包括:android
所有的 Android Q 更新內容能夠閱讀原文(android-developers.googleblog.com/2019/03/int…bash
PS:嘗試使用 Android Q beta 的話,下載完 SDK 後須要這樣配置 build.gradle:網絡
compileSdkVersion 'android-Q'
defaultConfig {
...
targetSdkVersion 'Q'
...// 目前不存在數字29哦
}
複製代碼
對於 Android 用戶來講,這是一項很是優秀的改進。自從 Android M 以來,我已經遇到許多不給讀寫外存權限就沒法使用的 App 了。結果是打開文件管理就能看到一堆亂七八糟的文件和文件夾,這對習慣本身整理存儲空間的人來講太痛苦了。異步
但讀寫外存的權限並不是必要的。經過Context.getExternalFilesDir
能夠獲取到屬於 App 自身的文件路徑,一般是~/Android/data/<package-name>/**/
。在該目錄中讀寫文件均不須要申請權限,當 App 被卸載時,該文件夾及內容也會所有刪除。測試
Android Q 中刪除了READ_EXTERNAL_STORAGE
和WRITE_EXTERNAL_STORAGE
兩項危險權限,限制 App 只能使用本身的應用空間存放文件。gradle
當 App 須要保存一些不能隨卸載刪除的文件時,須要根據存放位置動態申請新增的權限:READ_MEDIA_IMAGES
,READ_MEDIA_VIDEO
或 READ_MEDIA_AUDIO
(分別對應系統的媒體文件夾)。 比較特殊的是 Downloads 文件夾:寫入和讀取自身寫入的數據不須要申請權限,但想獲取其餘 App 存進去的文件時,必須使用系統的文件選擇器,由用戶選擇。優化
以上幾個路徑以外的全部位置均不可訪問,是否是很讓人安心呢?ui
[模擬器測試結果]
測試安裝了一個 targetSdkVersion=26 的 demo 項目,除了動態申請存儲權限時的文案以外一切都沒改變,應該是兼容了 targetSdkVersion 小於 Q 的 App。考慮到應用市場對 targetSdkVersion 要求(今年只要求到28),最晚要在明年 Android R 面世以前完成適配。google
針對全部運行在 Android Q 設備上的 App:
/proc/net
:但文檔說相關內容能夠經過NetworkStatsManager
和ConnectivityManager
獲取READ_PRIVILEGED_PHONE_STATE
去保護設備的惟一標識符。官方的解決方案是這樣:developer.android.com/training/ar…針對 targetSdkVersion 在 Android Q 的 App:
雖然聽起來不太常見,但其實不少 App 的 啓動頁都是倒計時後進入首頁的,這期間按 HOME 退出的話,就會觸發後臺啓動 Activity。若是該行爲被阻止,再次點擊應用圖標就可能卡在啓動頁進退兩難了…因此這裏應該須要增長一下對生命週期的處理吧。
可是經測試,虛擬機的系統鏡像還能正常啓動,只多了一條 Toast 提示。具體的解決方案要再等等啦。
其餘的更新內容估計要等 I/O 以後上真機調試了,就簡要描述一下吧
ACCESS_BACKGROUND_LOCATION
原文還提到了一些新特性,好比獲取圖片景深信息,神經網絡 API,新的音視頻解碼器等。若是工做中用得上相關內容就早點了解一下吧。
祝喜歡 Android 的各位工做順利~