【開篇語】小編菜鳥一隻,初入AndroidStudio,只是想搞清楚項目從Eclipse導入到AndroidStudio的過程中是怎麼回事。所以簡單的看了下,gradle用法還有很多,其中原理還待深入瞭解。
一、Gradle準備
- 安裝好AS後,有默認的Gradle,但是建議使用自己的Gradle,本人下載的 gradle-2.5-all版本;
- 配置環境變量:
GRADLE_HOME ==>>D:\Program Files\Android\Android Studio\gradle\gradle-2.5-all\gradle-2.5\bin;
PATH ==>> %GRADLE_HOME%; - 檢驗 :
運行 gradle -v 如圖 既是配置成功
二、演示項目的項目結構
|—— demo:
|—— libproject:
| |- project1
| |- project2
| |- project3
| |- project4
| |- project5
| |- project6
|—— project:
|- project0
project0 爲主工程,project0 依賴項目 project1,project2,project3,project4 project4 依賴 project5,project6
三、settings.gradle配置
一個多項目構建必須在根項目的根目錄下包含settings.gradle文件,因爲它指明瞭那些包含在多項目構建中的項目。
項目文件根目錄 demo下
|—— demo:
|—— settings.gradle
include ':project:project0'
include ':project:project1'
include ':project:project2'
include ':project:project3'
include ':project:project4'
include ':project:project5'
include ':project:project5'
include ':project:project6
此處的配置先後順序是否有影響還待進一步驗證(嘗試更換了順序,均可以構建成功,似乎會根據依賴關係自動分配順序),歡迎朋友們指導。
記住主工程的項目project0以及被依賴的項目一定要在此配置,否則會出現錯誤,錯誤詳情請
點擊:Eclipse轉AndroidStuido天坑
四、build.gradle配置
- 項目文件根目錄 demo下配置一個全局的build.gradle
如果需要在多項目構建的所有項目中加入公用的配置或行爲,我們可以將這項配置加入到根項目的build.gradle文件中(使用allprojects)
|—— demo:
|—— build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {//倉庫
jcenter()
}
dependencies {//依賴
classpath 'com.android.tools.build:gradle:1.3.0' //!!!注意:2.5版本的gradle爲1.3.0
}
}
subprojects{
//add common configuration for sub-projects here
}
allprojects {
//Add configuration here
}
- 每個module根目錄下配置一個build.gradle
|—— demo:
|—— libproject:
|- project4
|- build.gradle
apply plugin: 'com.android.library' //需要的插件
dependencies {
compile fileTree(dir: 'libs', include: '*.jar') //依賴libs下的所有jar包
compile project(':libproject:project5') // project4 依賴 project5
compile project(':libproject:project6') // project4 依賴 project6
}
android {
compileSdkVersion 17 //SDK版本 注意:被依賴的project5|6 不能高於project4
buildToolsVersion "23.0.1"
lintOptions {
abortOnError false
}
sourceSets { //資源設置
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs'] //注意:引用libs文件夾中的so,需要該屬性
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
}
五、構建項目、執行gradle命令
- 構建項目一: 在項目根目錄demo下執行如下doc命令
gradle projects
> gradle projects
:projects
------------------------------------------------------------
Root project
------------------------------------------------------------
Root project 'demo'
+--- Project ':libproject'
--- Project ':project1'
--- Project ':project2'
--- Project ':project3'
--- Project ':project4'
--- Project ':project5'
--- Project ':project6'
\--- Project ':project'
\--- Project ':project0'
To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :app:tasks
BUILD SUCCESSFUL
- 構建項目二: 在項目根目錄demo下執行如下doc命令
gradle build
此刻有點像Ant編譯一樣,耐心等待
now, build succesful, 最喜歡看到這個句啦!
此時查看項目目錄,發生了變化
|—— demo:
|——.gradle
|—— libproject:
| |- project1
| | |-build.gradle
| |
| |- project2
| |- project3
| |- project4 //文件太多 不一一寫出
| |- project5
| |- project6
|
|—— project:
| |- project0
| |-build.gradle
| |—build
| |—outputs
| |-apk
| |-project0.apk
| |- ...
| |-.......文件太多 不一一寫出啦
|—— gradle
| |——wrapper
| |——gradle-wrapper.jar
| |——gradle-wrapper.properties
|—— build
|—— build.gradle
|—— settings.gradle
- 清除構建:在項目根目錄demo下執行如下doc命令
gradle clean
此操作類似ant 編譯中的ant clean 命令,會清除構建生成的文件,方便下一次構建。
推薦參考:
Gradle入門 有源碼實踐操作,理解起來很方便。
曾嘗試在在項目根目錄下的build.gradle把所有的子項目的配置也寫在這裏,執行錯誤,報錯:manifest.srcFile ‘AndroidManifest.xml’ 這裏的路徑有問題,還待進一步解決,期待各位朋友指導!