最近公司有个小项目(安卓端一人开发)比较急,于是把项目传上git准备回家没事做的话也可以搞搞。然后上传项目的时候怕两部电脑的android sdk版本不同带来的不必要麻烦,忽略掉了一些配置上的东西,例如下图红框的地方,因为AS打开项目的时候会根据本地android SDK版本自动生成这些文件:
然而到家打开项目,却报错了。。。
写到这里应该有同学发现博主撒币。。。不过没事,撒着币也要写完这贴子,因为解决问题的过程中,百度了很多,看到也有很多人遇到了这个问题,有些解决办法并不奏效或者出现了新的错误。
1.先是看到很多提出这种方案的帖子:
android:appComponentFactory=""
tools:replace="android:appComponentFactory"
好的,加上后出现了另一个问题:
What?androidx的引入和Support库重叠了?可项目中只引入了androidx呀。。。这什么情况?
2.无奈之下,只能拿其它项目来对比一下,当初是不是忽略了什么重要配置导致的这个错误,因为前面公司的电脑编译项目是没有问题的。于是先删除了方法1中添加的两个属性,然后随便打开了一个项目看了一下。。。果然!少了这个文件!这哪个撒币动了我的项目!(还有谁?。。)
顺带说一下,这是一个项目用来配置全局键值对数据的文件。里面的内容是:
好了,复制过来,再重新编译了项目。沃德天!还是报一开始的那个错误。。。
3.继续逛帖子,在StackOverflow里看到一个大神这么说:
咋一看有点儿复杂,然后又看到下面一层楼:
于是,远程看了一下公司电脑里的项目,发现的确少了这两个配置声明。那么这两个有什么用呢,其中一个靠字面意思可以get到是声明使用androidx,另一个呢?看看这位大神的解释:
https://www.jianshu.com/p/41de8689615d
好了,这次复制了原项目的gradle.properties过来编译成功了。。。
那么刚才复制过来的gradle.properties为何会少了这两个配置呢,原因很简单。。。那是旧的项目,压根就没用到androidx。。。
好了,本屌撒完币了,希望能给其他遇到相似问题的小伙伴带来一点帮助。