《Gradle 权威指南》读书笔记——第七章 Android Gradle 插件

8 篇文章 0 订阅
6 篇文章 0 订阅

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

Android Gradle插件分类

//app
com.android.application
//aar
com.android.library
//test
com.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.gradle
buildscript{
    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=23
android.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{}里新增任意多个我们需要构建的类型

名称意义
releaseBuildType类型
minifyEnable是否开启混淆
proguardFilesproguard的配置文件
proguardFilesgetDefaultProguardFile(‘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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Annoke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值