Localizadas habilidades de construção Gradle Android

perfil personalizado Gradle

config.gradle

No diretório raiz do novo config.gradle

Aqui Insert Picture Descrição
config.gradle tem o seguinte teor:

ext {
    //Android 配置
    android = [
            compileSdkVersion: 29,
            buildToolsVersion: "29.0.1",
            applicationId    : "com.xx.xx",
            minSdkVersion    : 21,
            targetSdkVersion : 29,
            versionCode      : 8,
            versionName      : "1.7"
    ]
    //依赖 配置
    dependencies = [
            "httpclient"     : 'org.apache.http.legacy',
            "appcompat"      : 'androidx.appcompat:appcompat:1.0.2',
            "bmobsdk"        : 'cn.bmob.android:bmob-sdk:3.7.3-rc1',
            "rxjava2"        : "io.reactivex.rxjava2:rxjava:2.2.2",
            "rxandroid2"     : 'io.reactivex.rxjava2:rxandroid:2.1.0',
            "okio"           : 'com.squareup.okio:okio:2.1.0',
            "gson"           : 'com.google.code.gson:gson:2.8.5',
            "okhttp3"        : 'com.squareup.okhttp3:okhttp:3.12.0',
            "tagcloud"       : 'com.moxun:tagcloudlib:1.2.0',
            "circleimageview": 'de.hdodenhof:circleimageview:3.0.0',
            "glide"          : 'com.github.bumptech.glide:glide:4.9.0',
            "recyclerview"   : 'androidx.recyclerview:recyclerview:1.0.0',
            "datepicker"     : 'cn.aigestudio.datepicker:DatePicker:2.2.0',
            "litepal"        : 'org.litepal.android:java:3.0.0',
            "eventbus"       : 'org.greenrobot:eventbus:3.1.1',
            "tablayout"      : 'com.google.android.material:material:1.0.0',
            "photoview"      : 'com.github.chrisbanes:PhotoView:2.3.0',
            "3dmap"          : 'com.amap.api:3dmap:5.0.0',
            "location"       : 'com.amap.api:location:3.3.0',
            "search"         : 'com.amap.api:search:5.0.0',
            "bugly"          : 'com.tencent.bugly:crashreport:2.1.9',
            "buglyndk"       : 'com.tencent.bugly:nativecrashreport:3.0',
            "zxing"          : 'cn.yipianfengye.android:zxing-library:2.2',
            "videoplayer"    : 'cn.jzvd:jiaozivideoplayer:7.0.5'
    ]
    //仓库
    maven = [
            "bmobUrl": "https://raw.github.com/bmob/bmob-android-sdk/master",
            "jitpack": "https://jitpack.io"
    ]
}

A introdução de um Gradle personalizado

A introdução de um arquivo de configuração personalizada na raiz build.gradle projeto Gradle

//引入自定义Gradle配置文件
apply from: "config.gradle"

módulo de aplicativo e outro módulo pode ser parâmetros build.gradle usados ​​definidos na config.gradle, se as necessidades de dados a ser modificado, só precisa modificar config.gradle, todos módulo em build.gradle não precisar fazer alterações.

benefícios:

  • 1. Unidade
  • 2. gerenciável
  • 3. Gestão Versão

aplicativo 的 build.gradle

O build.gradle aplicativo segue:

android {
    compileSdkVersion rootProject.ext.android["compileSdkVersion"]
    buildToolsVersion rootProject.ext.android["buildToolsVersion"]

    //默认配置
    defaultConfig {
        applicationId rootProject.ext.android["applicationId"]
        minSdkVersion rootProject.ext.android["minSdkVersion"]
        targetSdkVersion rootProject.ext.android["targetSdkVersion"]
        versionCode rootProject.ext.android["versionCode"]
        versionName rootProject.ext.android["versionName"]
    }
...
}

base de 的 build.gradle

