Android的Gradle知识
AS打包编译出现OOM
执行打包命令时出现Expiring Daemon because JVM heap space is exhausted提示时,修改gradle.properties文件如下
# 针对AndroidX的配置
android.useAndroidX=true
# 将依赖包也迁移到AndroidX
android.enableJetifier=false
# 针对AS3.0出现adb adb install -t <apk> 安装包不成功
android.injected.testOnly=false
#编译设置
#开启线程守护,第一次编译时开线程,之后就不会再开
org.gradle.daemon=true
#配置编译时的虚拟机大小
org.gradle.jvmargs=-Xmx3096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# 如过不够 可以设置更大的
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#开启并行编译,相当于多条线程构建
org.gradle.parallel=true
#启用新的孵化模式
org.gradle.configureondemand=true
依赖项配置
| 配置 | 说明 |
|---|---|
| implementation | Gradle 会将依赖项添加到编译类路径,并将依赖项打包到编译输出。不过,当模块配置 implementation 依赖项时,其他模块只有在运行时才能使用该依赖项。 |
| api | Gradle 会将依赖项添加到编译类路径和编译输出。当一个模块包含 api 依赖项时,会让 Gradle 了解该模块要以传递方式将该依赖项导出到其他模块,以便这些模块在运行时和编译时都可以使用该依赖项。 |
| compileOnly | Gradle 只会将依赖项添加到编译类路径(也就是说,不会将其添加到编译输出)。 |
| runtimeOnly | Gradle 只会将依赖项添加到编译输出,以便在运行时使用。也就是说,不会将其添加到编译类路径。 |
| annotationProcessor | 要添加对作为注解处理器的库的依赖关系,必须使用 annotationProcessor 配置将其添加到注解处理器类路径。 |
打包
去除不需要依赖的adapter
implementation('me.drakeet.multitype:multitype:3.3.0', {
exclude group: 'com.android.support'
})
implementation 'com.android.support:recyclerview-v7:你选择的版本'

浙公网安备 33010602011771号