歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

使用Gradle構建Android項目

新項目中,使用了Google I/O 2013發布的新工具,使用Gradle構建Android項目,並且在新版的Intellig IDEA以及google的Android Studio對其支持。本文就介紹一下怎麼使用gradle構建android項目,進行多個版本編譯。

Gradle創建項目目錄結構 http://www.linuxidc.com/Linux/2012-07/64177.htm

Gradle 打包 Groovy 腳本成 jar與上傳到maven repository http://www.linuxidc.com/Linux/2012-07/64178.htm

Gradle 構建 Android 應用常見問題解決指南 http://www.linuxidc.com/Linux/2013-10/90807.htm

Gradle - 簡單測試驅動Web程序 http://www.linuxidc.com/Linux/2013-11/92611.htm

Gradle - 使用介紹 http://www.linuxidc.com/Linux/2013-11/92611.htm

Gradle是什麼?

Gradle是以Groovy為基礎,面向java應用,基於DSL語法的自動化構建工具。是google引入,替換ant和maven的新工具,其依賴兼容maven和ivy。
使用gradle的目的:

  • 更容易重用資源和代碼;

  • 可以更容易創建不同的版本的程序,多個類型的apk包;

  • 更容易配置,擴展;

  • 更好的IDE集成;

環境需求

Gradle1.10或者更高版本,grale插件0.9或者更高版本.
android SDK需要有Build Tools 19.0.0以及更高版本

Gradle基本結構

使用ide創建的gradle構建的項目,會自動創建一個build.gradle,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.0'
    }
}
apply plugin: 'android'
android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"
}

可以看到,構建文件主要有三個區域:

buildscript{…}

Configures the build script classpath for this project. 設置腳本的運行環境

apply plugin: ‘android’

設置使用android插件構建項目

android{…}

設置編譯android項目的參數

任務task的執行

通常會有以下任務:

  • assemble The task to assemble the output(s) of the project(輸出一個項目文件,android就是打包apk)

  • check The task to run all the checks.(運行檢查,檢查程序的錯誤,語法,等等)

  • build This task does both assemble and check (執行assemble和check)

  • clean This task cleans the output of the project(清理項目輸出文件)

上面的任務assemble,check,build實際上什麼都不做,他們其實都是其他任務的集合。

執行一個任務的方式為gradle 任務名, 如gradle assemble

在android項目中還有connectedCheck(檢查連接的設備或模擬器),deviceCheck(檢查設備使用的api版本)

通常我們的項目會有至少生成兩個版本,debug和release,我們可以用兩個任務assembleDebug和assembleRelease去分別生成兩個版本,也可以使用assemble一下子生成兩個版本。

gradle支持任務名縮寫,在我們執行gradle assembleRelease的時候,可以用gradle aR代替。

基本的構建定制

我們可以在build.gradle文件中配置我們的程序版本等信息,從而可以生成多個版本的程序。
支持的配置有:

  • minSdkVersion 最小支持sdk版本

  • targetSdkVersion 編譯時的目標sdk版本

  • versionCode 程序版本號

  • versionName 程序版本名稱

  • packageName 程序包名

  • Package Name for the test application 測試用的程序包名

  • Instrumentation test runner 測試用的instrumentation實例

例如:

1
2
3
4
5
6
7
8
9
10
11
android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"
    defaultConfig {
        versionCode 12
        versionName "2.0"
        minSdkVersion 16
        targetSdkVersion 16
    }
}

 

目錄配置

默認情況下項目目錄是這樣的 有兩個組件source sets,一個main,一個test,對應下面兩個文件夾。src/main/ src/androidTest/

然後對於每個組件目錄都有兩個目錄,分別存儲java代碼和資源文件java/ resources/

對於android項目中呢,對應的目錄和文件是AndroidManifest.xml //該文件src/androidTest/目錄下不需要,程序執行時會自動構建res/ assets/ aidl/ rs/ jni/

如果需要上面這些文件,但是不是在上面所說的目錄,則需要設置。

1
2
3
4
5
6
7
8
9
10
sourceSets {
    main {
        java {
            srcDir 'src/java'
        }
        resources {
            srcDir 'src/resources'
        }
    }
}

可以給main或者test設置根目錄,如

1
2
3
 sourceSets {
        androidTest.setRoot('tests')
    }

可以指定每種文件的存儲路徑

1
2
3
4
5
6
7
8
9
10
11
sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }

特別是我們的ndk生成的.so文件,通常我們不是放到jni目錄中的,我們需要設置一下

1
2
3
4
5
sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }

簽名配置

可以給不同類型進行不同的配置,先看示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
android {
    signingConfigs {
        debug {
            storeFile file("debug.keystore")
        }
        myConfig {
            storeFile file("other.keystore")
            storePassword "android"
            keyAlias "androiddebugkey"
            keyPassword "android"
        }
    }
    buildTypes {
        foo {
            debuggable true
            jniDebugBuild true
            signingConfig signingConfigs.myConfig
        }
    }
}

上面的配置文件配置兩個類型,一個時debug類型,一個時自己的自定義類型。兩個分別使用了不同的簽名,同時對於生成密鑰,要填寫設置的密碼。

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-05/102289p2.htm

Copyright © Linux教程網 All Rights Reserved