android {
    //HttpClient
    useLibrary rootProject.ext.dependencies["httpclient"]
    compileSdkVersion rootProject.ext.android["compileSdkVersion"]
    buildToolsVersion rootProject.ext.android["buildToolsVersion"]
    defaultConfig {
        minSdkVersion rootProject.ext.android["minSdkVersion"]
        targetSdkVersion rootProject.ext.android["targetSdkVersion"]
        versionCode rootProject.ext.android["versionCode"]
        versionName rootProject.ext.android["versionName"]
    }
	...
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //V7
    api rootProject.ext.dependencies["appcompat"]
    api rootProject.ext.dependencies["bmobsdk"]
    api rootProject.ext.dependencies["rxjava2"]
    api rootProject.ext.dependencies["rxandroid2"]
    api rootProject.ext.dependencies["okio"]
    api rootProject.ext.dependencies["gson"]
    api rootProject.ext.dependencies["okhttp3"]
    api rootProject.ext.dependencies["tagcloud"]
    api rootProject.ext.dependencies["circleimageview"]
    api rootProject.ext.dependencies["datepicker"]
    api rootProject.ext.dependencies["glide"]
    api rootProject.ext.dependencies["recyclerview"]
    api rootProject.ext.dependencies["litepal"]
    api rootProject.ext.dependencies["eventbus"]
    api rootProject.ext.dependencies["tablayout"]
    api rootProject.ext.dependencies["photoview"]
    api rootProject.ext.dependencies["3dmap"]
    api rootProject.ext.dependencies["location"]
    api rootProject.ext.dependencies["search"]
    api rootProject.ext.dependencies["bugly"]
    api rootProject.ext.dependencies["buglyndk"]
    api rootProject.ext.dependencies["zxing"]
    api rootProject.ext.dependencies["videoplayer"]
}

As constantes de configuração Gradle

arquivos abertos BuildConfig, vista Gradle constante
Aqui Insert Picture Descrição
adicione o seguinte código no buildTypes:
Aqui Insert Picture Descrição

      debug {
            //自定义Gradle常量
            buildConfigField("boolean","LOG_DEBUG","true")
            buildConfigField("String","LOG_TAG","\"YueJian\"")
            buildConfigField("String","SP_NAME","\"Config\"")
        }

Após uma análise da sincronização de arquivos BuildConfig
Aqui Insert Picture Descrição
tem sido para nós a construir uma necessidade constante

Essas constantes são utilizados da seguinte forma, de modo que você pode fazer alguma operação de depuração de construção, tais como a saída do log, enquanto que na versão não executar essas operações.
Aqui Insert Picture Descrição

construção Gradle para aumentar a velocidade das dicas top dez

  • Usando a versão mais recente do plug-in Gradle
  • Evitar a ativação de idade Multidex
  • Multidex Apk proibição construção
  • Minimizar pacote de arquivos de recursos
  • Desactivar PNG compressão
  • webp conversão PNG
  • run instantânea recomendado
  • Não use a identificação versão dinâmica
  • alocação de memória de sintonia Gradle
  • Abrir Gradle construir o cache

Multidex Apk proibição construção

construir três indicadores Gradle desempenho:

  • O valor total de compilação: compilar todos - Open Project
  • Código compilação incremental: Modificar o Java / Kotlin seguinte código quando compilado
  • Recursos incrementais compilação: Modificar as res seguintes arquivo de recurso quando compilado

Publicado App requer o pacote multi-canal e todo o pacote quando o mercado de aplicativos; e tempo de depuração não precisa de muito, que pode proibir alguns arquivos para compilar.

Como parar quando depurá-lo?

Configurações-Build-Compiler-PdevBuild

Aqui Insert Picture Descrição

aplicativo 的 build.gradle:
Aqui Insert Picture Descrição

android {
    //调试的时候禁止,加快编译速度
    if(rootProject.hasProperty('devBuild')){
        splits.abi.enable = false
        splits.density.enable = false
        //禁用PNG压缩
        //aaptOptions.cruncherEnabled = false
    }
...

Minimizar pacote de arquivos de recursos

android {
    //默认配置
    defaultConfig {
        //调试
        resConfigs("zh","xxhdpi")
	...
	}
	...
}

Desactivar PNG compressão

Aqui Insert Picture Descrição

android {
    //调试的时候禁止,加快编译速度
    if(rootProject.hasProperty('devBuild')){
        splits.abi.enable = false
        splits.density.enable = false
        //禁用PNG压缩
        aaptOptions.cruncherEnabled = false
    }
...

webp conversão PNG

Aqui Insert Picture Descrição

Não use a identificação versão dinâmica

Não use ao adicionar uma dependência Plus +

alocação de memória de sintonia Gradle

Aqui Insert Picture Descrição

Abrir Gradle construir o cache

#开启Gradle构建缓存
org.gradle.caching=true

Aqui Insert Picture Descrição

Publicado 446 artigos originais · Louvor obteve 67 · vista 240 000 +

Acho que você gosta

Origin blog.csdn.net/hongxue8888/article/details/104692385
Recomendado
Clasificación