背景
android os6,7推出後,公司的APP在市場上面反映的一些問題。初始方案在7月份已經整了一份,但是郵件發出大部分同學都看不到,這裡在部落格裡面整理後再在部門內郵件發出來。
android os6
對於6.0的幾個主要的變化,檢視檢視官網的這篇文章http://developer.android.com/intl/zh-cn/about/versions/marshmallow/android-6.0-changes.htm
這裡主要說下跟測試相關的,執行時許可權處理方面的內容
推薦閱讀官網許可權相關文章:
執行時許可權的變化及特點
6.0以下
APP在安裝的時候,根據許可權宣告產生一個許可權列表,使用者只有在同意之後才能完成app的安裝,造成了我們想要使用某個app,就要默默忍受其一些不必要的許可權(比如是個app都要訪問通訊錄、簡訊等)。
6.0以後
我們可以直接安裝,當app需要我們授予不恰當的許可權的時候,我們可以予以拒絕。當然你也可以在設定介面對每個app的許可權進行檢視,以及對單個許可權進行授權或者解除授權。
新的許可權機制更好的保護了使用者的隱私,Google將許可權分為兩類,一類是Normal Permissions,這類許可權一般不涉及使用者隱私,是不需要使用者進行授權的,比如手機震動、訪問網路等;另一類是Dangerous Permission,一般是涉及到使用者隱私的,需要使用者進行授權,比如讀取sdcard、訪問通訊錄等。
android許可權可以自行通過adb shell pm list permissions -d -g
進行檢視。
- Normal Permissions
以下是普通許可權,只需要在AndroidManifest.xml中申請即可。(這塊對測試不會有太大影響)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS android.permission.ACCESS_NETWORK_STATE android.permission.ACCESS_NOTIFICATION_POLICY android.permission.ACCESS_WIFI_STATE android.permission.ACCESS_WIMAX_STATE android.permission.BLUETOOTH android.permission.BLUETOOTH_ADMIN android.permission.BROADCAST_STICKY android.permission.CHANGE_NETWORK_STATE android.permission.CHANGE_WIFI_MULTICAST_STATE android.permission.CHANGE_WIFI_STATE android.permission.CHANGE_WIMAX_STATE android.permission.DISABLE_KEYGUARD android.permission.EXPAND_STATUS_BAR android.permission.FLASHLIGHT android.permission.GET_ACCOUNTS android.permission.GET_PACKAGE_SIZE android.permission.INTERNET android.permission.KILL_BACKGROUND_PROCESSES android.permission.MODIFY_AUDIO_SETTINGS android.permission.NFC android.permission.READ_SYNC_SETTINGS android.permission.READ_SYNC_STATS android.permission.RECEIVE_BOOT_COMPLETED android.permission.REORDER_TASKS android.permission.REQUEST_INSTALL_PACKAGES android.permission.SET_TIME_ZONE android.permission.SET_WALLPAPER android.permission.SET_WALLPAPER_HINTS android.permission.SUBSCRIBED_FEEDS_READ android.permission.TRANSMIT_IR android.permission.USE_FINGERPRINT android.permission.VIBRATE android.permission.WAKE_LOCK android.permission.WRITE_SYNC_SETTINGS com.android.alarm.permission.SET_ALARM com.android.launcher.permission.INSTALL_SHORTCUT com.android.launcher.permission.UNINSTALL_SHORTCUT
- Dangerous Permissions:
以下是危險許可權,許可權的處理跟APP測試會相關,請注意!
group:android.permission-group.CONTACTS permission:android.permission.WRITE_CONTACTS permission:android.permission.GET_ACCOUNTS permission:android.permission.READ_CONTACTS group:android.permission-group.PHONE permission:android.permission.READ_CALL_LOG permission:android.permission.READ_PHONE_STATE permission:android.permission.CALL_PHONE permission:android.permission.WRITE_CALL_LOG permission:android.permission.USE_SIP permission:android.permission.PROCESS_OUTGOING_CALLS permission:com.android.voicemail.permission.ADD_VOICEMAIL group:android.permission-group.CALENDAR permission:android.permission.READ_CALENDAR permission:android.permission.WRITE_CALENDAR group:android.permission-group.CAMERA permission:android.permission.CAMERA group:android.permission-group.SENSORS permission:android.permission.BODY_SENSORS group:android.permission-group.LOCATION permission:android.permission.ACCESS_FINE_LOCATION permission:android.permission.ACCESS_COARSE_LOCATION group:android.permission-group.STORAGE permission:android.permission.READ_EXTERNAL_STORAGE permission:android.permission.WRITE_EXTERNAL_STORAGE group:android.permission-group.MICROPHONE permission:android.permission.RECORD_AUDIO group:android.permission-group.SMS permission:android.permission.READ_SMS permission:android.permission.RECEIVE_WAP_PUSH permission:android.permission.RECEIVE_MMS permission:android.permission.RECEIVE_SMS permission:android.permission.SEND_SMS permission:android.permission.READ_CELL_BROADCASTS
dangerous permissions都是一組一組的。對於授權機制是這樣的:如果你申請某個危險的許可權,假設你的app早已被使用者授權了同一組的某個危險許可權,那麼系統會立即授權,而不需要使用者去點選授權。
比如你的app對READ_CONTACTS
已經授權了,當你的app申請WRITE_CONTACTS
時,系統會直接授權通過。此外,對於申請時彈出的dialog上面的文字說明也是對整個許可權組的說明,而不是單個許可權(ps:這個dialog是不能進行定製的)。
android內部處理:
- (1)checkSelfPermission:檢查是否擁有這個許可權
- (2)requestPermissions:請求許可權,一般會彈出一個系統對話方塊,詢問使用者是否開啟這個許可權。
- (3)shouldShowRequestPermissionRationale:Android原生系統中,如果第二次彈出許可權申請的對話方塊,會出現“以後不再彈出”的提示框,如果使用者勾選了,你再申請許可權,則shouldShowRequestPermissionRationale返回true,意思是說要給使用者一個 解釋,告訴使用者為什麼要這個許可權。然而,在實際開發中,需要注意的是,很多手機對原生系統做了修改,比如小米,小米4的6.0的shouldShowRequestPermissionRationale 就一直返回false,而且在申請許可權時,如果使用者選擇了拒絕,則不會再彈出對話方塊了。。。。 所以說這個地方有坑,可行的解決方法有,在回撥裡面處理,如果使用者拒絕了這個許可權,則開啟本應用資訊介面,由使用者自己手動開啟這個許可權。
- (4)每個應用都有自己的許可權管理介面,裡面有本應用申請的許可權以及各種狀態,即使使用者已經同意了你申請的許可權,他也隨時可以關閉
重點:
為什麼android的dangerous permissions處理會跟APP測試相關呢?
1.許可權false完全沒做處理,使用者拒絕後應用直接崩潰!
2.許可權禁用後無對應提示,一些核心功能無法正常使用!
android os7
針對android os7 目前整理了兩套選擇方案
1.使用android 模擬器測試,android avd已支援建立 android N模擬器
從使用者的角度而言,使用該模式的場景非常多。比如一邊開啟瀏覽器,一邊播放視訊;一邊開啟瀏覽器,一邊開啟郵件類app;一邊開啟瀏覽器,一邊使用社交類app。 那麼作為測試,主要關注的是: 1)我們的產品分屏時是否能正常顯示? 2)頁面縮放、無圖模式等功能能否正常使用? 3)分屏時,和其他產品互動(drag & drop)時是否會出錯?
• 全新下拉快捷開關頁
在安卓7.0中,下拉開啟通知欄頂部即可顯示5個使用者常用的快捷開關,支援單擊開關以及長按進入對應設定。
該特性對APP測試無影響
• 主屏擁有兩種設計風格可選:經典及摩登
經典風格並沒有變化;摩登風格則類似iOS。其實這個摩登風格,就是當時號稱”要去掉應用抽屜”的風格。
目前,部分app會在應用抽屜和桌面上同時生成兩個圖示,圖示的名字還有可能不一致。
1)那麼7.0是兩套桌面分開管理從而切換,還是通過調整UI進行切換? 2)如果使用者裝了這樣的應用,從經典模式切換為摩登模式的時候,圖示會不會出現重複? 3)切換時能否存在後臺app? 4)如果能,是否會導致後臺執行的app出錯? 這些都是可能出現錯誤的場景。
• 通知訊息快捷回覆和歸攏
7.0加入了全新的API,支援第三方應用通知的快捷操作和回覆。來電會以橫幅方式在螢幕頂部出現接通或結束通話;資訊/社交類應用通知可以開啟鍵盤,在輸入欄裡進行快捷回覆。同一應用的多條通知和提示訊息將歸攏為一項,點選該項可展開此前的全部通知,允許使用者對每個通知執行單獨操作。
比如在瀏覽器裡,回覆/評論某個新聞,別人給你點贊或者回復時,你會收到通知訊息。
1)那麼這個通知能否正確的歸攏和單獨操作? 2)歸攏是否有上限? 3)歸攏太多時會不會造成響應緩慢或app的崩潰? 這些使用者場景的模擬,也是測試需要關注的。
• DataSaver
該功能可以限制App的後臺流量偷跑。使用者通過設定名單,當Data Saver開啟後,名單中的App將會受到流量限制措施。同時谷歌也減少了一些影象傳輸的解析度,限制移動流媒體服務的位元速率,限制一些軟體的預快取功能(自動讀取使用者並未請求的資料)。
這個功能的出發點挺不錯,但是可以想象的到,將會帶來一系列的問題: 1)比如使用者後臺下載,流量被限制了,可能過了幾個小時還沒下載好。 2)比如app需要在後臺接收資料、推送通知,被限制後無法正常推送。 3)比如遊戲掛在後臺時掉線。 那麼產品是否應該彈出視窗或進行推送,請使用者不要對其進行限制呢? 從彈出視窗到推送,再至不限制之後能否在後臺正常執行,這都將會增加一系列的測試點。
• 夜間模式
該功能依然需要在系統調諧器中開啟,從頂部下劃開啟快捷設定頁,然後長按其中的設定圖示,齒輪旋轉10秒鐘左右即可提示已開啟系統調諧器,之後使用者在設定中即可找到“系統調諧器”設定項。點開其中的“色彩和外觀”,即可找到夜間模式,開啟後即可使用全域性的深色主題模式,同時亮度和色彩也會進行一定的調整,該功能可以基於時間或地理位置自動開啟。另外,系統調諧器中也提供了RGB紅綠藍三色調節滑動條,允許使用者手動精細調節,例如減少藍色或增加紅色以提供類似護眼模式的效果。
這個功能的出發點挺不錯,但是可以想象的到,將會帶來一系列的問題: 1)比如夜晚開啟APP,APP未做暗色調處理,看不清。 實際系統可能會自行處理,但測試的時候還是需要關注。
• 全新設定樣式
安卓7.0啟用了全新的設定樣式,首先每個分類下各個子項之間的分割線消失了,只保留分類之間的分割線。另外,你還可以看到,全新的設定選單還提供了一個綠色的頂欄,允許使用者通過後方的下拉箭頭,快速設定勿擾模式等。除了勿擾模式外,頂欄選單還可以顯示諸多其他的設定狀態,例如資料流量的使用情況,自動亮度是否開啟等。
該特性對APP測試無影響
• 改進的Doze休眠機制
只要手動在後臺刪掉應用卡片,關屏後該應用就會被很快深度休眠。目前谷歌尚未透露Doze的更多細節,該特性可能會閹割
未確定特性
• 系統級電話黑名單功能
在安卓7.0中,谷歌將電話攔截功能變成了一個系統級功能。其它應用可以呼叫這個攔截名單,但只有個別應用可以寫入,包括撥號應用、預設的簡訊應用等。
該特性對APP測試無影響
• 選單鍵快速應用切換
雙擊選單鍵,就能自動切換到上一個應用。如果你不停地點選選單鍵的話,就會在所有應用中不間斷地輪換,應用視窗會自動放大,頂部還會出現倒數計時條,停止點選且倒數計時結束後,當前應用會自動放大並返回到前臺。
該特性對APP測試無影響
• 超快應用安裝速度
在安卓6.0中需要幾分鐘時間才能安裝和優化完成的,在安卓7.0中僅僅需要幾秒鐘就可以搞定
該特性對APP測試無影響
• 緊急個人救護資訊功能
項功能可以在Android 7.0的“設定”——“使用者”下面找到,當點選之後,系統就會要求你填寫一些個人緊急救護資訊,比如你的姓名、家庭住址、血型、藥物過敏史、正在服用的藥物、以及過往疾病史等資訊,還可以填寫數個緊急聯絡人資訊。
緊急資訊視窗僅在當你設定了安全鎖屏且在緊急撥號皮膚下才會顯示出來,畢竟當遇到突發急症等險境時,如果在手機上設定了鎖屏,別人就無法主動通過手機聯絡家人或朋友。如果你設定了個人緊急資訊,在鎖屏下進入緊急撥號皮膚時,你就會看到上方會有紅色的緊急資訊提示框,連續點選兩次便可看到此前輸入的個人資訊和緊急聯絡人,點選可以直接進行撥叫。
好東西,但該特性對APP測試無影響
android N或者叫Android 7.0 ,從今年7月已有專案披露BUG並直接通知公司進行修復,相應的相容測試需要引起注意!
專案問題詳情可瞭解:國元理財OTC【華為 Android N版本三方應用相容性問題反饋】