最近公司有个小项目(安卓端一人开发)比较急,于是把项目传上git准备回家没事做的话也可以搞搞。然后上传项目的时候怕两部电脑的android sdk版本不同带来的不必要麻烦,忽略掉了一些配置上的东西,例如下图红框的地方,因为AS打开项目的时候会根据本地android SDK版本自动生成这些文件:

android 里 app dependencies 下载哪了_上传

然而到家打开项目,却报错了。。。

android 里 app dependencies 下载哪了_上传_02

写到这里应该有同学发现博主撒币。。。不过没事,撒着币也要写完这贴子,因为解决问题的过程中,百度了很多,看到也有很多人遇到了这个问题,有些解决办法并不奏效或者出现了新的错误。

1.先是看到很多提出这种方案的帖子:

android:appComponentFactory=""
tools:replace="android:appComponentFactory"

好的,加上后出现了另一个问题:

android 里 app dependencies 下载哪了_自动生成_03


What?androidx的引入和Support库重叠了?可项目中只引入了androidx呀。。。这什么情况?

2.无奈之下,只能拿其它项目来对比一下,当初是不是忽略了什么重要配置导致的这个错误,因为前面公司的电脑编译项目是没有问题的。于是先删除了方法1中添加的两个属性,然后随便打开了一个项目看了一下。。。果然!少了这个文件!这哪个撒币动了我的项目!(还有谁?。。)

android 里 app dependencies 下载哪了_android_04


顺带说一下,这是一个项目用来配置全局键值对数据的文件。里面的内容是:

android 里 app dependencies 下载哪了_android_05


好了,复制过来,再重新编译了项目。沃德天!还是报一开始的那个错误。。。

3.继续逛帖子,在StackOverflow里看到一个大神这么说:

https://stackoverflow.com/questions/55217992/manifest-merger-failed-attribute-applicationappcomponentfactory-androidx

android 里 app dependencies 下载哪了_上传_06

咋一看有点儿复杂,然后又看到下面一层楼:

android 里 app dependencies 下载哪了_上传_07

于是,远程看了一下公司电脑里的项目,发现的确少了这两个配置声明。那么这两个有什么用呢,其中一个靠字面意思可以get到是声明使用androidx,另一个呢?看看这位大神的解释:

https://www.jianshu.com/p/41de8689615d

android 里 app dependencies 下载哪了_android_08

好了,这次复制了原项目的gradle.properties过来编译成功了。。。

android 里 app dependencies 下载哪了_上传_09

那么刚才复制过来的gradle.properties为何会少了这两个配置呢,原因很简单。。。那是旧的项目,压根就没用到androidx。。。

好了,本屌撒完币了,希望能给其他遇到相似问题的小伙伴带来一点帮助。