《Gradle 权威指南》读书笔记——第七章 Android Gradle 插件
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
更多相关文章
- Android EditText TextWatcher 回调方法参数说明
- Android生成界面的两种方法:setContentView和inflate的区别
- Android 使用Canvas在图片上绘制文字的方法
- Android 项目快速更改包名的方法
- 『ANDROID』 在Android开发过程中,常Android 更新UI的两种方法—
- Android 软件盘弹出时把view顶上去的处理方法
- android防止APK被反编译的方法