Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / 使用Gradle构建Android项目

新项目中,使用了Google I/O 2013发布的新工具,使用Gradle构建Android项目,并且在新版的Intellig IDEA以及google的Android Studio对其支持。本文就介绍一下怎么使用gradle构建android项目,进行多个版本编译。Gradle创建项目目录结构 http://www.linuxidc.com/Linux/2012-07/64177.htmGradle 打包 Groovy 脚本成 jar与上传到maven repository http://www.linuxidc.com/Linux/2012-07/64178.htmGradle 构建 Android 应用常见问题解决指南 http://www.linuxidc.com/Linux/2013-10/90807.htmGradle - 简单测试驱动Web程序 http://www.linuxidc.com/Linux/2013-11/92611.htmGradle - 使用介绍 http://www.linuxidc.com/Linux/2013-11/92611.htm

Gradle是什么?

Gradle是以Groovy为基础,面向java应用,基于DSL语法的自动化构建工具。是google引入,替换ant和maven的新工具,其依赖兼容maven和ivy。
使用gradle的目的:
  • 更容易重用资源和代码;
  • 可以更容易创建不同的版本的程序,多个类型的apk包;
  • 更容易配置,扩展;
  • 更好的IDE集成;
<!--more-->

环境需求

Gradle1.10或者更高版本,grale插件0.9或者更高版本.
android SDK需要有Build Tools 19.0.0以及更高版本

Gradle基本结构

使用ide创建的gradle构建的项目,会自动创建一个build.gradle,如下:
12345678910111213141516buildscript {repositories {mavenCentral()}dependencies {classpath "com.android.tools.build:gradle:0.9.0"}}apply plugin: "android"android {compileSdkVersion 19buildToolsVersion "19.0.0"}
可以看到,构建文件主要有三个区域:buildscript{…}
Configures the build script classpath for this project. 设置脚本的运行环境
apply plugin: ‘android’
设置使用android插件构建项目
android{…}
设置编译android项目的参数

任务task的执行

通常会有以下任务:
  • assemble The task to assemble the output(s) of the project(输出一个项目文件,android就是打包apk)
  • check The task to run all the checks.(运行检查,检查程序的错误,语法,等等)
  • build This task does both assemble and check (执行assemble和check)
  • clean This task cleans the output of the project(清理项目输出文件)
上面的任务assemble,check,build实际上什么都不做,他们其实都是其他任务的集合。
执行一个任务的方式为gradle 任务名, 如gradle assemble在android项目中还有connectedCheck(检查连接的设备或模拟器),deviceCheck(检查设备使用的api版本)通常我们的项目会有至少生成两个版本,debug和release,我们可以用两个任务assembleDebug和assembleRelease去分别生成两个版本,也可以使用assemble一下子生成两个版本。gradle支持任务名缩写,在我们执行gradle assembleRelease的时候,可以用gradle aR代替。

基本的构建定制

我们可以在build.gradle文件中配置我们的程序版本等信息,从而可以生成多个版本的程序。
支持的配置有:
  • minSdkVersion 最小支持sdk版本
  • targetSdkVersion 编译时的目标sdk版本
  • versionCode 程序版本号
  • versionName 程序版本名称
  • packageName 程序包名
  • Package Name for the test application 测试用的程序包名
  • Instrumentation test runner 测试用的instrumentation实例
例如:
1234567891011android {compileSdkVersion 19buildToolsVersion "19.0.0"defaultConfig {versionCode 12versionName "2.0"minSdkVersion 16targetSdkVersion 16}}
 

目录配置

默认情况下项目目录是这样的 有两个组件source sets,一个main,一个test,对应下面两个文件夹。src/main/ src/androidTest/然后对于每个组件目录都有两个目录,分别存储java代码和资源文件java/ resources/对于android项目中呢,对应的目录和文件是AndroidManifest.xml //该文件src/androidTest/目录下不需要,程序执行时会自动构建res/ assets/ aidl/ rs/ jni/如果需要上面这些文件,但是不是在上面所说的目录,则需要设置。
12345678910sourceSets {main {java {srcDir "src/java"}resources {srcDir "src/resources"}}}
可以给main或者test设置根目录,如
123 sourceSets {androidTest.setRoot("tests")}
可以指定每种文件的存储路径
1234567891011sourceSets {main {manifest.srcFile "AndroidManifest.xml"java.srcDirs = ["src"]resources.srcDirs = ["src"]aidl.srcDirs = ["src"]renderscript.srcDirs = ["src"]res.srcDirs = ["res"]assets.srcDirs = ["assets"]}}
特别是我们的ndk生成的.so文件,通常我们不是放到jni目录中的,我们需要设置一下
12345sourceSets {main {jniLibs.srcDirs = ["libs"]}}

签名配置

可以给不同类型进行不同的配置,先看示例:
12345678910111213141516171819202122android {signingConfigs {debug {storeFile file("debug.keystore")}myConfig {storeFile file("other.keystore")storePassword "android"keyAlias "androiddebugkey"keyPassword "android"}}buildTypes {foo {debuggable truejniDebugBuild truesigningConfig signingConfigs.myConfig}}}
上面的配置文件配置两个类型,一个时debug类型,一个时自己的自定义类型。两个分别使用了不同的签名,同时对于生成密钥,要填写设置的密码。更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-05/102289p2.htm