Android系统基础介绍
Android系統基礎介紹
Android系統發展史
Android系統從1.5版本迭代到現在10.0
需要注意的幾個版本:
5.0
界面設計技術發生變革,采用全新的MaterialDesign界面,做測試時考慮5.0之前的版本和5.0(含)之后的版本
Dalvik虛擬機速度比ART慢,但占用空間小
ART虛擬機速度更快,但占用更多資源(空間)(但由于現在磁盤等越來越便宜,所以使用ART)
6.0
采用全新權限機制,做測試時考慮6.0以前的版本和6.0(含)之后的版本
在6.0之前權限機制就是安裝時權限:user-permission
6.0(含)之后加入了運行時權限:user:feature,所以說6.0之后兩種權限共存
10.0
1、支持可折疊設備,做測試的手機或平板是可折疊設備,則必須安裝V10.0或以上版本
2、支持5G,做測試時需要5G,則必須安裝V10.0或以上版本(如:車聯網、線上教育、遠程會診等)
Android系統基本架構
內核層
內核其實就是一個軟件
Android系統是Linux內核,支持常用Linux命令,如:ls,cd,top,cat…
運行庫層
-
運行庫是程序在運行時所需要的庫文件。通常運行庫是以DLL形式提供的
-
運行庫是一個經過封裝的程序模塊,對外提供接口,只要知道接口參數就可以自由使用
-
它是運行所有Android的APP所需要的環境(所有APP全部依托它啟動、運行和關閉),每一個APP也可被理解為Java程序
Android APP分為:
-
原生APP:如設置、相機、相冊、電話簿…
-
Web APP:使用了網頁開發技術,如HTML,CSS,JS…
-
混合APP:在原生APP的基礎上結合了Web技術
如:飛豬是一個旅游網站,有海量酒店,飛豬同時具有Web版和移動版,酒店數據是共用的,沒必要做兩份
知識擴展
-
Android系統的APP使用Java或Kotlin語言(科特林,輕量級Java)開發
-
IOS系統的APP使用OC或Swift語言開發
安卓虛擬機
-
Dalvik(安卓5.0版本以下)
-
ART(安卓5.0版本及以上):Android Run Time 安卓運行時
-
ART虛擬機運行速度更快,但是比Dalvik虛擬機占用更大的空間,典型的以“空間換時間”
WebKit渲染引擎
可以讓安卓系統的瀏覽器APP完美訪問網頁內容
在APP打開一個網頁鏈接并不需要使用瀏覽器,原理就是也同樣使用了WebKit進行渲染
SQLite數據庫
SQLite是谷歌常用數據庫,谷歌瀏覽器里也嵌入該數據庫
- APP有一個獨有的特性,支持所謂的離線訪問,其實利用的就是“緩存”技術,存儲一些數據保存至手機本地的數據庫里
緩存(cache)
原始意義是指訪問速度比一般隨機存取存儲器(RAM)快的一種高速存儲器,通常它不像系統主存那樣使用DRAM技術,而使用昂貴但較快的SRAM技術。緩存的設置是所有現代計算機系統發揮高性能的重要因素之一。緩存分L1緩存和L2緩存。
例子:
-
愛奇藝看電影,你永遠會發現進度條比你現在正在看的位置多那么一點點
-
電梯里和男朋友或女朋友微信聊天到一半,完全沒有網絡了,消息發不出去,但你發現你依然可以上翻看到歷史聊天記錄
應用框架層
為應用開發者提供各種API,提高了開發效率
現如今,基本上開發寫代碼都是在現有框架上拼拼湊湊,絕對不會從0開始,
主要因為2個原因:
1、統一了標準并提升開發的工作效率
2、實力不允許開發高調
應用層
APP層,如:
系統自帶的APP
自己下載的APP
Android應用四大組件
Android應用四大組件包括:
activity活動組件,service后臺服務組件,broadcast receiver廣播接收組件,content provider 內容提供組件。
activity活動組件
-
是用戶操作的可視化界面;
-
一個activity通常就是一個單獨的屏幕(窗口),或者界面上的按鈕以及一些隱藏功能(如:微信支付接口);
-
每一個activity活動都必須在AndroidManifest.xml配置文件中聲明,否則Android系統不會識別;
-
一個activity也可以是安裝時的權限。
service后臺服務組件
是Android中實現程序后臺運行的解決方案,沒有ui,它非常適合去執行那些不需要和用戶交互而且還要求長期運行的任務。服務的運行不依賴于任何用戶界面,即使程序被切換到后臺,或者用戶打開了另外一個應用程序,服務仍然能夠保持正常運行。
broadcast receiver廣播接收組件
是對發送出來的廣播進行過濾接受并響應的一類組件,
比如:玩單機手游時,遇手機電量不足,游戲會提醒玩家及時保存進度;或者玩聯網手游時,如遇信號問題,游戲會提醒玩家網絡異常,甚至會嘗試重連。
電量不足和信號問題都是系統發出的廣播,被游戲接收,接著游戲做出一些響應,
APP可以"利用"Android系統的“廣播”技術,通過代碼去接收“想要”的廣播,
Android在以下情況下(遠遠不止這3種)會發送廣播消息,比如:
1.電量不足;2.網絡異常;3.屏幕關閉\點亮等等。
content provider 內容提供組件
Android系統為了提升安全性,給每個APP自動創建了用戶(即:每個APP都是不同的、獨立的用戶),通過用戶權限設置來將不同APP的數據或訪問硬件設備進行隔離。但有時候,APP之間難免還是需要相互訪問數據的,這就需要使用“內容提供”技術。同樣的,用戶感知不到,屬于純開發技術層面,測試人員不用深究。
說白了就是使不同app之間可以進行數據交互的一個組件
Android系統資源文件的適配
定義
所謂資源文件就是APP(項目)所需要的各種音頻、視頻、圖片…
適配就是對這些資源文件的一個管理
安卓系統規定每個apk包文件內需要存在一個res(resource)資源目錄
相對較重要資源文件:
drawable系列->APP里的菜單圖標
mipmap系列->桌面上的APP圖標
layout系列->界面布局
想要適配更多的手機/平板機型,就需要準備不同的資源文件用于選擇。但資源文件越多,apk文件大小就越大(性能問題)。有些人把資源圖標放到網絡上管理,但弊端是需要消耗流量
不同機型的屏幕密度不同,所以開發需要提供不同的資源:
-
DPI(dots per inch) 每英寸點數
-
如果對手機/平板和APP之間的適配過程和原則感興趣的同學可以看這個帖子:
https://blog.csdn.net/delmoremiao/article/details/66550290
(land 橫屏、port 豎屏)
-
屏幕的好壞和屏幕尺寸、屏幕密度、屏幕分辨率都有關系,不可以只考量一項
沒有適配導致的后果
如果資源一個都沒有被篩選到,那就使用默認的資源文件(如:drawable)
如果連默認的資源文件都不存在,那就可能導致APP閃退,屬于資源不適配導致的閃退;其他情況,如內存溢出同樣也會造成閃退等問題
Android系統權限的控制
從V6.0開始,權限控制分為:
-
安裝時權限控制
-
運行時權限控制(動態檢測)
權限在apk安裝包中的AndroidManifest.xml文件中設置,Manifest:貨物清單
uses-permission(安裝時權限 )
包括但不限于:
- INTERNET 聯網
- ACCESS_NETWORK_STATE 訪問網絡狀態
- ACCESS_WIFI_STATE 訪問無線網絡狀態
- READ_EXTERNAL_STORAGE 讀取外部存儲
- WRITE_EXTERNAL_STORAGE 寫入外部存儲
- BLUETOOTH 藍牙
uses-feature(運行時權限控制)
required(要求)屬性如果沒有指定,代表true,即默認為true
這里required屬性為false,也就是說不需要camero(相機)程序也能運行
-
測試人員對于所測APP的權限控制(V6.0后分為兩部分)是需要進行測試的(你可以說它是配置測試,但個人認為它是需求級別的測試)
-
蘋果手機/平板其實對于測試工程師來說更輕松,因為系統不是開源的(沒有那么多個性化的內容)。我們從軟件功能角度去測試即可,雖然也需要測試安裝/卸載/更新,但沒必要去關注權限問題
總結
以上是生活随笔為你收集整理的Android系统基础介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 控制器之间跳转实现转场动画,动画控制器概
- 下一篇: 【Android】虹软、安卓、Uniap