工具:

  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项目的更多相关文章

  1. 使用Gradle构建Android项目

    阅读目录 Gradle是什么? 环境需求 Gradle基本结构 任务task的执行 基本的构建定制 目录配置 签名配置 代码混淆设置 依赖配置 输出不同配置的应用 生成多个渠道包(以Umeng为例) ...

  2. gradle构建android项目详解

    1.用Gradle构建 1.1 工程结构 如图所示,这是一个不能更普通的Android的Gradle工程了. 根目录下面的settings.gradle当中主要是用来include子模块的,比如我们这 ...

  3. gradle学习系列之eclipse中简单构建android项目

    看不到图片能够去訪问这个网址看看:http://pan.baidu.com/s/1o6FrFkA 一.什么是Gradle 官网www.gradle.org上介绍Gradle是升级版(evolved)的 ...

  4. 在内网使用Gradle构建Android Studio项目

    在Android Studio项目中,默认的远程仓库为jcenter,如果在项目引用了一些类库,Gradle构建程序的时候会将这些依赖类库从jcenter网站下载到本地,如我们在 build.grad ...

  5. 用Gradle 构建android程序

    前言 android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gradle 来构建项目, 下定决心把android gralde 构建项目 ...

  6. Jenkins构建Android项目持续集成之findbugs的使用

    Findbugs简介 关于findbugs的介绍,可以自行百度下,这里贴下百度百科的介绍.findbugs是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题 ...

  7. 使用Maven构建Android项目

    http://www.ikoding.com/build-android-project-with-maven/ 之前一直在做WEB前端项目,前段时间接手第一个Android项目,拿到代码之后,先试着 ...

  8. 使用 Gradle 构建 Java 项目

    使用 Gradle 构建 Java 项目 这个手册将通过一个简单的 Java 项目向大家介绍如何使用 Gradle 构建 Java 项目. 我们将要做什么? 我们将在这篇文档航中创建一个简单的 Jav ...

  9. Gradle 构建 android 应用常见问题解决指南

    前言 android gradle 插件已经发展到0.5.7,同时gradle 本身也到了1.8,相比两个月前,android gradle 更快,更完善,也更好用了,为了让各位androider 早 ...

随机推荐

  1. nyoj 1029/hdu 3714 Error Curves 三分

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3714 懂了三分思想和F(x)函数的单调性质,这题也就是水题了 #include "stdio ...

  2. js模板

    作用 适合用于定义模板(模板容器),不解析(渲染/执行). 为什么这样使用 在js里面,经常需要使用js往页面中插入html内容.比如这样: var number = 123; $('#d').app ...

  3. Rotate Array

    Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array  ...

  4. Sql 随机更新一条数据返回更新数据的ID编号

    DECLARE @parimaryTable(临时表)  Table(prizecode varchar(50)); update top (1)  数据表 set 字段a='数值' ,字段b=‘数值 ...

  5. zookeeper中Watcher和Notifications

    问题导读:1.zookeeper观察者什么时候调用?2.传统远程轮询服务存在什么问题?3.zk中回调服务的机制是什么?4.zk中watcher为什么不永久注册?5.什么是znode? 在阅读之前首先明 ...

  6. ZOJ 2674 Strange Limit

    欧拉函数. #include<iostream> #include<stdio.h> #include<string.h> #include<algorith ...

  7. POJ 1151 Atlantis 线段树求矩形面积并 方法详解

    第一次做线段树扫描法的题,网搜各种讲解,发现大多数都讲得太过简洁,不是太容易理解.所以自己打算写一个详细的.看完必会o(∩_∩)o 顾名思义,扫描法就是用一根想象中的线扫过所有矩形,在写代码的过程中, ...

  8. smarty中三种变量的访问方式

    在模板中smarty有三种变量,第一种,php分配的变量,第二种配置文件里的变量,第三种,PHP全局数组里的变量,配置文件里变量的访问方式可以是{#bgcolor#},"#"必须紧 ...

  9. jQuery on(),live(),trigger()

    jQuery on()方法是官方推荐的绑定事件的一个方法. $(selector).on(event,childSelector,data,function,map); 由此扩展开来的几个以前常见的方 ...

  10. 静态时序分析(static timing analysis)

    静态时序分析(static timing analysis,STA)会检测所有可能的路径来查找设计中是否存在时序违规(timing violation).但STA只会去分析合适的时序,而不去管逻辑操作 ...