使用Gradle构建Android项目
|
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 { // 定义一些项目需要的JAR函数库 LIBS_DIR = "../../../libs" // 需要从maven中央库得到gradle的android插件 repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.4.2' } } // 声明项目是一个android构建 apply plugin: 'android' dependencies { // 同时用本地maven库查找依赖 repositories { mavenLocal() } // 下面是一些app需要的jar文件 compile files( "${LIBS_DIR}/hiscore/hiscore.jar" ) compile files( "${LIBS_DIR}/GoogleAnalytics/libGoogleAnalytics.jar" ) // 这是一个我存放在本地maven仓库(使用“aar”格式)的android函数库 compile ( 'com.mopub.mobileads:mopub-android-sdk:unknown' ) } //android 构建的项目定义 android { compileSdkVersion 15 buildToolsVersion "17.0.0" // 下面的代码路径不是推荐的新项目结构 // 我仍然使用的Eclipse风格结构 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' ) } // 声明创建一个带签名的发布版本细节 signingConfigs { release { storeFile file ( "../keys/android.keystore" ) storePassword "######" keyAlias "######" keyPassword "######" } } // 声明此发布构建在签名之前需要运行proguard buildTypes { release { runProguard true proguardFile getDefaultProguardFile( 'proguard-android.txt' ) proguardFile 'proguard.cfg' signingConfig signingConfigs.release } } } |
从命令行构建app可以运行下面的命令:
1 2 | gradle assembleDebug #debug构建 gradle assembleRelease #release构建 |
我以前用过Maven做了几个项目,发现用Maven来管理项目配置非常有用,尤其是在依赖管理方面。但是我发现Maven在某些情况下缺少灵活性,你不得不为某些特殊的情况进行自定义。理论上你可以编写自己的Maven插件,但实践起来大多数用户不会这么做通常他们会依赖现有的插件。所以我经常使用Ant而不是Maven,因为它在处理项目特殊操作,比如拷贝或修改代码文件时更加灵活。
Gradle看上去在这两方面都做得很好:通过插件为绝大多数的常用情况提供了全面支持,管理依赖关系方面与Maven做得同样好;同时也提供了良好的灵活性,在需要修改构建脚本时可以自由地定制。
我相信Gradle是构建Android应用的趋势。Gradle还提供了很多其他很赞的特性,例如构建“佐料(flavors)”等,本文没有涉及。我相信Google采用Gradle是在Android发展上的一个重要进步。现在,我会将其他的项目都转为使用Gradle。
-- 扫描加关注,微信号: importnew --
|
来自: orion360doc > 《Android》