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