快捷搜索:  as  MTU2MDkyMDI1Nw`  as and x=y  xxx  as and 11

2.【干货篇】Gradle这么差还来面腾讯?

上一篇:【干货篇】Gradle这么差还来面腾讯?

六.Android Gradle插件

1.概述

Android Gradle插件承袭于Java插件,具有Java插件的所有特点,也有自己的特点,看下官方先容:

可以很轻易地重用代码和资本

可以很轻易地创建利用的衍生版本

可以很轻易地设置设置设备摆设摆设、扩展以及自定义构建历程

和IDE无缝整合

2.插件分类

App利用工程:天生可运行apk利用;id: com.android.application

Library库工程:天生aar包给其他的App工程公用;id: com.android.library

Test测试工程:对App利用工程或Library库工程进行单元测试;id: com.android.test

3.项目布局

|-example

| |-build.gradle| |-example.iml

| |-libs

| |-proguard-rules.pro 肴杂设置设置设备摆设摆设文件

| |-src

||-androidTest

||-java Android单元测试代码

||-main

||-java App主代码

||-res 资本文件

||-AndroidManifest.xml 设置设置设备摆设摆设文件

| |-test

||-java 通俗单元测试代码

4.内置义务

Java插件内置义务:如build、assemble、check等

Android特有的常用义务:

connectedCheck义务:在所有连接的设备或者模拟器上运行check反省

deviceCheck义务:经由过程API连接远程设备运行checks

lint义务:在所有ProductFlavor上运行lint反省

install、uninstall义务:在已连接的设备上安装或者卸载App

signingReport义务:打印App署名

androidDependencies义务:打印Android 依附

5.利用实例

//利用插件,Android Gradle属于Android宣布的第三方插件

buildscript{

repositories{

jcenter()

}

dependencies{

classpath 'com.android.tcols.build:gradle:1.5.0'

}

}

apply plugin:'com.android.application'

//自定义设置设置设备摆设摆设进口,后续详解

android{

compileSdkVersion 23 //编译Android工程的SDK版本

buildToolsVersion "23.0.1" //构建Android工程所用的构建对象版本

defaultConfig{

applicationId "org.minmin.app.example"

minSdkVersion 14

targetSdkVersion 23

versionCode 1

versionName "1.0"

}

buildTypes{

release{

minifyEnabled false

proguardFiles getDefaultPraguardFile('proguard-andrcid.txt'), 'proguard-rules.pro'

}

}

}

//设置设置设备摆设摆设第三方依附

dependencies{

compile fileTree(dir:'libs', include:['*.jar'])

testCompile 'junit:junit:4.12'

compile 'com.android.support:appcorpat-v7:23.1.1'

compile 'com.android.support:design:23.1.1'

}

a.defaultConfig

感化:用于定义所有的默认设置设置设备摆设摆设,是一个ProductFlavor,若ProductFlavor没有被特殊定义,默认应用defaultConfig块指定的设置设置设备摆设摆设

常用设置设置设备摆设摆设:

b.buildTypes

感化:是构建类型,在Android Gradle中内置了debug和release两个构建类型,区别在于能否在设备上调试和署名不合

每一个BuildType都邑天生一个SourceSet以及响应的assemble义务

常用设置设置设备摆设摆设:

c.signingConfigs

感化:设置设置设备摆设摆设署名设置,标记App独一性、保护App

可以对不合构建类型采纳不合署名要领:debug模式用于开拓调试,可以直接应用Android SDK供给的默认debug署名证书;release模式用于宣布,必要手动设置设置设备摆设摆设

常用设置设置设备摆设摆设:

android {

signingConfigs {

release{

storeFile file('myFile.keystore')

storePassword 'psw'

keyAlias 'myKey'

keyPassword 'psw'

}

}

}

d.productFlavors

感化:添加不合的渠道、并对其做不合的处置惩罚

常用设置设置设备摆设摆设:

//定义baidu和google两个渠道,并声明两个维度,优先级为abi>version>defaultConfig

android{

flavorDimensions "abi", "version"

productFlavors{

google{

dimension "abi"

}

baidu{

dimension "version"

}

}

e.buildConfigFiled

感化:在buildTypes、ProductFlavor自定义字段等设置设置设备摆设摆设

措施:buildConfigField(String type,String name,String value)

type:字段类型

name:字段常量名

value:字段常量值

android{

buildTypes{

debug{

buildConfigField "boolean", "LOG_DEBUG", "true"

buildConfigField "String", "URL", ' "http://www.ecjtu.jx.cn/" '

}

}

}

6.多项目构建

和Java Grdle多项目构建一样的,经由过程settings.gradle设置设置设备摆设摆设治理多项目;在每个项目都有一个build.gradle,采纳项目依附就能实现多项目协作。

项目直接依附一样平常适用于关联较慎密、弗成复用的项目,假如想让项目被其他项目所复用,比如公共组件库、对象库等,可以零丁宣布出去。

7.多渠道构建

a.基滥觞基本理

构建变体(Build Variant)=构建类型(Build Type)+构建渠道(Product Flavor)

Build Type有release、debug两种构建类型

Product Flavor有baidu、google两种构建渠道

Build Variant有baiduRelease、baiduDebug、googleRelease、googleDebug四种构件产出

构建渠道(Product Flavor)还可以经由过程dimension进一步细化分组

assemble开首的认真天生构件产物(Apk)

assembleBaidu:运行后会天生baidu渠道的release和debug包

assembleRelease:运行后会天生所有渠道的release包

assembleBaiduRelease:运行后只会天生baidu的release包

b.构建要领:

经由过程占位符manifestPlaceholders实现:

//AndroidManifest

//build.gradle

android{

productFlavors{

google{

manifestPlaceholders.put("UMENG_ CHANNEL", "google")

}

baidu{

manifestPlaceholders.put("UMENG_ CHANEL", "baidu")

}

}

//改进:经由过程productFlavors批量改动

android{

productFlavors{

google{

}

baidu{

}

ProductFlavors.all{ flavor->

manifestPlaceholders.put("UMENG_ CHANEL", name)

}

}

8.高档利用

**a. **应用共享库

android sdk库:系统会自动链接

共享库:自力库,不会被系统自动链接,应用时必要在AndroidManifest经由过程指定

//声明必要应用maps共享库,true表示假如手机系统不满意将不能安装该利用

add-ons库:存于add-ons目录下,大年夜部分由第三方厂商或公司开拓,会被自动解析添加到classpath

optional可选库:位于platforms/android-xx/optional目录下,平日为了兼容旧版本的API,应用时必要手动添加到classpath

**b. **批量改动天生的apk文件名

类型:

applicationVariants :仅仅适用于Android利用Gradle插件

libraryVariants :仅仅适用于Android库Gradle插件

testVariants :以上两种Gradle插件都应用

示例:

applicationVariants是一个DomainObjectCollection聚拢,经由过程all措施遍历每一个ApplicationVariant,这里有googleRelease和googleDebug两个变体;然后断命名字是否以.apk结尾,假如是就改动其文件名。示例中共有。

c.动态天生版本信息

原始要领:由defaultConfig中的versionName指定

分模块要领:把版本号等设置设置设备摆设摆设抽出放在零丁的文件里,并用ext{}括起来,经由过程apply from将其引入到build.gradle,版本信息就被算作扩展属性直接应用了

从git的tag中获取

从属性文件中动态获取和递增

d.暗藏署名文件信息

需要性:为包管署名信息安然,最好直接放在项目中,而是放在办事器上

一种思路:

办事器:设置设置设备摆设摆设好情况变量,打包时直接应用

本地:直接应用android供给的debug署名

在signingConfigs加入以下判断

signingConfigs {

if (System.env.KEYSTORE_PATH != null) {

//打包办事器走这个逻辑

storeFile file(System.env.KEYSTORE_PATH)

keyAlias System.env.ALIAS

keyPassword System.env.KEYPASS

storePassword System.env.STOREPASS

} else {

//当不能从情况变量取到署名信息时,应用本地debug署名

storeFile file('debug.keystore')

storePassword 'android'

keyAlias 'androiddebugkey'

keyPassword 'android'

}

}

e.动态添加自定义的资本

针对res/values中的资本,除了应用xml定义,还可以经由过程Android Gradle定义

措施:resValue(String type, String name, String value)

type:资本类型,如有string、id、bool

name:资本名称,以便在工程中引用

value:资本值

productFlavors{

google{

resValue 'string', 'channel_tips', 'google渠道迎接你'

}

}

以google为例,在debug模式下,资本文件保存目录:build/generated/res/resValues/google/debug/values/generated.xml

f.Java编译选项

经由过程compileOptions{}闭包进行编译设置设置设备摆设摆设,可设置设置设备摆设摆设项:

encoding:设置设置设备摆设摆设源文件的编码

sourceCompatibility:设置设置设备摆设摆设Java源代码的编译级别

targetCompatibility:设置设置设备摆设摆设天生Java字节码的版本

android{

compileOptions{

encoding = 'utf-8'

sourceCompatibility = JavaVersion.VERSI0N_ 1_ 6

targetCompatibility = JavaVersion.VERSION_ 1_ 6

}

}

g.adb选项设置设置设备摆设摆设

经由过程adbOptions{}闭包进行adb设置设置设备摆设摆设,可设置设置设备摆设摆设项:

timeOutInMs:设置履行adb敕令的超韶光阴,单位毫秒

installOptions:设置adb install安装设置项

-l:锁定该利用法度榜样

-r:调换已存在的利用法度榜样,即强制安装

-t:容许测试包

-s:把利用法度榜样安装到SD卡上

-d:容许进行降级安装,即安装版本比手机自带的低

-g:为该利用赋予所有运行时的权限

android{

adbOptions{

timeOutInMs = 5*1000

installOptions '-r', '-s'

}

}

h.DEX选项设置设置设备摆设摆设

经由过程dexOptions {}闭包进行dex设置设置设备摆设摆设,可设置设置设备摆设摆设项:

incremental:设置设置设备摆设摆设是否启用dx的增量模式,默认值为false

javaMaxHeapSize:设置设置设备摆设摆设履行dx敕令时为其分配的最大年夜堆内存

jumboMode:设置设置设备摆设摆设是否开启jumbo模式

preDexLibraries:设置设置设备摆设摆设是否预dex Libraries库工程,默认值为true,开启后会前进增量构建的速率

threadCount:设置设置设备摆设摆设Android Gradle运行dx敕令时应用的线程数量

好文保举:穷冬下2年android的搞笑求职过程 有必要关于Android进阶方面的进修高档技巧大年夜纲以及免费教授教化视频资料的可以私信我【领取资料】哦!

您可能还会对下面的文章感兴趣: