如何使用可重现的构建制作Android应用程序?

man*_*ood 5 java android open-source binary-reproducibility

根据我的经验,重新编译同一Android应用程序的源代码不会每次都生成相同的二进制文件.可重现的构建对开发人员非常有用,但我认为可重现的构建过程最重要的好处是安全性.在开源Android应用程序中,我们如何验证生成的二进制文件(.apk)是否真的是根据已审查的源代码编译的?有没有办法从Android SDK或Java生成可重现的构建?

chr*_*oon 2

“可重复”/“确定性”构建是指在给定相同的输入文件/构建系统/chroot 的情况下,编译器输出始终相同的二进制文件的构建过程。(您链接到的文章实际上讨论的是能够构建/运行与提交错误的应用程序相同的版本,这是不同的。请参阅有关Tor 如何进行确定性构建的描述。)

Java 包似乎很难使用,因为时间戳存在于很多很多地方。您可以尝试的一件事是,代替精确的二进制兼容性,反编译两个 .apk,并查看反编译的输出是否相同。