AndroidGradle插件其实就是一个Gradle的第三方插件
优点:容易重用代码和资源,
容易创建应用衍生版本(多渠道包),
容易配置扩展和自定义构建过程,
和IDE无缝整合

Android Gradle插件分类

//appcom.android.application//aarcom.android.library//testcom.android.test

应用Andriod插件

buildscript{    repositories{        jcenter()    }    dependencies{        classpath'com.android.tools.build:1.5.0'    }}apply plugin:'com.android.application'//android{}是Android插件的提供的一个扩展类型,用于自定义AndroidGradle工程android{    compileVersion 23    buildToolsVersion "23.0.1"}​

工程结构

project  |--build.gradle  |--project.iml  |--libs  |--proguard-rules.pro  |--src  |   |----androidTest  |   |      |-- java  |   |----main  |   |       |--AndroidManifest.xml //android特有  |   |       |--java  |   |       |--res //特有  |   |-----test  |           |--java

androidTest,main,test 分别是 3个 SourceSet 。
Android Gradle 工程配置,都是在android{}是唯一的入口,通过它可以实现对Android Gradle项目进行自定义的扩展其具体实现是com.android.build.gradle.AppExtendsion,是Project的一个扩展

//build.gradlebuildscript{    repositories{        jcenter()    }    dependencies{        classpath'com.android.tools.build:gradle:1.5.0'    }}​​apply plugin:'com.android.application'android{    compileSdkVersion 23    buildToolsVersion "23.0.1"    defaultConfig{        applicationId "org.fly.xxx"        minSdkVersion 14        targetSdkVersion 23        versionCode 1        versionName "1.0"    }    buildTypes{        release{            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguardrule.tx'        }    }   }dependencies{    }


//getExtensionClass(),在AndroidGradle插件中返回就是com.android.build.gradle.AppExtension
//所以Android的很多配置可以从这个类中去找

extension=project.extendsions.create('android',getExtensionClass()    ,(ProjectInternal)project,instantiator,androidBuilder,sdkHandler    ,buildTypeContainer,productFlavorContainer,signingConfigContainer    ,extraModelInfo,isLibrary())

android 插件属性
compileSdkVersion:
配置我们编译的Android工程SDK,该配置的原型就是是一个compileSdkVersion方法

android{    compileSdkVersion 23}public void compileSdkVersion(int apiLevel){    compileSdkVersion("android-"+apiLevel)}​//还有一个重载方法public void compileSdkVersion(String version){    chekWriteability()    this.target=version}android{    comileSdkVersion 'android-23'}​//还有一个set方法,所以我们可以把他当成一个属性使用android.compileSdkVersion=23android.compileSdkVersion='android-23'​public void setCompileSdkversion(int level){    ...}public void setCompileSdkversion(String level){    ...}


buildToolsVersion:

//常用方法public void buildToolsVersion(String version){    checkWritability();    buildToolsRevision=FullRevision.parseRevision(version);}//同样有set方法public String getBuildToolsVersion(){    return buildToolsRevision.toString();}public void setBuildToolsVersion(String version){    buildToolsVersion(version);}

defaultConfig:
defaultConfig是一个ProductFlavor,具有默认的配置,ProductFlavor允许我们根据不同的情况生成多个不同的APK包,比如我们的多渠道包.
如果不针对我们自定义的ProductFlavor单独配置,会为这个ProductFlavor使用默认的defaultConfig配置.

参数 作用
applicationId 配置我们的包名
minSdkVersion 最低支持的安卓版本
targetSdkVersion 基于哪个安卓版本开发的
versionCode 版本号
versionName 版本名称

buildTypes:
buildTypes,一个NamedDomainObjectContainer,与SourceSet类型是一个域对象.
SourceSet中有main/test,同样的,buildTypes中有release,debug等等.
我们可以在buildTypes{}里新增任意多个我们需要构建的类型

名称 意义
release BuildType类型
minifyEnable 是否开启混淆
proguardFiles proguard的配置文件
proguardFiles getDefaultProguardFile(‘proguard-android.txt’),‘proguard-rule.pro’

AndroidGradle任务
Android插件是基于Java插件的,所以Android插件基本包含了所有的Java插件的功能,如assemable,check,build等,
此外还添加了connectCheck deviceCheck lint install uninstall 等等任务

任务名称 作用
connectCheck 在所有连接的设备或模拟器上运行check检查
deviceCheck 通过API连接远程设备运行check,被用于CI(持续集成)服务器上
lint 在所有ProductFlavor上运行lint检查
install 在已经连接的设备上安装应用
connectCheck 在所有连接的设备或模拟器上运行check检查
uninstall 卸载应用
signingReport 打印App的签名
androidDependencies 打印Android的依赖

一般我们常用的build assemable clean lint check,通过这些任务可以打包生成apk,对现有的Android进行lint检查

从Eclipse迁移项目到AndroidStudio
书中P93

更多相关文章

  1. Android EditText TextWatcher 回调方法参数说明
  2. Android生成界面的两种方法:setContentView和inflate的区别
  3. Android 使用Canvas在图片上绘制文字的方法
  4. Android 项目快速更改包名的方法
  5. 『ANDROID』 在Android开发过程中,常Android 更新UI的两种方法—
  6. Android 软件盘弹出时把view顶上去的处理方法
  7. android防止APK被反编译的方法

随机推荐

  1. 【招聘】杭州蘑菇街招高级前端
  2. 盘点2015年前端早读课专访
  3. 专访|360奇舞团团长@月影
  4. 专访|美的电商高级前端工程师@姬小光
  5. 一文带你学会AQS和并发工具类的关系2
  6. 盘点2015年前端工程师必备图书@前端早读
  7. 【招聘】北京计蒜客招初/中级前端工程师
  8. 【招聘】西安瑞木招web前端
  9. 【招聘】爱奇艺招广告前端
  10. 【招聘】广州37游戏招初/中级前端工程师