Android 手機適配過程中遇到的一些問題
手機適配,看到這幾個字,無論作為android 新手還是有幾年開發經驗的你,相信內心都會有稍微的一絲悸動。是的,相容性問題一直是困擾著我們開發者的一個世紀星難題,即使一個有豐富開發經驗的開發者,遇到這個問題相信也是先眉頭一緊,安卓手機不僅螢幕型別多,作業系統多,關鍵不同作業系統的手機廠商還不一樣,你很可能發現兩個手機,作業系統都是4.4的,為甚麼介面和操作風格差這麼大,因為中國的手機廠商像華為,小米,魅族等等,都是有自己的一套作業系統,雖然同樣是安卓4.4,但他們對原始碼的修改程度都不相同,導致一個應用在這個手機上執行的好好地,在別的手機上就有可能出現意想不到的問題,所以android開發很大一部分工作就是手機適配,這裡不僅包括UI上的適配,還有程式碼執行過程中出現的不同手機上的各種奇葩問題。下面就講一下,最近我在手機適配過程中遇到的問題。
一款app手機適配的機型原則上選取市面上最近三年生產的手機,我們公司測試選取了將近20幾款手機,有api不同的,最低版本選取到了17,向下相容到4.2,再往下的手機都年代久遠了,不考慮支援。有解析度不同的,這個比較常規不做過多解釋,還有不同廠商的,包括華為,魅族,小米,中興等等。
遇到的問題大概分為以下幾種:
1.比較常規的螢幕適配:
包括UI上,字型大小,間距等等,解決辦法是要在dimens資原始檔中宣告,圖片上要在不同的drawable下放置不同大小的圖片。
2.作業系統不同:
最基本的,如果你gradle下配置的api為19,那麼你的程式在安卓4.2上的手機上安裝絕對是解析包錯誤,解決辦法是將你的app下的gradle.build中的minSdkVersion向下調低點到17。到時這樣就導致你的程式中一些方法報紅,提示Call requires API is 19 (current min is 17),如果繼續執行的話還可以編譯成功,但如果不做處理的話,執行到4.2作業系統是,呼叫到該方法是會直接導致程式崩潰。
3.6.0許可權問題
6.0系統為了保護使用者的隱私安全,對授予許可權做了修改,不是通過在AndroidManifest下宣告許可權的方式就可以了,而需要在程式碼中動態的申請許可權。
4.手機廠商
不同手機廠商作業系統都是定製的,導致手機下拉狀態列的顏色也是不同的,主要分為兩種,黑色的背景色白色的通知字型色,還有相反的白色背景色和黑色的字型色,如果你的訊息是自定義佈局通知的話,就要做好顏色的相容適配,否則有的手機就會出現白色的背景色出現了白色的字型色,導致通知欄一片白色,顯示區分不明顯。解決方法參考這裡http://blog.csdn.net/u011200604/article/details/52470770很全面。
5.手機效能
跟手機反應快慢也有關係,例如一個下拉重新整理反應慢的可能出現下拉重新整理和上拉載入的方法同時呼叫的情況,導致資料出現異常。這種可以讓重新整理和載入同步,在重新整理的時候禁掉載入。
這是我在適配過程中遇到的一些問題,當然適配的工作遠不止這些,相信你也遇到過各種奇葩的適配問題,歡迎留言一塊兒討論。
6.部分手機webview載入圖片失敗
這種情況產生的原因是原本你的webView載入的是https的連結,而這個連結裡面包含了一個http連結的圖片,結果導致有的手機載入失敗,即使設定了webViewClient,重寫了裡面的onReceiveSslError方法,設定了handler.proceed()忽略證書也不行,在紅米note3,圖片載入失敗。
解決辦法:設定webview載入允許http,https混合模式
WebSettings settings = getSettings();
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);//設定開啟混合模式