gradle构建android项目
工具:
Android Studio2.0
gradle-2.10
一、Android常识
在做Android开发的时候我们首先必须要有一个SDK。一般SDK的主要作用就是将硬件和软件进行分离,做软件开发的程序员不需要知道如果去控制底层硬件的行为,SDK已经将对硬件的操作封装好,并且为我们提供了一套API,我们只需要调用相应的API就可以达到控制硬件的效果。官方的SDK是由google来发布,而每个硬件厂商会根据自己的硬件情况对SDK进行修改,主要是对底层的修改,并且保证上层API接口不变,这样我们开发的APP才能够运行在不同的硬件设备上。下来我们看看Android Studio中的SDK。
1.打开SDK管理器
该管理器主要管理我们已将下载好的各个版本的SDK



SDK管理器的部分内容


Tools Android工具集
- SDK Tools工具集,该工具集中包含了许多我们开发时用到的工具。比如说模拟器工具(模拟Android系统)、画图工具、模拟SD卡工具等
 - SDK Platform-tools工具集 该工具集中有adb指令工具、sqlite数据库、堆栈查看工具等。
 - SDK Build-tools 构建我们的android项目,其下面有dex、aapt等工具,对我们的项目进行编译、打包等。
 - 上面这个三个工具都能在我们下载的SDK中找到
 Andoid6.0(API 23)
该包的主要作用是用来构建模拟器的,其中的SDK的开发文档,SDK的平台依赖,cpu模拟器(包含多个CPU架构,System Image)。如果我们需要使用AVD的话就需要下载该包。
Extras 主要提供Android开发时需要的类库,这里安装了Google提供的类库
一、gradle文件
当我们新建一个android项目后,Andriod Studio会自动为我们创建多个gradle文件和目录,具体内容如下:

下面我们分别对这几个目录进行分析:
二、app下的build.gradle
apply plugin: 'com.android.application'
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"
    defaultConfig {
        applicationId "xidian.dy.com.basicapp"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
}
- apply plugin 来声明程序,这里声明这是个android应用
 - compileSdkVersion 23 来声明编译android程序时使用的SDK版本,不同版本其API会有差异,但是一般都向下兼容的
 - buildToolsVersion "23.0.3" 使用的构建工具版本,有时我们导入了别人的工程,但是就是编译不通过,其主要原因就是我们构建工具版本不对
 - applicationId 代表应用的包名,这是我们应用的唯一标识
 - minSdkVersion 15 为了我们的程序能够在低版本的Android系统上运行,需要指定最低版本的系统
 - targetSdkVersion 23 这个可以认为我们的应用运行最合适的SDK版本
 - VersionCode 1 前面提到包名是应用的唯一表示,但是为了以防万一报名有重复的,又加入该字段(整型)。它还有一个重要作用就是版本覆盖,当我们安装高版本的应用 时会将低版本覆盖掉就是引用高版本的VersionCode值要大
 - versionName 给人看的
 - minifyEnabled 是否开启混淆,主要为了提高安全性,防止别人反编译我们的应用来查找代码漏洞
 - proguardFiles 这部分有两部分构成一个是android自带的混淆规则(proguard-android.txt),第二部分是我们自定义的混淆规则(proguard-rules.pro),最终的混淆结果 这两个文件共同作用
 - compile fileTree 编译libs目录下的所有jar包,要编译成dex文件
 
三.MyApplication下的gradle文件夹
该文件夹中有两个文件,主要的文件是配置文件properties
#Mon Dec :: PST
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip
可以看到里面声明了gradle的目录与下载路径以及当前项目使用的gradle版本,这些默认的路径我们一般不会更改的,这个文件里指明的gradle版本不对也是很多导包不成功的原因之一。
四、MyApplication下的build.gradle
这个文件是整个项目的gradle基础配置文件,我们来看看这里面的内容。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}
从上面的注视中我们可以看到这个一个顶层的配置文件,这里的配置可以影响到每个子配置文件。buildscript内容主要包含了两个方面:一个是声明仓库的源,这里可以看到是指明的jcenter(), 之前版本则是mavenCentral(), jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。另一个是声明了使用gradle plugin的版本为2.0.0。
五、MyApplication下的settings.gradle
这个文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module,我们这里的module只有一个app
include ':app'
六、总结
关于gradle就介绍到这里,对于项目/工程与module的关系请查看链接
http://stormzhang.com/devtools/2014/11/28/android-studio-tutorial2/
gradle构建android项目的更多相关文章
- 使用Gradle构建Android项目
		
