Android Gradle权威指南 笔记

2019-08-27  本文已影响0人  岁月静好浅笑安然

第7章 Android Gradle插件

7.1 Android Gradle插件简介

7.2 Android Gradle插件分类

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"
        }
    }

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')
    }

10.4 库项目单独发布

使用简单的方法发布自己的android开源库

第11章 Android Gradle多渠道构建

11.1 多渠道构建的基本原理

11.2 Flurry多渠道和友盟多渠道构建

11.3 多渠道构建定制

11.4 提高多渠道构建的效率

上一篇下一篇

猜你喜欢

热点阅读