1.1 android系統(tǒng)架構(gòu)
(1)內(nèi)核層:linux
(2)系統(tǒng)運(yùn)行庫(kù)層:Dalvik虛擬機(jī)(Android程序的虛擬機(jī),是Android中Java程序的運(yùn)行基礎(chǔ)。其指令集基于寄存器架構(gòu),執(zhí)行其特有的文件格式——dex字節(jié)碼來(lái)完成對(duì)象生命周期管理、堆棧管理、線程管理、安全異常管理、垃圾回收等重要功能。它的核心內(nèi)容是實(shí)現(xiàn)庫(kù)(libdvm.so),大體由C語(yǔ)言實(shí)現(xiàn)。依賴于Linux內(nèi)核的一部分功能——線程機(jī)制、內(nèi)存管理機(jī)制,能高效使用內(nèi)存,并在低速CPU上表現(xiàn)出的高性能。每一個(gè)Android應(yīng)用在底層都會(huì)對(duì)應(yīng)一個(gè)獨(dú)立的Dalvik虛擬機(jī)實(shí)例,其代碼在虛擬機(jī)的解釋下得以執(zhí)行。)
(3)應(yīng)用框架層:API
(4)應(yīng)用層:應(yīng)用程序
1.2 四大組件
(1)活動(dòng):activity 門面
(2)服務(wù):Service 無(wú)法看到,即使用戶退出應(yīng)用,服務(wù)仍然可以繼續(xù)運(yùn)行。
(3)廣播接收器:Broadcast Receiver 允許接受來(lái)自各處的廣播消息,也可以向外發(fā)送廣播消息。
(4)內(nèi)容提供器:Content Provider 為應(yīng)用程序間共享數(shù)據(jù)提供了可能。
1.3 Gradle
(1)Gradle是一個(gè)非常先進(jìn)的項(xiàng)目構(gòu)建工具,使用了一種基于Groovy的領(lǐng)域特定語(yǔ)言(DSL)來(lái)聲明項(xiàng)目設(shè)置,摒棄了傳統(tǒng)基于XML的各種繁瑣配置。
(2)jcenter:代碼托管倉(cāng)庫(kù)
(3)build.gradle解析
apply plugin: 'com.android.application' //應(yīng)用模塊和庫(kù)模塊的區(qū)別是一個(gè)可以直接于運(yùn)行,一個(gè)只能作為代碼庫(kù)依附于別的應(yīng)用程序模塊運(yùn)行
android {
compileSdkVersion 25 //項(xiàng)目編譯版本
buildToolsVersion "25.0.2" //構(gòu)建工具的版本
defaultConfig { //可以對(duì)項(xiàng)目的細(xì)節(jié)進(jìn)行配置
applicationId "com.example.myapplication" //包名
minSdkVersion 15 //最低兼容至4.0系統(tǒng)
targetSdkVersion 25 //在該版本上做了充分的測(cè)試(即新功能可以使用)
versionCode 1 //版本號(hào)
versionName "1.0" //版本名
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {//指定生成安裝文件的相關(guān)配置
release {//生成正式版安裝文件的相關(guān)配置
minifyEnabled false //是否對(duì)代碼進(jìn)行混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' //混淆時(shí)使用的規(guī)則文件
}
}
}
dependencies { //制定當(dāng)前項(xiàng)目的所有依賴關(guān)系
compile fileTree(dir: 'libs', include: ['*.jar'])//本地依賴:對(duì)本地的jar包或目錄添加依賴關(guān)系
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'//遠(yuǎn)程依賴:對(duì)jcenter庫(kù)上的開(kāi)源項(xiàng)目添加依賴關(guān)系
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha7'
compile 'com.android.support:design:25.3.1'
testCompile 'junit:junit:4.12'
}
//庫(kù)依賴:對(duì)項(xiàng)目中的庫(kù)模塊添加依賴關(guān)系
1.4 日志工具
(1)Log
- Log.v() 用于打印最瑣碎的日志信息,對(duì)應(yīng)級(jí)別為verbose。
- Log.d()調(diào)試信息,debug
- Log.i()比較重要的,可以幫助分析用戶行為數(shù)據(jù),info
- Log.w()警告信息,程序在這個(gè)地方可能存在潛在風(fēng)險(xiǎn),warm
- Log.e()錯(cuò)誤信息,程序出現(xiàn)嚴(yán)重問(wèn)題,error
有兩個(gè)參數(shù):tag對(duì)打印信息進(jìn)行過(guò)濾,msg打印的具體內(nèi)容
(2)AS使用技巧:輸入logd按下tab鍵,會(huì)自動(dòng)補(bǔ)全
(3)功能:日志過(guò)濾器&日志級(jí)別控制&關(guān)鍵字控制