[TOC] 1.主目錄 1. .gradle和.idea 這兩個目錄下放置的都是Android Studio自動生成的一些文件,我們無須關心,也不要去手動編輯。 2. app: 項目中的代碼、資源等內容幾乎都是放置在這個目錄下的,我們後面的開發工作也基本都是在這個目錄下進行的,待會兒還會對這個目錄單 ...
目錄
1.主目錄
- .gradle和.idea
這兩個目錄下放置的都是Android Studio自動生成的一些文件,我們無須關心,也不要去手動編輯。
- app:
項目中的代碼、資源等內容幾乎都是放置在這個目錄下的,我們後面的開發工作也基本都是在這個目錄下進行的,待會兒還會對這個目錄單獨展開進行講解。
- build:
這個目錄你也不需要過多關心,它主要包含了一些在編譯時自動生成的文件。 - gradle:
這個目錄下包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前將gradle下載好,而是會自動根據本地的緩存情況決定是否需要聯網下載gradle。Android Studio預設沒有啟動gradle wrapper的方式,如果需要打開,可以點擊Android Studio導航欄 --> File --> Settings --> Build,Execution,Deployment --> Gradle,進行配置更改。 - .gitignore
這個文件是用來將指定的目錄或文件排除在版本控制之外的。
- build.gradle
這是項目全局的gradle構建腳本,通常這個文件中的內容是不需要修改的。下麵會詳細分析gradle構建腳本中的具體內容
- gradle.properties
這個文件是全局的gradle配置文件,在這裡配置的屬性將會影響到項目中所有的gradle編譯腳本。
- gradlew和gradlew.bat
這兩個文件是用來在命令行界面中執行gradle命令的,其中gradlew是在Linux或Mac系統中使用的,gradlew.bat是在Windows系統中使用的。
- APP1.iml
iml文件是所有IntelliJ IDEA項目都會自動生成的一個文件(Android Studio是基於IntelliJ IDEA開發的),用於標識這是一個IntelliJ IDEA項目,我們不需要修改這個文件中的任何內容。
- local.properties
這個文件用於指定本機中的Android SDK路徑,通常內容都是自動生成的,我們並不需要修改。除非你本機中的Android SDK位置發生了變化,那麼就將這個文件中的路徑改成新的位置即可。
- settings.gradle
這個文件用於指定項目中所有引入的模塊。由於HelloWorld項目中就只有一個app模塊,因此該文件中也就只引入了app這一個模塊。通常情況下模塊的引入都是自動完成的,需要我們手動去修改這個文件的場景可能比較少。
1.1. app目錄
- build
這個目錄和外層的build目錄類似,主要也是包含了一些在編譯時自動生成的文件,不過它裡面的內容會更多更雜,我們不需要過多關係。
- libs
如果你的項目中使用到了第三方jar包,就需要把這些jar包都放在libs目錄下,放在這個目錄下的jar包都會被自動添加到構建路徑里去
- AndroidTest
此處是用來編寫Android Test測試用例的,可以對項目進行一些自動化測試
- java
毫無疑問,java目錄是放置我們所有java代碼的地方,展開該目錄,你將看到我們剛纔創建的MainActivity文件就在裡面
- res
這個目錄下的內容就有點多了。簡單點說,就是你在項目中使用到的所有圖片,佈局,字元串等資源都要存放在這個目錄下。當然這個目錄下還有很多子目錄,圖片放在drawable目錄下,佈局放在layout目錄下,字元串放在values目錄下,所以你不用擔心會把整個res目錄弄得亂糟糟的。
- AndroidManifest.xml
這是你整個Android項目的配置文件,你在程式中定義的所以四大組件都需要在這個文件里註冊,另外還可以在這個文件中給應用程式添加許可權聲明。
- test
此處是用來編寫Unit Test測試用例的,是對項目進行自動化測試的另一種方式。
- .gitignore
這個文件用於將app模塊內的指定的目錄或文件排除在版本控制之外,作用和外層的.gitignore文件類似。
- app.iml
IntelliJ IDEA項目自動生成的文件,我們不需要關心或修改這個文件中的內容。
- build.gradle
這是app模塊的gradle構建腳本,這個文件中會指定很多項目構建相關的配置。
- proguard-rules.pro
這個文件用於指定項目代碼的混淆規則,當代碼開發完成後打成安裝包文件,如果不希望代碼被別人破解,通常會將代碼混淆,從而讓破解者難以閱讀。
1.2.項目資源文件夾res
- drawable開頭的文件夾都是用來放圖片的,
- mipmap開頭的文件夾都是用來放應用圖標的,
- values開頭的文件夾都是用來放字元串、樣式、顏色等配置的,
- layout文件夾是用來放佈局文件的。
以下資源需要手動添加:在res上右擊新建-Android resource directory
- anim目錄:存放定義補間動畫的XML文件
- animator目錄:存放定義屬性動畫的XML文件
- color目錄:存放定義不同狀態下顏色列表的XML文件
- font目錄:存放定義字體XML文件
- menu目錄:存放應用程式定義各種菜單資源,包括選項菜單、子菜單、上下文菜單資源
- raw目錄:存放任意類型的原生資源(比如音頻文件、視頻文件等)
2. 理解build.gradle文件
2.1. 外部build.gradle
根目錄下的build.gradle用於添加子工程或模塊共用的配置項。
- buildscriipt: buildscript里是gradle腳本執行所需依賴,分別是對應的maven庫和插件
- allproject:allprojects里是項目本身需要的依賴,比如要添加maven中的的common-util庫,那麼應該將
maven {url ‘https://raw.githubusercontent.com/Geroff/MavenTest/master‘}
寫在這裡,而不是buildscript中,不然找不到。 - repositories: 資料庫
- jcenter:很多Android開源項目都會選擇將代碼托管到jcenter上,聲明瞭這行配置之後,我們就可以在項目中輕鬆引用任何jcenter上的開源項目了
- dependencies: 閉包中使用classpath聲明瞭一個Gradle插件。為什麼要聲明這個插件呢?因為Gradle並不是專門為構建Android項目而開發的,java,c++等很多項目都可以使用Gradle來構建。因此如果我們要想使用它來構建Android項目,則需要聲明com.android.tools.build:gradle:2.2.2這個插件。其中,最後面的部分是插件的版本號。
- 通常情況下你並不需要修改這個文件中的內容,除非你想添加一些全局的項目構建配置。
- take clean:
- 運行gradle clean時,執行此處定義的task。
- 該任務繼承自Delete,刪除根目錄中的build目錄。
- 相當於執行Delete.delete(rootProject.buildDir)。
- gradle使用groovy語言,調用method時可以不用加()。
2.2. app文件下的build.gradle
- apply:應用插件,有兩個選擇
com.android.application
:這是一個應用程式模塊,可以直接運行
com.android.library
: 這是一個庫模塊,需要依賴於其他應用程式模塊來運行
- android閉包: 配置項目構造的各種屬性
compilesdkVersion
:指定項目的編譯版本defaultConfig閉包
:項目的更多細節進行配置applicationId
: 指定項目的包名minSdkVersion
: 最低相容的Android系統版本targetSdkVersion
: 目標版本VersionCode
: 指定項目的版本號versionName
: 指定項目的版本名testInstrumentationRunner
: 自動調試
buildType
: 用於指定生成安裝文件的相關配置debug
: 用於指定生成測試版安裝文件的配置release
: 用於指定生成正式版安裝文件的配置minifyEnabled
: 指定是否對項目的代碼進行混淆proguardFiles
: 指定混淆時使用的規則文件
- dependecies: AndroidStudio項目一共有3種依賴方式:本地依賴、庫依賴和遠程依賴。
implementation fileTree
: 一個本地依賴聲明,它表示將libs目錄下所有.jar尾碼的文件都添加到項目的構建路徑當中
參考資源:
- https://blog.csdn.net/sunny2come/article/details/80020707
- https://blog.csdn.net/xhbxhbsq/article/details/54863483