android studio 項目結構解析

一、android系統架構

    android的系統結構一共能夠分爲四個,分別爲:Linux內核層、系統運行庫層、應用框架層和應用層php

1.1 Linux內核層

Android系統是基於Linux內核的,這一層爲Android設備的底層提供各類的驅動。html

1.2 系統運行庫層

    這一層經過C/C++庫爲Android系統提供主要的性能支持。例如Webkit庫提供了瀏覽器內核的支持。android

    一樣這一層還包含了Android運行時庫,它主要是提供了一些核心庫,可以容許開發者用Java語言來開發Android應用。另外,Android運行時庫,還包含了Dalvik虛擬機(5.0系統以後改成ART容許環境),它使得每一個Android應用都能運行在獨立的進程當中,並擁有一個獨立的Dalvik虛擬機實例。git

1.3 應用框架層

    這一層提供了構建應用程序時可能用到的各類API,Android自帶的一些核心應用就是利用這些API完成的。算法

1.4 應用層

    全部安裝在Android手機上的程序都是屬於這一層的,例如手機自帶的聯繫人以及包括咱們本身開發的程序。瀏覽器

一圖勝千言,以下圖所示:閉包

Android系統架構

二、android studio的項目結構解析

2.1 android studio總體項目結構解析

2.1.1 .gradle和.idea

    Android studio 自動生成的文件。架構

2.1.2 app

    項目中的資源和代碼都放在該目錄下面。app

2.1.3 gradle

    此目錄包含了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

2.1.4 .gitignore

    將制定的目錄和文件排除在版本控制的範圍以外

2.1.5 build.gradle

    項目全局的gradle構建版本

2.1.6 gradle.properties

    項目全局的gradle配置文件

2.1.7 gradlew

    用命令行的方式執行gradle命令。這個是運行在Mac和Linux系統中的

2.1.8 gradlew.bat

    用命令行的方式執行gradle命令。這個是運行在Windows系統中的

2.1.9 local.properties

    指定本機中的Android sdk地址

2.1.10 settings.gradle

    指定項目中全部引入的模塊

2.2 android studio app目錄結構解析

2.2.1 build

    編譯時自動生成的文件,能夠不用管

2.2.2 libs

    包含了全部的第三方jar包

2.2.3 androidTest

    自動化測試程序應該放的地方

2.2.4 main

    包含全部的代碼和資源文件

2.2.5 AndroidManifest.xml

    android的四大組件註冊以及權限申明

2.2.6 test

    編寫Unit Test測試用例

2.2.7 .gitignore

    將app目錄中指定的文件排除在版本控制的範圍以外

2.2.8 app.iml

    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

2.2.9 build.gradle

    app模塊的gradle構建腳本

2.2.10 proguard-rules.pro

    指定程序中代碼混淆的規則

三、build.gradle文件的解析

3.1 全局build.gradle文件的解析

3.1.1 repositories與jcenter

    這兩個都是版本控制的的工具

3.1.2    dependencies中的gradle

    定義的項目依賴gradle來編譯,並定義了gradle的具體的版本

3.2 app目錄下的build.gradle文件解析

3.2.1 apply plugin

    這一行通常會有兩個值,一個是com.android.application,另外一個是com.android.library。前者標誌這這個項目是個能夠單獨運行的項目,後者標誌這個項目是其餘程序的代碼庫

3.2.2    compileSdkVersion

    指定這個項目的編譯版本

3.2.3    applicationId

    指定項目的包名

3.2.4    minSdkVersion

    指定項目最低兼容的android系統版本

3.2.5    targetSdkVersion

    這個值是一個android系統版本,表示在該系統版本上面已經作了充分的測試,能夠正常運行。

3.2.6    versionCode和versionName

    這個表示項目的版本號和版本命。這個在項目升級的時候會用到。

3.2.7    buildTypes

    buildTypes閉包中用於指定代碼混淆的相關配置,主要包含兩個子閉包,分別爲debug和release。debug用於生成測試版的時候,所須要用到的代碼混淆。release則是定義生成正式版的時候所須要的代碼混淆。

3.2.8    minifyEnabled

    值爲true和false,true表明混淆,false表明不混淆。

3.2.9    proguardFiles

    指定代碼混淆的規則。其中proguard-android.txt是在Android SDK目錄下,其中包含了項目通用的代碼混淆。proguard-rules.pro這個文件在app目錄下,包含了當前特有的代碼混淆規則。

3.2.10    dependencies

    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'

四、關於drawable和mipmap文件夾的區別

    mipmap文件夾中的圖片,能夠有優化後的縮放算法,而且對於不一樣分辨率的手機,只會保存其對應的分辨率的文件,其餘的文件會被刪除掉。特別是桌面圖標和須要作動畫的圖標。使用mipmap會效率更高。而後google也是推薦使用mipmap來保存桌面圖標。因此建議圖標仍是放置到mipmap文件夾中。而一些圖片文件,則能夠放到drawable中!

    參考地址:https://www.jianshu.com/p/ecf007710fae

相關文章
相關標籤/搜索