美文网首页
Android Gradle权威指南 笔记

Android Gradle权威指南 笔记

作者: 岁月静好浅笑安然 | 来源:发表于2019-08-27 13:38 被阅读0次

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

    10.4 库项目单独发布

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

    第11章 Android Gradle多渠道构建

    11.1 多渠道构建的基本原理

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

    11.3 多渠道构建定制

    11.4 提高多渠道构建的效率

    相关文章

      网友评论

          本文标题:Android Gradle权威指南 笔记

          本文链接:https://www.haomeiwen.com/subject/hbceectx.html