Android 開發版本大變紀錄
現在開發一個向下相容的Android App, 要注意的事情還真是"不哩啊"多~ 還好開發過程中, Android Studio會給一些提示, 告訴我們該怎麼做. 舊的Eclipse專案如果要升級App, 勢必要改(import)成gradle架構, 對於舊的build system就會變得不方便了. 最近的development tool在 25.X 版以後的不知道哪個改版(2017年的2月底三月初左右), 更新後會強制刪掉ADT和SDK Manager(Google不是說Do no evil嗎?), 所以念舊的開發者如我, 勢必要準備兩份Android SDK, 一份舊的給Eclipse用, 一分新的給Android Studio...
Level24 (Android7 / N)
Level23 (Android6.0 / Marshmallow)
1. Runtime permission: target level 23+的app 機制改成App執行時詢問權限(這點向iOS致敬了)2. 休眠(Doze) 與 App待命(App Standby)機制 : 機制的前提是關螢幕以及沒連接電源, 當連接電源或開螢幕則解除機制. (參考文)
- 休眠(或翻作打盹?)時, App : 不能用網路 / 傳統AlarmManager會延遲運作 / 不能WakeLock / 不能WiFi-scan / 不能用SyncAdapter / 不能用JobScheduler. 休眠後每隔一段時間會醒來一下下讓app做以上事情, 但休眠越久系統被喚醒(驚醒?)的間隔時間越長.
- 都沒有以下的狀態一段時候, App會變成"待命": 被啟用 / 前景運行 / 系統通知欄有訊息. 待命的App一天只被允許連一次網路.
- 用戶可設白名單讓App破除以上限制. App可跳轉到白名單設定頁, 也可以由API得知使用者有沒有把自己列為白名單.
- sdk移掉Apache HTTP Client: 要用的話要額外加回lib包
- BoringSSL取代OpenSSL lib (NDK開發者注意)
4. 硬體資訊受限:
- WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 現在OS一律回 02:00:00:00:00:00
- 先在需要使用者權限 ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION 才能取得: WifiManager.getScanResults() / BluetoothDevice.ACTION_FOUND / BluetoothLeScanner.startScan() . 舊版OS device抓新版OS device不需要設.
Level19 (Android4.4 / KitKat)
1. 提供App真正的全螢幕顯示 -- 沈浸模式 (immersive mode):以App UI的全螢幕來看 "狀態欄+導航欄"系統UI的沈浸設定, 可以知道系統UI與App UI的交互是有縮回去或是沒縮回去, 背景色是半透明還是不透明的差別; 但是 App UI的全螢幕, 還是在那裡不動, 寬高不會受影響, 只是 "狀態欄+導航欄" 到底如何呈現的差別, App UI有被擋到還是沒被擋到. 此外, Actionbar(或稱AppBar) 屬於 App UI的一部份, 這部分再視需求另外處理.
參考:
API Level & Platform Highlight
Comments
Post a Comment