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

gradle构建android项目

gradle构建android项目

gradle构建android项目

SDK管理器的部分内容

gradle构建android项目

gradle构建android项目

  • 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文件和目录,具体内容如下:

gradle构建android项目

下面我们分别对这几个目录进行分析:

 二、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/