使用Gradle构建Android项目

移动开发 Android
Gradle看上去在这两方面都做得很好:通过插件为绝大多数的常用情况提供了全面支持,管理依赖关系方面与Maven做得同样好;同时也提供了良好的灵活性,在需要修改构建脚本时可以自由地定制。我相信Gradle是构建Android应用的趋势。Gradle还提供了很多其他很赞的特性,例如构建“佐料(flavors)”等,本文没有涉及。我相信Google采用Gradle是在Android发展上的一个重要进步。现在,我会将其他的项目都转为使用Gradle。

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

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

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

- 改进的依赖关系管理

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

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

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

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         } 
         } 
     }  
  • 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.

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

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

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

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

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

责任编辑:闫佳明 来源: importnew
相关推荐

2022-12-30 08:17:28

Gradle多模块项目

2017-04-11 09:07:55

AndroidGradle构建变体

2017-04-13 14:55:07

AndroidGradle多模块构建

2015-03-20 10:01:50

Android StuGradle

2015-01-26 09:57:47

GradleMaven Centr

2016-12-28 10:37:46

AndroidGradleApache Ant

2022-01-07 15:11:27

项目Go 框架

2017-11-27 13:09:00

AndroidGradle代码

2020-04-23 08:55:01

LinuxGradle工具

2024-05-15 08:20:08

GradleMaven工具

2021-05-19 14:46:41

Space XRust语言

2017-04-10 14:46:29

AndroidGradleBuild.gradl

2017-03-02 14:35:33

Androidgradle常用配置

2021-07-26 05:21:37

JenkinsAndroid自动化

2017-04-10 13:43:34

AndroidGradleAS

2021-05-17 09:27:07

项目实战优化项目构建时间

2017-03-14 19:18:56

AndroidGradle实践

2013-09-26 10:50:38

甲骨文AvatarJavaScript

2011-06-03 13:38:49

Android 开发环境

2015-01-15 10:33:22

Android Stu导入开源库
点赞
收藏

51CTO技术栈公众号