可以从相同的源代码生成功能上不同的可执行文件吗?

瓦西里

最近,我的一位同事说了类似的话:“由构建服务器从相同的源代码生成的连续APK(可执行文件)可能并不相同”。讨论的上下文是,对X版本执行的质量检查是否也适用于Y版本,它是由同一构建服务器(以相同的方式配置)从相同的源代码执行的。

我认为由于各种因素(例如不同的时间戳记),生成的可执行文件可能并不相同,但问题是它们在功能上是否可以不同。

我可以想到的唯一情形是,同一源代码可能产生不同的功能是多线程问题:如果多线程代码同步不正确,则在编译时执行不同的重新排序/优化操作可能会影响此同步不良的代码并更改其功能行为。

我的问题是:

  1. 由相同的构建服务器从相同的源代码执行的连续构建是否可以在功能上有所不同,这是真的吗?
  2. 如果#1为真,这些区别是否仅限于错误同步的多线程代码?
  3. 如果#2为假,其他哪些部分可以更改?

任何相关材料的链接将不胜感激。

特雷弗

在某些情况下当然有可能。我假设您正在使用Gradle构建您的Android应用。

情况1:您正在使用版本通配符随附的第三方依赖关系,例如:

compile somelib.1+

在这种情况下,依赖关系可能会发生变化,这就是为什么强烈建议使用显式依赖关系版本的原因。

情况2:您正在使用Gradle的buildConfigFields将环境信息注入您的应用程序。这些值将注入到您的应用程序的BuildConfig类中。根据您使用这些值的方式,应用程序的行为在连续的构建中可能会有所不同。

情况3:在连续的构建之间更新CI上的JDK。尽管我认为可能性很小,但您的应用程序行为可能会根据其编译方式而发生变化。例如,您可能会遇到JDK的一个极端情况,该情况在更高版本中已得到修复,从而导致以前工作的代码之前的行为有所不同。

我认为这回答了您的第一个问题和第二个问题。

编辑:对不起,我想我错过了您OP中的一些重要信息。我的案例2是您的示例,e.g. different timestamp案例3违反了您的案例configured the same way我会在这里留下答案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可以调用可执行文件的功能吗?

来自分类Dev

可以从py2exe可执行文件中恢复人类可读的源代码吗?

来自分类Dev

从相同的源代码创建单独的目标文件,并使用CMake链接到可执行文件

来自分类Dev

从相同的源代码创建单独的目标文件,并使用CMake链接到可执行文件

来自分类Dev

如何从源代码构建铬可执行文件

来自分类Dev

如何从此源代码创建可执行文件?

来自分类Dev

来自不同 cd 的不同可执行文件总是运行相同的代码

来自分类Dev

我可以从 webview 执行可执行文件吗?

来自分类Dev

从LLVM位代码生成Rust可执行文件

来自分类Dev

从LLVM位代码生成Rust可执行文件

来自分类Dev

GHC可执行文件可以共享运行时代码吗?

来自分类Dev

我可以在Mac上生成可在Windows上使用的python可执行文件吗?

来自分类Dev

我可以在Mac上生成可在Windows上使用的python可执行文件吗?

来自分类Dev

gdb不显示非剥离可执行文件的源代码

来自分类Dev

隐藏电子应用程序中的可执行文件的源代码

来自分类Dev

PyInstaller可执行文件无法获取TorchScript的源代码

来自分类Dev

Shell源代码和可执行文件位于哪个目录中?

来自分类Dev

隐藏电子应用程序中的可执行文件的源代码

来自分类Dev

我可以使用makefile来制作具有不同#define的多个可执行文件吗?

来自分类Dev

应用程序的可执行文件名可以与应用程序的显示名称不同吗?

来自分类Dev

我可以使用makefile来制作具有不同#define的多个可执行文件吗?

来自分类Dev

单个 gcc 可以为 x86、arm、ppc 等多个目标生成可执行文件吗?

来自分类Dev

为什么相同的可执行文件在不同的位置加载了不同的libc.so

来自分类Dev

有没有可用的开源方法可以从动态可执行文件制作静态文件而没有源代码?

来自分类Dev

有没有可用的开源方法可以从动态可执行文件制作静态文件而没有源代码?

来自分类Dev

如何在不同目录中填充具有相同名称的可执行文件?

来自分类Dev

具有不同图标的相同可执行文件

来自分类Dev

在哪里可以找到与Visual Studio for Mac相同的monodevelop可执行文件?

来自分类Dev

漏洞扫描程序会扫描源代码还是可执行文件(二进制文件)?

Related 相关文章

  1. 1

    可以调用可执行文件的功能吗?

  2. 2

    可以从py2exe可执行文件中恢复人类可读的源代码吗?

  3. 3

    从相同的源代码创建单独的目标文件,并使用CMake链接到可执行文件

  4. 4

    从相同的源代码创建单独的目标文件,并使用CMake链接到可执行文件

  5. 5

    如何从源代码构建铬可执行文件

  6. 6

    如何从此源代码创建可执行文件?

  7. 7

    来自不同 cd 的不同可执行文件总是运行相同的代码

  8. 8

    我可以从 webview 执行可执行文件吗?

  9. 9

    从LLVM位代码生成Rust可执行文件

  10. 10

    从LLVM位代码生成Rust可执行文件

  11. 11

    GHC可执行文件可以共享运行时代码吗?

  12. 12

    我可以在Mac上生成可在Windows上使用的python可执行文件吗?

  13. 13

    我可以在Mac上生成可在Windows上使用的python可执行文件吗?

  14. 14

    gdb不显示非剥离可执行文件的源代码

  15. 15

    隐藏电子应用程序中的可执行文件的源代码

  16. 16

    PyInstaller可执行文件无法获取TorchScript的源代码

  17. 17

    Shell源代码和可执行文件位于哪个目录中?

  18. 18

    隐藏电子应用程序中的可执行文件的源代码

  19. 19

    我可以使用makefile来制作具有不同#define的多个可执行文件吗?

  20. 20

    应用程序的可执行文件名可以与应用程序的显示名称不同吗?

  21. 21

    我可以使用makefile来制作具有不同#define的多个可执行文件吗?

  22. 22

    单个 gcc 可以为 x86、arm、ppc 等多个目标生成可执行文件吗?

  23. 23

    为什么相同的可执行文件在不同的位置加载了不同的libc.so

  24. 24

    有没有可用的开源方法可以从动态可执行文件制作静态文件而没有源代码?

  25. 25

    有没有可用的开源方法可以从动态可执行文件制作静态文件而没有源代码?

  26. 26

    如何在不同目录中填充具有相同名称的可执行文件?

  27. 27

    具有不同图标的相同可执行文件

  28. 28

    在哪里可以找到与Visual Studio for Mac相同的monodevelop可执行文件?

  29. 29

    漏洞扫描程序会扫描源代码还是可执行文件(二进制文件)?

热门标签

归档