Directorio artículo
perfil Gradle personalizada
config.gradle
En el directorio raíz de la nueva config.gradle
config.gradle dice lo siguiente:
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"
]
}
La introducción de una costumbre Gradle
La introducción de un archivo de configuración personalizado en la raíz del proyecto build.gradle Gradle
//引入自定义Gradle配置文件
apply from: "config.gradle"
módulo de aplicación y el otro módulo pueden ser usados build.gradle parámetros definidos en config.gradle, si las necesidades de datos a ser modificadas, sólo es necesario modificar config.gradle, todos los módulos en build.gradle no tenga que hacer cambios.
beneficios:
- 1. Unidad
- 2. manejable
- 3. Gestión de versiones
build.gradle aplicación 的
La aplicación build.gradle sigue:
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"]
}
...
}
la base 的 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"]
}
constantes de configuración Gradle
archivos abiertos BuildConfig, vista Gradle constante
añadir el siguiente código en buildTypes:
debug {
//自定义Gradle常量
buildConfigField("boolean","LOG_DEBUG","true")
buildConfigField("String","LOG_TAG","\"YueJian\"")
buildConfigField("String","SP_NAME","\"Config\"")
}
Después de una revisión de BuildConfig sincronización de archivos
ha sido para nosotros para construir una necesidad constante
Estas constantes se utilizan de la siguiente manera, por lo que se puede hacer alguna operación de depuración de construcción, tales como registro de salida, mientras que en la versión de lanzamiento no lleva a cabo estas operaciones.
acumulación Gradle para mejorar la velocidad de las puntas de los diez
- Con la última versión del plug-in de Gradle
- Evitar la activación de edad Multidex
- Multidex Apk prohibición de la construcción
- Minimizar el paquete de archivos de recursos
- Desactivación de la compresión PNG
- webp conversión png
- ejecución inmediata recomendada
- No utilice la identificación versión dinámica
- la asignación de memoria de sintonización Gradle
- Abrir Gradle construir la memoria caché
Multidex Apk prohibición de la construcción
Gradle construir tres indicadores de rendimiento:
- El monto total de Compilación: Compilar todo - Abrir proyecto
- Código compilación incremental: Modificar el Java / Kotlin siguiente código cuando se compila
- Recursos incrementales compilación: Modificar las siguientes res archivo de recursos cuando se compila
Publicado aplicación requiere paquete de múltiples canales y todo el paquete cuando el mercado de aplicaciones, y el tiempo de depuración no necesita tanto, podemos prohibir algunos archivos para compilar.
¿Cómo parar al depurar ella?
Ajustes-Build-Compilador-PdevBuild
aplicación 的 build.gradle:
android {
//调试的时候禁止,加快编译速度
if(rootProject.hasProperty('devBuild')){
splits.abi.enable = false
splits.density.enable = false
//禁用PNG压缩
//aaptOptions.cruncherEnabled = false
}
...
Minimizar el paquete de archivos de recursos
android {
//默认配置
defaultConfig {
//调试
resConfigs("zh","xxhdpi")
...
}
...
}
Desactivación de la compresión PNG
android {
//调试的时候禁止,加快编译速度
if(rootProject.hasProperty('devBuild')){
splits.abi.enable = false
splits.density.enable = false
//禁用PNG压缩
aaptOptions.cruncherEnabled = false
}
...
webp conversión png
No utilice la identificación versión dinámica
No utilice al agregar una dependencia Plus +
la asignación de memoria de sintonización Gradle
Abrir Gradle construir la memoria caché
#开启Gradle构建缓存
org.gradle.caching=true