使用Gradle构建Android项目

转自: http://mobile.51cto.com/aprogram-403786.htm

在前一阵子的Google IO大会上我注意到Android Studio开发环境引起了大家的关注。我发现Eclipse经常会变慢而且健壮性不强,所以一个新的替代Android IDE是最受欢迎的消息。在仔细关注这次的发布时,我发现另一个亮点是基于Gradle的Android项目新的构建系统。因此我决定更仔细地了解Gradle。

下面列举了一些使用Gradle构建Android项目的好处:

- 在IDE环境和命令行下使用同一个构建系统

- 改进的依赖关系管理

- 更容易地集成到自动化构建系统

一个额外的好处来自Android函数库包格式“aar”格式。以前,Android函数库通常需要被导入到IDE以此将App需要的资源加入编译。但是现在的Android函数库可以被直接包含,与“jar”文件被Java项目包含的方式类似。这项功能虽然出现已久,但确实非常受欢迎。

下面是我一个项目的gradle构建脚本:

   
   
  1. buildscript {      
  2. //定义一些项目需要的JAR函数库      
  3. LIBS_DIR = "../../../libs"       
  4. //需要从maven中央库得到gradle的android插件      
  5. repositories {         
  6.        mavenCentral()      
  7. }        
  8. dependencies {  
  9.         classpath 'com.android.tools.build:gradle:0.4.2' 
  10.     } 
  11.  }    
  12. //声明项目是一个android构建  
  13. apply plugin: 'android'  dependencies { 
  14.      //同时用本地maven库查找依赖 
  15.      repositories { 
  16.          mavenLocal() 
  17.      } 
  18.        //下面是一些app需要的jar文件 
  19.      compile files("${LIBS_DIR}/hiscore/hiscore.jar"
  20.      compile files("${LIBS_DIR}/GoogleAnalytics/libGoogleAnalytics.jar")  
  21.       //这是一个我存放在本地maven仓库(使用“aar”格式)的android函数库 
  22.      compile ('com.mopub.mobileads:mopub-android-sdk:unknown') }   //android构建的项目定义 android { 
  23.      compileSdkVersion 15     buildToolsVersion "17.0.0" 
  24.       //下面的代码路径不是推荐的新项目结构 
  25.      //我仍然使用的Eclipse风格结构 
  26.      sourceSets { 
  27.          main { 
  28.              manifest.srcFile 'AndroidManifest.xml' 
  29.                java.srcDirs = ['src']  
  30.               resources.srcDirs = ['src']  
  31.             aidl.srcDirs = ['src']   
  32.              renderscript.srcDirs = ['src']   
  33.              res.srcDirs = ['res'
  34.              assets.srcDirs = ['assets'
  35.          } 
  36.            instrumentTest.setRoot('tests'
  37.      } 
  38.        //声明创建一个带签名的发布版本细节 
  39.      signingConfigs { 
  40.          release { 
  41.              storeFile file("../keys 
  42. /android.keystore") 
  43.              storePassword "######" 
  44.             keyAlias "######" 
  45.             keyPassword "######" 
  46.                     } 
  47.      } 
  48.        //声明此发布构建在签名之前需要运行proguard 
  49.      buildTypes { 
  50.          release { 
  51.              runProguard true 
  52.             proguardFile getDefaultProguardFile('proguard-android.txt'
  53.              proguardFile 'proguard.cfg' 
  54.             signingConfig signingConfigs.release         } 
  55.          } 
  56.      }  

从命令行构建app可以运行下面的命令:

   
   
  1. gradle assembleDebug    #debug构建 
  2. gradle assembleRelease  #release构建  

我以前用过Maven做了几个项目,发现用Maven来管理项目配置非常有用,尤其是在依赖管理方面。但是我发现Maven在某些情况下缺少灵活性,你不得不为某些特殊的情况进行自定义。理论上你可以编写自己的Maven插件,但实践起来大多数用户不会这么做通常他们会依赖现有的插件。所以我经常使用Ant而不是Maven,因为它在处理项目特殊操作,比如拷贝或修改代码文件时更加灵活。

Gradle看上去在这两方面都做得很好:通过插件为绝大多数的常用情况提供了全面支持,管理依赖关系方面与Maven做得同样好;同时也提供了良好的灵活性,在需要修改构建脚本时可以自由地定制。

我相信Gradle是构建Android应用的趋势。Gradle还提供了很多其他很赞的特性,例如构建“佐料(flavors)”等,本文没有涉及。我相信Google采用Gradle是在Android发展上的一个重要进步。现在,我会将其他的项目都转为使用Gradle。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值