一、安卓的起源
安卓(Android)是一種基于Linux內(nèi)核(不包含GNU組件)的自由及開放源代碼的操作系統(tǒng)。主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由美國Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。
二、安卓的系統(tǒng)版本

重要版本的發(fā)展史

三、安卓的四層結(jié)構(gòu)

1、內(nèi)核層android系統(tǒng)使用的是linux內(nèi)核,支持常見的一些linux命令。
2、運(yùn)行庫層android app 運(yùn)行的環(huán)境
android 應(yīng)用的開發(fā)語言是java或者kotlin(可以看成輕量級(jí)java),java程序運(yùn)行需要java虛擬機(jī)(java 程序------------java 虛擬機(jī)--------------操作系統(tǒng))。
android 應(yīng)用中還可以內(nèi)嵌網(wǎng)頁,網(wǎng)頁的顯示需要瀏覽器渲染引擎(html->界面),android 系統(tǒng)中繼承了webkit渲染引擎。
android 應(yīng)用在沒有網(wǎng)絡(luò)的情況下如果想正常顯示,需要本地緩存數(shù)據(jù),數(shù)據(jù)可以保存到數(shù)據(jù)庫中。android 系統(tǒng)使用了輕量級(jí)的sqlite 數(shù)據(jù)庫(文件數(shù)據(jù)庫)。
3、應(yīng)用程序框架層通過框架來降低開發(fā)的難度和工作量。
4、應(yīng)用程序?qū)?/code>
系統(tǒng)自帶應(yīng)用和用戶安裝的應(yīng)用
四、android應(yīng)用的四大組件
android應(yīng)用的開發(fā)工程師會(huì)利用一下的四種技術(shù)來實(shí)現(xiàn)一些功能。
1、activity活動(dòng)
(1).activity可以指代任何東西,比如一個(gè)界面或多個(gè)界面、某個(gè)接口(api)、某個(gè)控件等
以考研幫為例子:
1、先解壓考研幫apk的包
2、看看AndroidManifest.xml
002.png
3、查看app的包名:
03.png
image.png
2、serveice后臺(tái)服務(wù)
雖然看不到界面,但是在手機(jī)中默默運(yùn)行著一些程序,app的推送功能一般是通過后臺(tái)服務(wù)實(shí)現(xiàn)的。
3、boadcast receiver廣播接收
舉例:
比如玩游戲玩到一半,跳出提示'手機(jī)電量不足',如何實(shí)現(xiàn)?
實(shí)現(xiàn)方式:
第一步:
操作系統(tǒng)發(fā)現(xiàn)電量不足,發(fā)出一條廣播信息,通知大家'電量不足'
第二步:
該游戲app接收這條廣播信息,然后跳出提示
第三步:
選擇接收/不接收
4、content provider內(nèi)容提供
Android系統(tǒng)為了提升安全性,給每個(gè)APP自動(dòng)創(chuàng)建了用戶(即:每個(gè)APP都是不同的、獨(dú)立的用戶),通過用戶權(quán)限設(shè)置來將不同APP的數(shù)據(jù)或訪問硬件設(shè)備進(jìn)行隔離。但有時(shí)候,APP之間難免還是需要相互訪問數(shù)據(jù)的,這就需要使用“內(nèi)容提供”技術(shù)。
案例:
典型案例,微信要發(fā)送照片了,需要在2個(gè)app之間
五、android的資源文件
android-res.png
006.png
六、android系統(tǒng)權(quán)限控制
從V6.0開始,權(quán)限控制分為:
安裝時(shí)權(quán)限: 1.INTERNET 聯(lián)網(wǎng) 2.ACCESS_NETWORK_STATE 訪問網(wǎng)絡(luò)狀態(tài) 3.ACCESS_WIFI_STATE 訪問無線網(wǎng)絡(luò)狀態(tài) 4.READ_EXTERNAL_STORAGE 讀取外部存儲(chǔ) 5.BLUETOOTH 藍(lán)牙 等等
運(yùn)動(dòng)時(shí)權(quán)限: runtime-permission
007.png
權(quán)限在apk安裝包中的AndroidManifest.xml文件中設(shè)置
uses-permission
uses-feature(可選權(quán)限)
uses-feature.jpg
required屬性如果沒有指定,代表true
測(cè)試人員對(duì)于所測(cè)APP的權(quán)限控制(V6.0后分為兩部分)是需要進(jìn)行測(cè)試的(你可以說它是配置測(cè)試,但個(gè)人認(rèn)為它是需求級(jí)別的測(cè)試)
思考 - 考研幫APP支持沒有攝像頭的移動(dòng)設(shè)備使用嗎?
APP的編寫語言:
Android 系統(tǒng): Java或者Kotlin
IOS系統(tǒng): Object-C 或 swift






