最近,我的一位同事说了这样一句话:“由构建服务器从相同源代码生成的连续APK(可执行文件)可能不是相同的”。讨论的背景是是否对X版进行的QA测试也适用于由相同的构建服务器(以相同方式配置)从相同的源代码执行的Y版。
我认为生成的可执行文件可能由于各种因素(例如时间戳等)而不同,但问题在于它们是否可以在功能上有所不同。
我唯一能想到的相同源代码可能产生不同功能的情况是多线程问题:如果多线程代码同步不正确,编译时执行的不同重新排序/优化操作可能会影响这个同步不良的代码并更改其功能行为。
我的问题如下:
- 是否真的存在从相同源代码由同一构建服务器执行的连续构建可能在功能上存在差异?
- 如果问题1是真的,这些差异是否仅限于未正确同步的多线程代码?
- 如果问题2是错误的,还有哪些部分会发生变化?
欢迎提供任何相关资料链接。