文章摘要
F-Droid的构建服务器因CPU过时,无法编译现代Android应用,影响了其应用生态的更新与发展。
文章总结
F-Droid构建服务器因CPU过时无法构建现代Android应用
F-Droid,作为最大的非Google Android应用商店之一,近期面临一个严重的技术问题:其构建服务器因CPU过时,无法构建使用最新Android Gradle Plugin(AGP)和Gradle版本的现代Android应用。具体来说,AGP 8.12.0和Gradle 9.0引入的Google新aapt2二进制文件要求CPU支持SSE4.1和SSSE3指令集,而F-Droid的构建服务器硬件并不支持这些指令。
这一问题导致许多应用无法在F-Droid上发布更新。例如,开源应用MBCompass的开发者不得不降级到AGP 8.11.1和Gradle 8.13以绕过此问题,但即便如此,F-Droid仍然因AGP中的基线配置文件可重复性错误而构建失败。开发者最终只能通过禁用基线配置文件并发布多个“维护”版本来解决这一问题,这不仅浪费了开发时间,还让用户感到困惑。
F-Droid的构建服务器硬件问题并非首次出现。早在2021年,AGP 4.1.0就曾引发类似问题,如今这一问题再次出现,影响了数百个应用。尽管Google已在上游修复了此问题,但F-Droid的构建服务器仍未更新,导致开发者不得不继续寻找临时解决方案。
F-Droid作为一个由志愿者运营的开源项目,资金和资源有限。尽管其重要性不言而喻,但缺乏足够的支持使其在面对此类技术问题时显得尤为脆弱。一些开发者呼吁公众为F-Droid提供更多资金支持,以便其能够更新硬件并解决此类问题。
此外,F-Droid的构建流程强调可重复性,这使得其构建环境相对封闭,开发者无法轻易修改构建工具链。这也导致在面对上游工具链的更新时,F-Droid的应对能力受到限制。
总的来说,F-Droid的构建服务器硬件过时问题不仅影响了开发者的工作效率,也对用户的使用体验造成了负面影响。随着Android生态系统的不断发展,F-Droid需要尽快解决这一问题,以保持其在开源应用分发领域的重要地位。
评论总结
评论主要围绕F-Droid构建服务器不支持SSE4.1和SSSE3指令集的问题展开,涉及多个观点和解决方案。
主要观点1:F-Droid服务器硬件过时
部分评论认为F-Droid的服务器硬件过于老旧,无法支持现代指令集。
- "I wonder why such old servers are still in use." (micw)
- "wtf they cannot be still running opterons." (nicman23)
主要观点2:Google的aapt2二进制文件问题
评论指出Google的aapt2二进制文件在AGP 8.12.0版本中开始要求SSE4.1和SSSE3指令集,导致F-Droid无法正常构建。
- "The root cause: Google’s new aapt2 binary in AGP 8.12.0 started requiring CPU instructions." (hulitu)
- "Starting to require it in a minor version update is a whole different thing." (kijin)
主要观点3:解决方案与替代方案
部分评论提出了解决方案,如使用Obtainium替代F-Droid,或从源代码编译工具链。
- "Encourage your users to use Obtainium instead." (donotredeem)
- "Why not compile the whole toolchain from source rather than using a binary gradle/aapt2?" (karteum)
主要观点4:Google已修复问题
有评论提到Google已在上游修复了该问题,但具体解决时间尚不明确。
- "Apparently it was fixed upstream by Google?" (jchw)
主要观点5:对Google的批评
部分评论对Google的行为表示不满,认为其要求过于苛刻。
- "Very intelligent move from Google. Now you can't compile 'Hello World' without SSE4.1, SSSE3." (hulitu)
总结
评论主要关注F-Droid服务器硬件过时、Google的aapt2二进制文件问题及其解决方案。尽管Google已修复问题,但部分用户对Google的要求表示不满,并提出了替代方案。