他們都沒告訴你適配 Android N 需要注意什么
Android N 這次的新特性包括多窗口的支持、通知欄支持直接回復消息、對部分廣播的后臺限制、網絡數據節省開關等,并不多,也有很多翻譯文章已經介紹。
這里主要分享對 Android N 的適配大家可能要注意什么。文末雜談帶阿里騰訊保障員工買房相關的福利介紹。
還記得 6.0 對 Apache Http 庫的廢除導致的應用崩潰嗎?還記得 6.0 中 MAC id 始終返回為空導致的唯一 id 混合生成算法大幅失效嗎?
1. Android 中 Java 的實現向 OpenJDK 8 遷移
Android 是站在 Linux 和 Java 肩膀上快速成長的,在運行時依賴 Oracle JDK,早在 2010 年甲骨文就起訴谷歌侵權 Java。在 N 中 Google 采用 OpenJDK 8 作為 Java 的實現,在 Java 實現上的一些差別可能導致應用出問題。如:
(1) ArrayList 實現中的私有屬性 array 被移除
反射使用該屬性的需要注意下。
(2) 隨機數種子調用可能出錯
Crypto 安全提供商在 OpenJDK 中不提供,而它在大家調用 SecureRandom.setSeed() 設置隨機種子時會用到,OpenJDK 中需要通過 SecretKeySpec 去直接加載原始密鑰或者使用真正的密鑰導出函數。
有了解 OpenJDK 8 與 Oracle JDK 更多實現差別的歡迎留言。
PS:(1) 記得 2014 年 InfoQ 大會上 Oracle 的人介紹 Java 8 的特性,當時還在想 Android 現在依賴 JDK6.0 什么時候才能到 8,現在終于等到了這一天,可惜不是你..
(2) Kotlin 還有機會嗎?
2. JNI 中不允許調用非公有 API
JNI 中不允許調用非公有 API,由于命名空間的變化,在 Android N 上運行會崩潰,需要切換到對應公有 API。
3. “老人機的適配”
Android N 允許用戶設置顯示密度,有點像老人機模式。需要測試 App 在 sw320dp 密度下顯示是否正常,及配置變更后應用是否會有異常。
4. 后臺優化——三個廣播被禁止監聽或發送
(1) CONNECTIVITY_CHANGE 廣播
對 targetVersion 設置為 Android N 的 App,在后臺時不再能接收到 CONNECTIVITY_CHANGE 廣播,前臺不影響。
(2) ACTION_NEW_PICTURE 和 ACTION_NEW_VIDEO 廣播
所有運行在 Android N 上的 App 不能發送或是接收新增圖片(ACTION_NEW_PICTURE)和新增視頻(ACTION_NEW_VIDEO) 的廣播。
5. 權限改動
(1) GET_ACCOUNTS 權限被廢棄
對 targetVersion 設置為 Android N 的 App,GET_ACCOUNTS 權限被廢棄。
(2) 增加 ACTION_OPEN_EXTERNAL_DIRECTORY 權限
這個感覺就是對部存儲設備寫權限的保護,需要用戶同意,說不定以后就慢慢廢棄 WRITE_EXTERNAL_STORAGE 權限了。
6. 更嚴格的 Doze 模式
大家知道在 Android 6.0 中,在手機關屏且靜止時,Doze 模式通過推遲 CPU 和網絡操作延長底池壽命。而 Android N 則在手機關屏時就會一定程度限制 CPU 和網絡操作,進入 Doze 模式一段時間后進一步限制 WakeLock、Alarm、GPS 和 Wi-Fi 掃描等,做好迎接休眠狀態下更多功能受限導致的 bug 吧,哈哈。
7. 自帶 ICU4J 庫的子集
更方便 App 的全球化了
雜談:
(1) 今天下午就有傳聞阿里集團(僅上市業務,與某蟻某鳥無關)準備在杭州買地蓋樓,房價是市場價的六折,哈哈,剛看了下該文章已經被刪除。
不管怎么說,這是個好福利,希望更多優秀人才來杭州。
早在 2011 年騰訊、阿里就相繼宣布正式啟動“安居計劃”和“iHome”計劃,為員工提供無息貸款買房。
騰訊三年以上員工在一線城市可免息貸款 50w,除此外城市為 25w,六年內還清。阿里是兩年以上員工可免息貸 20w,三年以上為 30w,雙職工可最多貸 40w,五年內還清。
隨后京東以及當年中國版 非死book 都相繼出了類似福利。
(2) 有媒體報道菜鳥集團即將完成百億人民幣融資,估值 400 億人民幣。
螞蟻金服擬融資 31 億美元,估值或達 500 億美元,在小米最新估值跌到 280 億,螞蟻超過百度躋身 BAT 只是時間的問題,而且不會太久。這么大盤子哪天領跑 BAT 也不是沒有可能。
不用羨慕,他們都在招 Android,而且 codeKK 上有他們的內推。具體可見:http://j.codekk.com/
來自: http://www.trinea.cn/android/android-n-adaptation/