构建过程增强: 从 `dists` 目录中排除重复的源文件
作者: dogancankalinci创建于 2025年11月13日更新于 2026年6月25日
标签Priority: HighRELEASE BLOCKER
问题描述
SDLGradleBootstrap (以及其他引导程序)中的当前 assemble_distribution 方法会将整个临时构建目录复制到最终的 dists/<dist_name> 目录中。 此过程可靠地工作,但会导致 dists 目录中包含大量重复的文件。 具体来说,它包含了所有 BootstrapNDKRecipe 依赖项 (如 SDL2、SDL2_image 等) 的完整 C/C++ 源代码,以及位于 jni/ 子目录中的中间目标文件,以及位于 obj/ 中的中间目标文件。 这并不必要,因为这些源代码已经通过 ndk-build 编译成位于 libs/ 目录中的最终 .so 库。 随后的 Gradle 构建步骤只使用这些预编译的库,而不会重新编译 C/C++ 源代码。 此行为带来了一些负面影响:
- 磁盘使用量增加: 它显著增加了分发的大小,这在 CI/CD 环境或具有有限磁盘空间的系统中可能会造成问题。
- 构建时间延长: 复制不必要的源代码所带来的文件 I/O 会使构建过程延迟一小段时间,但还是很明显的。
- 项目结构混淆: 在最终的 Gradle 项目中包含
jni/源代码可能会误导人,让人以为 Gradle 正在编译它们,但其实并非如此。 更清晰的项目结构会更容易调试和理解。 注意: 此问题 不会 影响 APK 的最终大小,因为 Android 包装工具正确地将源代码排除在外。 这完全是针对中间构建过程的一个增强。
内容来源: kivy/python-for-android