Android中使用Gradle来构建App项目的入门指南

所属分类: 软件编程 / Android 阅读数: 922
收藏 0 赞 0 分享

gradle是Android开发中引入的全新的构建系统,因为全新的构建系统主要是出于下面的目的:

1. 方便复用代码和资源
2. 构建多种版本的apk更见简单,不论是为多渠道构建不同的apk还是构建不同环境的apk(debug,release)
3. 方便配置,扩展,自定义构建过程
4. 良好的IDE集成

为什么选择Gradle?
Gradle主要有以下几个有点:

1. 使用领域驱动语言(DSL)来描述构建逻辑
2. 构建脚本使用Groovy,可以方便的定制构建逻辑
3. 内建的依赖管理系统,使用Maven或者Ivy
4. 非常灵活。可以使用最佳实践但并不强制
5. 良好的IDE支持

Gradle项目使用项目根目录下的build.gradle文件来配置
一个最简单的Java项目的build.gradle如下

apply plugin: 'java' 

这表示改项目会使用Gradle的java插件,该插件是Gradle默认提供的,java插件提供了构建java应用和运行测试的功能。

最简单的Android项目build.gralde

buildscript { 
  repositories { 
    mavenCentral() 
  } 
 
 
  dependencies { 
    classpath 'com.android.tools.build:gradle:0.11.1' 
  } 
} 
 
 
apply plugin: 'android' 
 
 
android { 
  compileSdkVersion 19 
  buildToolsVersion "19.0.0" 
} 

该Android构建文件包含3个部分:
1.buildscript { ... } 配置驱动构建过程的代码,意思就是buildscript中的配置仅仅在构建过程中起作用,也就是构建程序所使用的配置。
上面的代码中就声明了我们的构建程序会使用Maven中央仓库,并且有一个classpath依赖是指向一个Maven库的。这个Maven库就是Android Gradle插件,版本号是0.11.1。

2.随后就是使用这个Android插件,和之前使用Java插件一样。

3.最后,android { ... }配置了Android项目构建时需要的所有参数。
默认情况下,只需要指定compileSdkVersion和buildtoolsVersion,compileSdkVersion指定使用哪个版本的sdk编译,buildToolsVersion指定使用哪个版本的构建工具。
注意点:
1. 只需要使用android插件,再使用Java插件会报错.
2. 在local.properties中使用sdk.dir属性指定SDK路径,或者你可以使用ANDROID_HOME环境变量。

项目结构
Gradle采用约定优于配置的原则,最简单方式是使用一个默认的目录结构。当然目录结构是可以自己修改的。

默认情况下,android gradle项目的代码都在src目录下,src下会有两个目录main和androidTest,其中main目录下是项目代码,androidTest目录下是测试代码。

src/main/
src/androidTest/

在main和androidTest目录下面,针对不同类型的code,又不会不同的目录。
对于Java和Android的Gradle插件,Java代码和Java资源分别对应了java目录和resources目录。Android插件还需要一些其他的目录和文件,比如

AndroidManifest.xml
res/
assets/
aidl/
rs/
jni/

下面我们来看一下如何更改这些默认的配置。

Android工程,默认情况下,java文件和resource文件分别在src/main/java和src/main/res目录下,在build.gradle文件,andorid{}里面添加下面的代码,便可以将java文件和resource文件放到src/java和src/resources目录下。(注意,如果你在gradle文件中修改了,只需要重新sync一下,gradle会自动创建新的目录,并将对应的文件移动到新的目录下)

sourceSets { 
  main { 
    java { 
      srcDir 'src/java' 
    } 
    resources { 
      srcDir 'src/resources' 
    } 
  } 
} 

更简便的写法是

sourceSets { 
  main.java.srcDirs = ['src/java'] 
  main.resources.srcDirs = ['src/resources'] 
} 

数组里其实是可以指定多个目录,这样就可以将代码和资源放置到多个目录下。
在看一个Android项目的例子:

android { 
  sourceSets { 
    main { 
      manifest.srcFile 'AndroidManifest.xml' 
      java.srcDirs = ['src'] 
      resources.srcDirs = ['src'] 
      aidl.srcDirs = ['src'] 
      renderscript.srcDirs = ['src'] 
      res.srcDirs = ['res'] 
      assets.srcDirs = ['assets'] 
    } 
 
 
    androidTest.setRoot('tests') 
  } 
} 

这里的main code其实使用的就是Android Gradle的默认值,而androidTest不再使用默认的androidTest目录,而是使用tests目录。

更多精彩内容其他人还在看

老生常谈Android HapticFeedback(震动反馈)

下面小编就为大家带来一篇老生常谈Android HapticFeedback(震动反馈)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

详谈OnTouchListener与OnGestureListener的区别

下面小编就为大家带来一篇详谈OnTouchListener与OnGestureListener的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android仿知乎悬浮功能按钮FloatingActionButton效果

前段时间在看属性动画,恰巧这个按钮的效果可以用属性动画实现,下面通过本文给大家分享adroid仿知乎悬浮功能按钮FloatingActionButton效果,需要的朋友参考下吧
收藏 0 赞 0 分享

解决Android V7后自定义Toolbar、ActionBar左侧有空白问题

这篇文章主要介绍的Android V7后自定义Toolbar、ActionBar左侧有空白问题的解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android常见控件使用详解

这篇文章主要为大家详细介绍了Android常见控件的使用方法,包括ProgressBar进度条控件、AlertDialog对话框控件等,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android实现简洁的APP更新dialog数字进度条

这篇文章主要为大家详细介绍了Android实现简洁的APP更新dialog数字进度条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android 判断当前语言环境是否是中文环境

本文主要介绍了Android 判断当前语言环境是否是中文环境的方法。具有很好的参考价值。下面跟着小编一起来看下吧
收藏 0 赞 0 分享

详谈Android中Matrix的set、pre、post的区别

下面小编就为大家带来一篇详谈Android中Matrix的set、pre、post的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android实现登录界面记住密码的存储

这篇文章主要为大家详细介绍了Android SharedPreferrences实现登录界面记住密码的存储,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android 使用SharedPreferrences储存密码登录界面记住密码功能

Android存储方式有很多种,在这里所用的存储方式是SharedPreferrences, 其采用了Map数据结构来存储数据,以键值的方式存储,可以简单的读取与写入,下面通过实例代码给大家讲解下,需要的朋友参考下吧
收藏 0 赞 0 分享
查看更多