深入淺出Android Gradle構建系統(二:專案結構)

yangxi_001發表於2017-06-13

上一篇

這篇主要介紹使用Gradle的Android專案的目錄結構,以及在Gradle中的配置


Gradle採用約定優於配置的原則,最簡單方式是使用一個預設的目錄結構。當然目錄結構是可以自己修改的。

預設情況下,android gradle專案的程式碼都在src目錄下,src下會有兩個目錄main和androidTest,其中main目錄下是專案程式碼,androidTest目錄下是測試程式碼。
src/main/
src/androidTest/

在main和androidTest目錄下面,針對不同型別的code,又不會不同的目錄。
對於Java和Android的Gradle外掛,Java程式碼和Java資源分別對應了java目錄和resources目錄。Android外掛還需要一些其他的目錄和檔案,比如
AndroidManifest.xml
res/
assets/
aidl/
rs/
jni/


下面我們來看一下如何更改這些預設的配置。

Android工程,預設情況下,java檔案和resource檔案分別在src/main/java和src/main/res目錄下,在build.gradle檔案,andorid{}裡面新增下面的程式碼,便可以將java檔案和resource檔案放到src/java和src/resources目錄下。(注意,如果你在gradle檔案中修改了,只需要重新sync一下,gradle會自動建立新的目錄,並將對應的檔案移動到新的目錄下)
[java] view plain copy
  1. sourceSets {  
  2.     main {  
  3.         java {  
  4.             srcDir 'src/java'  
  5.         }  
  6.         resources {  
  7.             srcDir 'src/resources'  
  8.         }  
  9.     }  
  10. }  

更簡便的寫法是
[java] view plain copy
  1. sourceSets {  
  2.     main.java.srcDirs = ['src/java']  
  3.     main.resources.srcDirs = ['src/resources']  
  4. }  
陣列裡其實是可以指定多個目錄,這樣就可以將程式碼和資源放置到多個目錄下。
在看一個Android專案的例子:
[java] view plain copy
  1. android {  
  2.     sourceSets {  
  3.         main {  
  4.             manifest.srcFile 'AndroidManifest.xml'  
  5.             java.srcDirs = ['src']  
  6.             resources.srcDirs = ['src']  
  7.             aidl.srcDirs = ['src']  
  8.             renderscript.srcDirs = ['src']  
  9.             res.srcDirs = ['res']  
  10.             assets.srcDirs = ['assets']  
  11.         }  
  12.   
  13.   
  14.         androidTest.setRoot('tests')  
  15.     }  
  16. }  

這裡的main code其實使用的就是android Gradle的預設值,而androidTest不再使用預設的androidTest目錄,而是使用tests目錄。


這篇先講到這裡,下一篇我會簡單的介紹一個gradle的task

相關文章