自定义 Gradle 配置文件 方式一:
为了便于主 Model 和副 Model 的 build.gradle 之间的管理,比如版本管理和统一性。所以,可以在主 project 下面自定义一个 Gradle 配置文件来管理。
config.gradle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ext{ android = [ compileSdkVersion : 30 , buildToolsVersion : "30.0.2" , applicationId : "com.example.meet" , minSdkVersion : 21 , targetSdkVersion : 30 , versionCode : 1 , versionName : "1.0" ] dependencies = [ "appcompat" : 'androidx.appcompat:appcompat:1.2.0' ... ] }
在主 project 下的 build.gradle 内引入自定义 Gradle 配置文件。
build.gradle 1 2 3 4 5 6 7 8 9 10 apply from : "config.gradle" buildscript { ... } ...
然后在相应 Model 下进行修改。
build.gradle 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 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' 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" ] testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } ... } dependencies { ... implementation rootProject.ext.dependencies["appcompat" ] }
方式二:
主 project 下创建文件 dependencies.gradle
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 apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion compile_sdk_version buildToolsVersion build_tools_version defaultConfig { minSdkVersion min_sdk_verion targetSdkVersion target_sdk_version versionCode lib_version_code versionName lib_version_name ... } ... compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 } kotlinOptions { jvmTarget = "1.8" } } dependencies { }
在主 project 下的 build.gradle:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 buildscript { ext { kotlin_version = '1.4.10' compile_sdk_version = 29 build_tools_version = '29.0.3' min_sdk_verion = 21 target_sdk_version = 29 lib_version_code = 1 lib_version_name = "1.0.0" ... } ... } ...
在相应的 module 中去引用 dependencies.gradle:
1 apply from: '../dependencies.gradle'
配置 Gradle 常量 在 BuildConfig 类中存在一些静态常量。(如果 BuildConfig 类不存在,可选择 Build -> Make Module ‘app’。)
1 2 3 4 5 6 7 public final class BuildConfig { public static final boolean DEBUG = Boolean .parseBoolean("true" ); public static final String APPLICATION_ID = "com.example.meet" ; public static final String BUILD_TYPE = "debug" ; public static final int VERSION_CODE = 1 ; public static final String VERSION_NAME = "1.0" ; }
修改 build.gradle 文件,添加需要的常量。
build.gradle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ... android { ... buildTypes { debug{ buildConfigField ("boolean" , "LOG_DEBUG" , "true" ) buildConfigField ("String" , "LOG_TAG" , "\"Meet\"" ) buildConfigField ("String" , "SP_NAME" , "\"Config\"" ) } release { buildConfigField ("boolean" , "LOG_DEBUG" , "false" ) buildConfigField ("String" , "LOG_TAG" , "\"Meet\"" ) buildConfigField ("String" , "SP_NAME" , "\"Config\"" ) minifyEnabled false proguardFiles getDefaultProguardFile ('proguard-android-optimize.txt' ) , 'proguard-rules.pro' } } } ...
修改后的结果。
1 2 3 4 5 6 7 8 9 10 11 public final class BuildConfig { public static final boolean DEBUG = Boolean .parseBoolean("true" ); public static final String APPLICATION_ID = "com.example.meet" ; public static final String BUILD_TYPE = "debug" ; public static final int VERSION_CODE = 1 ; public static final String VERSION_NAME = "1.0" ; public static final boolean LOG_DEBUG = true ; public static final String LOG_TAG = "Meet" ; public static final String SP_NAME = "Config" ; }
根据情况来使用。
1 2 3 4 5 6 7 8 9 10 11 12 class MainActivity : AppCompatActivity () { override fun onCreate (savedInstanceState: Bundle ?) { super .onCreate(savedInstanceState) setContentView(R.layout.activity_main) if (BuildConfig.LOG_DEBUG){ }else { } } }
提升 Gradle 构建速度的一些技巧 1、使用最新版的 Gradle 插件。
可以通过主 Project 下 gradle -> wrapper -> gradle-wrapper.properties -> distributionUrl = … 查看 。
2、避免激活旧的 Multidex。
3、禁止 Multidex Apk 构建。
Gradle 构建的三个性能指标:
全量编译:全部编译。比如第一次打开项目时(Open Project)。
代码增量编译:修改了 Java/Kotlin 下面的代码的时候编译。
资源增量编译:修改了 res 下面的资源文件的时候编译。
可通过如下方式,来提升构建速度。
Preferences -> Build -> Compiler -> Command -line Options: 添加 -PdevBuild。(注意:发布的时候,要将这个参数去掉。 )
build.gradle 1 2 3 4 5 6 7 8 9 android { if (rootProject.hasProperty('devBuild' )){ splits.abi.enable = false splits.density.enable = false } ... }
4、最小化打包资源文件。
注意:发布的时候,要将它去掉。
build.gradle 1 2 3 4 5 6 7 8 9 10 android { ... defaultConfig { ... resConfigs("zh" ,"xxhdpi" ) } ... }
5、禁用 PNG 压缩。
在开发阶段可以不需要此功能,来提高构建速度。
build.gradle 1 2 3 4 5 6 7 8 9 android { if (rootProject.hasProperty('devBuild' )){ splits.abi.enable = false splits.density.enable = false aaptOptions.cruncherEnabled = false }
6、PNG 转换 WebP。
图片上右键 -> Convert to WebP。(launcher 无法转换)
7、推荐使用 Instant Run。
8、不使用动态版本标识。
build.gradle 1 2 3 4 5 dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.0.4+' }
9、Gradle 内存分配调优。
gradle.properties 1 2 3 # 这里默认分配了 2048 兆(2 G)。 # 通过调整这个数值来AS内存优化。 org.gradle.jvmargs=-Xmx2048m
10、开启 Gradle 构建缓存。
gradle.properties 1 2 # 开启 Gradle 构建缓存 org.gradle.caching=true
备注 参考资料: