您的位置:首页 > 移动开发 > Android开发

gradle构建android项目

2016-05-30 22:19 453 查看
工具:

  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 28 10:00:20 PST 2015
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/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: