选择用百度来解决bug,一定是脑子进了水。 ——记一次难忘的bug调试经历

问题描述: 开发环境是Android Studio,在做一个智能硬件的客户端APP。 今天做到在线升级部分,添加一个UpdateHelper类,单独做成一个Module,在引用R资源时,发现没有自动生成R文件,之前也遇到过这种情况,一般来说就是资源文件有错误,R文件不能生成,但是这个Module里面我只放了两张png资源图,排除资源错误问题。好吧。。。这种bug的确让人头疼。之后尝试修改文件名、Clean、 Rebuild 、Make 等等,都是扯淡。。。

好吧。。然后我打开了Baidu(百毒),输入关键词

Android Module 生成 R

然而,这出来的都是什么结果啊?其实乍一看结果还可以吧,毕竟都和关键词相关,然而内容真的是就像“宝宝的宝宝的宝宝不是宝宝亲生的” [捂脸]。。。

baidu

好吧,既然结果都搜出来了,我们就读读看吧,反正“来都来了”:

答案一:AndroidStudio library module的R文件报错 - - 博客频道 - CSDN.NET

错误的内容主要是case R.styleable.这两句报错,一开始我还以为是library module的R文件没有生成。 又是clean project又是rebuild project.都没用。后来我发现TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.GradientIconView); 这句没有报错,原来是我把问题定位错了,问题不是R文件没有生成,而是case R.styleable.这句有问题。

天哪,允许我做一个悲伤的表情😢。。。这。。。和 Module 生成 R 文件 有半毛钱的关系?

答案二:android studio新建Module不生成build文件夹 - JustDoItToday的…

这个题目终于看上去靠谱点了!我们来看一下原文:

pic

噗~真的是一口老血喷你脸上,😢,天哪,当创建第五个时不会生成Build文件夹,妈勒个蛋,这个到底是为什么啊?Why?最关键的是:竟然有人在下面评论:

pic

噗~大兄弟,你真的解决了嘛?

其他的就不继续列觉了,这逼装的简直刺眼。。。

于是,楼主默默的打开Google。

google

哇塞!第一个结果貌似就是我想要的啊!我点进去看看~

Android Studio don’t generate R.java for my import project

stackoverflow

看到这第一个答案,其实我的问题就快解决了。然后我 File -> Settings -> Compiler now check use external build ,妈蛋啊,没有这个选项呀?不带这样玩的啊。。。

settings

然而,我看到立刻在这个界面看到选项:Parallel project execution,于是楼主选中这个选项,apply之后,妈蛋,R文件神奇般的产生了,问题就这样解决了,然而这个鬼选项到底什么意思啊?于是我百度了一。。啊呸~ 于是楼主Google了一下,发现这是一个允许并行编译的选项,然而这和R文件的生成有什么关系啊?耐着性子读读Gradle的文档,发现这就是一个提高编译速度的选项啊。然后还有就是使用这个选项要注意各个Module之间的依赖等等

In order to make good use of cross project configuration without running into issues for parallel and ‘configuration on demand’ options, follow these recommendations:

  • Avoid a subproject’s build.gradle referencing other subprojects; prefering cross configuration from the root project.
  • Avoid changing the configuration of other projects at execution time.

回想一下,这个选项还是和解决生成R文件没有任何关系,于是楼主关闭这个选项,大胆的删除build文件夹,在重现一下bug,然后楼主点击Rebuild,耐心等等结果,妈蛋,😢,怎么R文件出来了?你别这样啊?R文件,你怎么就这样凭空生成了?好吧,要勇于面对现实,其实Module的R文件的生成是需要时间的,如果你勾上了这个并行编译选项,会大大加快编译速度,所以。。。

问题到这里,已经水落石出了,其实写这篇文章也是想给入门的学弟学妹一个建议:

有问题?问Google!

不是说百度的搜索结果不好(我说了吗?),而是氛围不好,大家的博客都是吵来吵去,精华相对较少?摒弃经验党、伸手党,做自己!