android的系統結構一共能夠分爲四個,分別爲:Linux內核層、系統運行庫層、應用框架層和應用層php
Android系統是基於Linux內核的,這一層爲Android設備的底層提供各類的驅動。html
這一層經過C/C++庫爲Android系統提供主要的性能支持。例如Webkit庫提供了瀏覽器內核的支持。android
一樣這一層還包含了Android運行時庫,它主要是提供了一些核心庫,可以容許開發者用Java語言來開發Android應用。另外,Android運行時庫,還包含了Dalvik虛擬機(5.0系統以後改成ART容許環境),它使得每一個Android應用都能運行在獨立的進程當中,並擁有一個獨立的Dalvik虛擬機實例。git
這一層提供了構建應用程序時可能用到的各類API,Android自帶的一些核心應用就是利用這些API完成的。算法
全部安裝在Android手機上的程序都是屬於這一層的,例如手機自帶的聯繫人以及包括咱們本身開發的程序。瀏覽器
一圖勝千言,以下圖所示:閉包
Android studio 自動生成的文件。架構
項目中的資源和代碼都放在該目錄下面。app
此目錄包含了gradle wrapper的配置文件。使用gradle wrapper,能夠在沒有安裝gradle的電腦中編譯程序。若是電腦中已經存在編譯此項目的gradle,會直接進行編譯,若是沒有,Android Studio會自動下載,可是這個時候速度會特別的慢。能夠直接結束掉整個Android Studio進程,進行手動下載。具體的下載方式參考:http://www.jianshu.com/p/e1c0b46e317c框架
關於Gradle Wrapper的解釋參考: https://as.quanke.name/gradle-wrapper.html
將制定的目錄和文件排除在版本控制的範圍以外
項目全局的gradle構建版本
項目全局的gradle配置文件
用命令行的方式執行gradle命令。這個是運行在Mac和Linux系統中的
2.1.8 gradlew.bat
用命令行的方式執行gradle命令。這個是運行在Windows系統中的
指定本機中的Android sdk地址
指定項目中全部引入的模塊
編譯時自動生成的文件,能夠不用管
包含了全部的第三方jar包
自動化測試程序應該放的地方
包含全部的代碼和資源文件
android的四大組件註冊以及權限申明
編寫Unit Test測試用例
將app目錄中指定的文件排除在版本控制的範圍以外
IntelliJ IDEA項目自動生成的文件.
(IntelliJ IDEA是一種商業化銷售的Java集成開發環境(Integrated Development Environment,IDE)工具軟件,由JetBrains軟件公司(前稱爲IntelliJ)發展,提供Apache 2.0開放式受權的社區版本以及專有軟件的商業版本,開發者可選擇其所需來下載使用。2014年12月,Google宣佈其旗下專用於發展Android操做系統的首版Android Studio,即基於IntelliJ IDEA的社區版本發展而成[6],用以取代原來提供Android開發者使用的Eclipse ADT。開發者除了可直接下載Android Studio外,原IntelliJ用戶亦可下載其相關插件來進行開發程序。)
參考地址:https://zh.wikipedia.org/wiki/IntelliJ_IDEA
app模塊的gradle構建腳本
指定程序中代碼混淆的規則
這兩個都是版本控制的的工具
定義的項目依賴gradle來編譯,並定義了gradle的具體的版本
這一行通常會有兩個值,一個是com.android.application,另外一個是com.android.library。前者標誌這這個項目是個能夠單獨運行的項目,後者標誌這個項目是其餘程序的代碼庫
指定這個項目的編譯版本
指定項目的包名
指定項目最低兼容的android系統版本
這個值是一個android系統版本,表示在該系統版本上面已經作了充分的測試,能夠正常運行。
這個表示項目的版本號和版本命。這個在項目升級的時候會用到。
buildTypes閉包中用於指定代碼混淆的相關配置,主要包含兩個子閉包,分別爲debug和release。debug用於生成測試版的時候,所須要用到的代碼混淆。release則是定義生成正式版的時候所須要的代碼混淆。
值爲true和false,true表明混淆,false表明不混淆。
指定代碼混淆的規則。其中proguard-android.txt是在Android SDK目錄下,其中包含了項目通用的代碼混淆。proguard-rules.pro這個文件在app目錄下,包含了當前特有的代碼混淆規則。
dependencies閉包,主要是指定項目的依賴關係。
項目中依賴關係能夠分爲三種:本地依賴,庫依賴和遠程依賴。
本地依賴:能夠對本地的jar包和目錄添加依賴關係。例如:implementation fileTree(dir: 'libs', include: ['*.jar']).這個就表示將libs目錄下的全部的jar文件添加到項目的構建路徑中去
庫依賴:添加項目中的庫模塊。例如:compile project(':PluginCore'),其中PluginCore表示的就是一個庫模塊
遠程依賴:能夠對jcenter上的開源項目添加依賴關係。例如:implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
mipmap文件夾中的圖片,能夠有優化後的縮放算法,而且對於不一樣分辨率的手機,只會保存其對應的分辨率的文件,其餘的文件會被刪除掉。特別是桌面圖標和須要作動畫的圖標。使用mipmap會效率更高。而後google也是推薦使用mipmap來保存桌面圖標。因此建議圖標仍是放置到mipmap文件夾中。而一些圖片文件,則能夠放到drawable中!
參考地址:https://www.jianshu.com/p/ecf007710fae