文章目录
自定义Gradle配置文件
config.gradle
引入自定义Gradle
app的build.gradle
base的build.gradle
配置Gradle常量
提升Gradle构建速度的十大技巧
禁止Multidex Apk构建
最小化打包资源文件
禁用png压缩
png转换webp
不使用动态版本标识
Gradle内存分配调优
开启Gradle构建缓存
自定义Gradle配置文件
config.gradle
在根目录新建config.gradle
config.gradle内容如下:
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"
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
引入自定义Gradle
在项目的根build.gradle中引入自定义Gradle配置文件
//引入自定义Gradle配置文件
apply from: "config.gradle"
1
2
app module和其他module的 build.gradle都可以使用config.gradle中定义的参数,如果有数据需要修改,只需要修改config.gradle,所有module中的build.gradle都不需要做修改。
好处:
1.统一性
2.便于管理
3.版本管理
app的build.gradle
app的build.gradle如下:
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"]
}
...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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"]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
配置Gradle常量
打开BuildConfig文件,查看Gradle常量
在buildTypes下添加如下代码:
debug {
//自定义Gradle常量
buildConfigField("boolean","LOG_DEBUG","true")
buildConfigField("String","LOG_TAG","\"YueJian\"")
buildConfigField("String","SP_NAME","\"Config\"")
}
1
2
3
4
5
6
同步后查看BuildConfig文件
已经为我们构建出了需要的常量
使用这些常量如下,这样就可以在debug版本中做一些操作,如输出日志,而在release版本中不会执行这些操作。
提升Gradle构建速度的十大技巧
使用最新版的Gradle插件
避免激活旧的Multidex
禁止Multidex Apk构建
最小化打包资源文件
禁用png压缩
png转换webp
推荐使用instant run
不使用动态版本标识
Gradle内存分配调优
开启Gradle构建缓存
禁止Multidex Apk构建
Gradle构建的三个性能指标:
全量编译:全部编译 - Open Project
代码增量编译:修改了Java/Kotlin下面的代码的时候编译
资源增量编译:修改了res下面的资源文件的时候编译
发布App到应用市场时需要多渠道打包和全部打包;而调试时候不需要这么多,我们可以禁止一些文件编译。
在调试的时候如何禁止呢?
Settings-Build-Compiler-PdevBuild
app的build.gradle:
android {
//调试的时候禁止,加快编译速度
if(rootProject.hasProperty('devBuild')){
splits.abi.enable = false
splits.density.enable = false
//禁用PNG压缩
//aaptOptions.cruncherEnabled = false
}
...
1
2
3
4
5
6
7
8
9
最小化打包资源文件
android {
//默认配置
defaultConfig {
//调试
resConfigs("zh","xxhdpi")
...
}
...
}
1
2
3
4
5
6
7
8
9
禁用png压缩
android {
//调试的时候禁止,加快编译速度
if(rootProject.hasProperty('devBuild')){
splits.abi.enable = false
splits.density.enable = false
//禁用PNG压缩
aaptOptions.cruncherEnabled = false
}
...
1
2
3
4
5
6
7
8
9
png转换webp
不使用动态版本标识
不要在添加依赖的时候使用 + 加号
Gradle内存分配调优
开启Gradle构建缓存
#开启Gradle构建缓存
org.gradle.caching=true
1
2
————————————————
版权声明:本文为优快云博主「傅晨明」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/hongxue8888/article/details/104692385