阅读目录 Gradle是什么? 环境需求 Gradle基本结构 任务task的执行 基本的构建定制 目录配置 签名配置 代码混淆设置 依赖配置 输出不同配置的应用 生成多个渠道包(以Umeng为例) ...
 - gradle构建android项目详解
		
1.用Gradle构建 1.1 工程结构 如图所示,这是一个不能更普通的Android的Gradle工程了. 根目录下面的settings.gradle当中主要是用来include子模块的,比如我们这 ...
 - gradle学习系列之eclipse中简单构建android项目
		
看不到图片能够去訪问这个网址看看:http://pan.baidu.com/s/1o6FrFkA 一.什么是Gradle 官网www.gradle.org上介绍Gradle是升级版(evolved)的 ...
 - 在内网使用Gradle构建Android Studio项目
		
在Android Studio项目中,默认的远程仓库为jcenter,如果在项目引用了一些类库,Gradle构建程序的时候会将这些依赖类库从jcenter网站下载到本地,如我们在 build.grad ...
 - 用Gradle 构建android程序
		
前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gradle 来构建项目, 下定决心把android gralde 构建项目 ...
 - Jenkins构建Android项目持续集成之findbugs的使用
		
Findbugs简介 关于findbugs的介绍,可以自行百度下,这里贴下百度百科的介绍.findbugs是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题 ...
 - 使用Maven构建Android项目
		
http://www.ikoding.com/build-android-project-with-maven/ 之前一直在做WEB前端项目,前段时间接手第一个Android项目,拿到代码之后,先试着 ...
 - 使用 Gradle 构建 Java 项目
		
使用 Gradle 构建 Java 项目 这个手册将通过一个简单的 Java 项目向大家介绍如何使用 Gradle 构建 Java 项目. 我们将要做什么? 我们将在这篇文档航中创建一个简单的 Jav ...
 - Gradle 构建 android 应用常见问题解决指南
		
前言 android gradle 插件已经发展到0.5.7,同时gradle 本身也到了1.8,相比两个月前,android gradle 更快,更完善,也更好用了,为了让各位androider 早 ...
 
随机推荐
- nyoj 1029/hdu 3714 Error Curves 三分
			
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3714 懂了三分思想和F(x)函数的单调性质,这题也就是水题了 #include "stdio ...
 - js模板
			
作用 适合用于定义模板(模板容器),不解析(渲染/执行). 为什么这样使用 在js里面,经常需要使用js往页面中插入html内容.比如这样: var number = 123; $('#d').app ...
 - Rotate Array
			
Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...
 - Sql 随机更新一条数据返回更新数据的ID编号
			
DECLARE @parimaryTable(临时表) Table(prizecode varchar(50)); update top (1) 数据表 set 字段a='数值' ,字段b=‘数值 ...
 - zookeeper中Watcher和Notifications
			
问题导读:1.zookeeper观察者什么时候调用?2.传统远程轮询服务存在什么问题?3.zk中回调服务的机制是什么?4.zk中watcher为什么不永久注册?5.什么是znode? 在阅读之前首先明 ...
 - ZOJ 2674	 Strange Limit
			
欧拉函数. #include<iostream> #include<stdio.h> #include<string.h> #include<algorith ...
 - POJ 1151 Atlantis 线段树求矩形面积并 方法详解
			
第一次做线段树扫描法的题,网搜各种讲解,发现大多数都讲得太过简洁,不是太容易理解.所以自己打算写一个详细的.看完必会o(∩_∩)o 顾名思义,扫描法就是用一根想象中的线扫过所有矩形,在写代码的过程中, ...
 - smarty中三种变量的访问方式
			
在模板中smarty有三种变量,第一种,php分配的变量,第二种配置文件里的变量,第三种,PHP全局数组里的变量,配置文件里变量的访问方式可以是{#bgcolor#},"#"必须紧 ...
 - jQuery on(),live(),trigger()
			
jQuery on()方法是官方推荐的绑定事件的一个方法. $(selector).on(event,childSelector,data,function,map); 由此扩展开来的几个以前常见的方 ...
 - 静态时序分析(static timing analysis)
			
静态时序分析(static timing analysis,STA)会检测所有可能的路径来查找设计中是否存在时序违规(timing violation).但STA只会去分析合适的时序,而不去管逻辑操作 ...