使用Gradle構(gòu)建Android項(xiàng)目
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | buildscript { //定義一些項(xiàng)目需要的JAR函數(shù)庫 LIBS_DIR = "../../../libs" //需要從maven中央庫得到gradle的android插件 repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.4.2' }}//聲明項(xiàng)目是一個(gè)android構(gòu)建apply plugin: 'android'dependencies { //同時(shí)用本地maven庫查找依賴 repositories { mavenLocal() } //下面是一些app需要的jar文件 compile files("${LIBS_DIR}/hiscore/hiscore.jar") compile files("${LIBS_DIR}/GoogleAnalytics/libGoogleAnalytics.jar") //這是一個(gè)我存放在本地maven倉庫(使用“aar”格式)的android函數(shù)庫 compile ('com.mopub.mobileads:mopub-android-sdk:unknown')}//android構(gòu)建的項(xiàng)目定義android { compileSdkVersion 15 buildToolsVersion "17.0.0" //下面的代碼路徑不是推薦的新項(xiàng)目結(jié)構(gòu) //我仍然使用的Eclipse風(fēng)格結(jié)構(gòu) sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } instrumentTest.setRoot('tests') } //聲明創(chuàng)建一個(gè)帶簽名的發(fā)布版本細(xì)節(jié) signingConfigs { release { storeFile file("../keys/android.keystore") storePassword "######" keyAlias "######" keyPassword "######" } } //聲明此發(fā)布構(gòu)建在簽名之前需要運(yùn)行proguard buildTypes { release { runProguard true proguardFile getDefaultProguardFile('proguard-android.txt') proguardFile 'proguard.cfg' signingConfig signingConfigs.release } } } |
從命令行構(gòu)建app可以運(yùn)行下面的命令:
1 2 | gradle assembleDebug #debug構(gòu)建gradle assembleRelease #release構(gòu)建 |
我以前用過Maven做了幾個(gè)項(xiàng)目,發(fā)現(xiàn)用Maven來管理項(xiàng)目配置非常有用,尤其是在依賴管理方面。但是我發(fā)現(xiàn)Maven在某些情況下缺少靈活性,你不得不為某些特殊的情況進(jìn)行自定義。理論上你可以編寫自己的Maven插件,但實(shí)踐起來大多數(shù)用戶不會(huì)這么做通常他們會(huì)依賴現(xiàn)有的插件。所以我經(jīng)常使用Ant而不是Maven,因?yàn)樗谔幚眄?xiàng)目特殊操作,比如拷貝或修改代碼文件時(shí)更加靈活。
Gradle看上去在這兩方面都做得很好:通過插件為絕大多數(shù)的常用情況提供了全面支持,管理依賴關(guān)系方面與Maven做得同樣好;同時(shí)也提供了良好的靈活性,在需要修改構(gòu)建腳本時(shí)可以自由地定制。
我相信Gradle是構(gòu)建Android應(yīng)用的趨勢。Gradle還提供了很多其他很贊的特性,例如構(gòu)建“佐料(flavors)”等,本文沒有涉及。我相信Google采用Gradle是在Android發(fā)展上的一個(gè)重要進(jìn)步?,F(xiàn)在,我會(huì)將其他的項(xiàng)目都轉(zhuǎn)為使用Gradle。
-- 掃描加關(guān)注,微信號(hào): importnew --
|
|