Diretório do artigo
perfil personalizado Gradle
config.gradle
No diretório raiz do novo config.gradle
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
adicione o seguinte código no buildTypes:
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
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.
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
aplicativo 的 build.gradle:
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
android {
//调试的时候禁止,加快编译速度
if(rootProject.hasProperty('devBuild')){
splits.abi.enable = false
splits.density.enable = false
//禁用PNG压缩
aaptOptions.cruncherEnabled = false
}
...
webp conversão PNG
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
Abrir Gradle construir o cache
#开启Gradle构建缓存
org.gradle.caching=true