Android Gradle权威指南 笔记
第7章 Android Gradle插件
7.1 Android Gradle插件简介
7.2 Android Gradle插件分类
- App插件id:com.android.application
- Library插件id:com.android.library
- Test插件id: com.android.test
7.3 应用 Android Gradle插件
7.4 Android Gradle工程示例
7.4.1 compileSdkVersion
compileSdkVersion 23是配置我们编译android工程的SDK,这里23对应android 6.0的sdk
7.4.2 buildToolsVersion
buildToolsVersion '28.0.3'表示我们使用android构建工具的版本
7.4.3 defaultConfig
defaultConfig {
applicationId "com.yotan.qzx"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0.7"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}
- applicationId配置我们的包名字
- minSdkVersion最低支持的android系统
- targetSdkVersion表示我们基于那个android版本开发
- versionCode表示我们app应用的内部版本号
- versionName表示我们app的版本名称,用户可见
7.4.4 buildTypes
buildTypes {
debug {
}
release {
debuggable false
zipAlignEnabled true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
属性 | 描述 |
---|---|
boolean debbuggable |
该构建类型是否生成一个可调式的apk |
boolean minifyEnabled |
是否可以移出无用的java代码,默认为false |
Boolean multiDexEnabled |
是否可以分包 |
File multiDexKeepFile |
指定放在main dex内的类,如果设置则它的格式为一个类一行:com/example/MyClass.class |
File multiDexKeepProguard |
指定用在main dex 的类上的混淆文件,跟系统混淆文件联合使用 |
String name |
这种构建类型的名称 |
proguardFiles |
指定插件使用的混淆文件 |
SigningConfig signingConfig |
签名配置文件 |
boolean zipAlignEnabled |
是否使用zipAlign优化apk,Android sdk包里面的工具, 能够对打包的应用程序进行优化,让整个系统运行的更快 |
String versionNameSuffix |
VersionName的后缀 |
7.5 Android Gradle任务
略
第8章 自定义 Android Gradle工程
8.1 defaultConfig 默认配置
defaultConfig {
applicationId "com.yotan.hthb"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk {
abiFilters "armeabi", "armeabi-v7a", "x86"
}
}
8.1.1 applicationId
applicationId用于指定生成的App包名
8.1.2 minSdkVersion
指定app最低支持的android操作系统版本
8.1.3 targetSdkVersion
配置基于哪个android sdk开发
8.1.4 versionCode
内部版本号,是一个整数值
8.1.5 versionName
版本号,外部可见
8.1.6 testApplicationld
用于配置测试app的包名
8.1.7 testInstrumentationRunner
用于配置单元测试时使用的Runner
8.1.8 signingConfig
配置默认的签名信息,对生成的App签名。
8.1.9 proguardFile
用于配置app ProGuard混淆所使用的ProGuard配置文件。
8.1.10 proguardFiles
这也是配置ProGuard的配置文件,只不过它可以同时接受多个配置文件。
8.2 配置签名信息
android{
compileSdkVersion 23
buildToolsVersion "23.0.1"
//配置签名 分 release和debug
signingConfigs{
release{
stortFile file("key.keystory")
storePassword "password"
keyAlias "password"
keyPaaword "password"
}
dubug{
stortFile file("key.keystory")
storePassword "password"
keyAlias "password"
keyPaaword "password"
}
}
//配置后引用
buildTypes{
release{
signingConfig signingConfigs.release
}
debug{
signingConfig signingConfigs.debug
}
}
}
8.3 构建的应用类型
8.3.1 applicationIdsSuffix
用于配置默认 applicationId的后缀
8.3.2 debuggable
buildType的属性,用于配置是否生成一个可供调试的apk,其值为true或者false
8.3.3 jniDebuggable
buildType的属性,用于配置是否生成一个可供调试jni的apk,其值为true或者false
8.3.4 minifyEnabled
buildType的属性,用于配置 buildType是否启用Proguard混淆,其值为true或者false
8.3.5 multiDexEnabled
buildType的属性,用于配置 buildType是否启自动拆分多个dex包,其值为true或者false
8.3.6 proguardFile
buildType的属性,用于配置Proguard混淆使用的配置文件
8.3.7 proguardFiles
buildType的属性,用于配置Proguard混淆使用的配置文件
8.3.8 shrinkResources
buildType的属性,用于配置是否自动清理未使用的资源,默认为false
8.3.9 signingConfig
配置 buildType使用的签名配置
8.4 使用混淆
1.启用混淆 minifyEnabled true
android{
buildTypes{
release{
minifyEnabled true
}
debug{
}
}
}
2.配置混淆
android{
buildTypes {
debug {
}
release {
debuggable false
zipAlignEnabled true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
8.5 启用zipalign优化
zipAlignEnabled true
android{
buildTypes{
release{
zipAlignEnabled true
}
debug{
}
}
}
第9章 Android Gradle高级自定义
9.1使用共享库
AndroidManifest文件配置
<uses-library
android:name="com.google.android.maps"
android:required="true" />
android gradle配置
android{
uses-library `org.apche.http.legacy`
}
9.2 批量修改生成的apk文件名
9.3 动态生成版本信息
9.3.1 最原始
android{
...
defaultConfig{
...
versionCode 1
versionName "1.0.0"
}
}
9.3.2 分模块的方式
新建version.gradle文件
version.google
ext{
appVersionCode=1
appVersionName="1.0.0"
}
引用
android{
...
defaultConfig{
...
versionCode appVersionCode
versionName appVersionName
}
}
9.4 隐藏签名文件信息
难点,没明白
9.5 动态配置 AndroidManifest文件
友盟示例,
1.在AndroidMainifest.xml中
<meta-data
android:name="UMENG_APPKEY"
android:value="${umeng_app_key}"/>
2.build.gradle中
buildTypes {
debug {
manifestPlaceholders = [umeng_app_key: "你替代的内容"]
}
release {
manifestPlaceholders = [umeng_app_key: "你替代的内容"]
}
develop {
manifestPlaceholders = [umeng_app_key: "你替代的内容"]
}
}
9.6自定义 BuildConfig
9.7 动态添加自定义的资源
9.8 Java编译选项
android{
compileOptions{
encoding=`utf-8`
sourceCompatibility=JavaVersion.VERSION_1_6
targetCompatibility=JavaVersion.VERSION_1_6
}
}
9.9 adb操作选项配置
9.10 DEX选项配置
incremental属性,用来配置是否启用dx的增量模式,默认为false
android{
compileSdkVersion 23
buildToolsVersion "23.0.1"
dexOptions{
incremental true
}
}
9.11 突破65535方法限制
multiDexEnabled设置为true
android{
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig{
...
multiDexEnabled true
...
}
}
9.12 自动清理未使用的资源
shrinkResources 设置为true,默认是false
android{
compileSdkVersion 23
buildToolsVersion "23.0.1"
buildTypes{
release{
...
shrinkResources true
...
}
}
}
第10章 Android Gradle多项目构建
10.1 Android项目区别
- 库项目(被依赖的、或者被调用的)
- 应用项目(主项目)
- 测试项目(用于测试的)
10.2 Android多项目设置
10.3 库项目引用和配置
dependencies {
implementation project(':pulToRefresh_Library')
}