![](https://img-blog.csdnimg.cn/direct/b5f20d50584e47b9a3fb6bf39287d2e4.png)
问题
新建一个项目,默认使用最新版的 AGP 和 Gradle,打包构建立马失败!
![](https://img-blog.csdnimg.cn/direct/1ee4482e349b4ad99253aaebcefe709c.png)
错误日志
Caused by: com.android.builder.errors.EvalIssueException: The option 'android.useNewApkCreator' is deprecated.
java
An exception occurred applying plugin request [id: 'com.android.application', version: '8.3.0']
> Failed to apply plugin 'com.android.internal.application'.
> com.android.builder.errors.EvalIssueException: The option 'android.useNewApkCreator' is deprecated.
The current default is 'true'.
It was removed in version 8.0 of the Android Gradle plugin.
全局搜索,当前项目确实没有配置该属性 android.useNewApkCreator
,这属性到底是哪里来的?
![](https://img-blog.csdnimg.cn/direct/9167396ddfb04e828283fd6d5801c405.png)
解决
我们都知道,project.properties 属性值主要数据来源是 gradle.properties 配置文件。
![](https://img-blog.csdnimg.cn/direct/c1afffc470de4a1bb27f95444c104865.png)
我们通过在 build.gradle 文件输出属性配置,确实是有该配置,并且值是 false
看起来怎么与这两句话意思相反呢?真是差点搞不懂了~
① The current default is 'true'. 【实际输出确是 false】
② It was removed in version 8.0 of the Android Gradle plugin. 【removed 了,为什么输出还有值?】
groovy
val newApkKey = "android.useNewApkCreator"
val containsNewApkKey = project.properties.containsKey(newApkKey)
println("containsNewApkKey:${containsNewApkKey}")
for (p in project.properties) {
println("项目属性:${p.key} = ${p.value}")
}
![](https://img-blog.csdnimg.cn/direct/d8f23644de8a48c5a9ab7c721e8c0269.png)
根据上述第二点 ② 如果不是系统内预置,我们确认是否存在某个gradle.properties
文件内配置了该属性,并且这个文件是每个项目都会读取的?
果不其然,通过磁盘全局搜索发现一个醒目了路径下存在这个文件,打开一看正如我所想,注释掉之后再运行不再报错了~
#android.useNewApkCreator=false
这或许是 AS 的默认配置文件吧