AOSP 构建系统如何生成 .rsp 文件以及如何获取它们?

Posted

技术标签:

【中文标题】AOSP 构建系统如何生成 .rsp 文件以及如何获取它们?【英文标题】:How does AOSP build system produce .rsp files and how to get them? 【发布时间】:2019-04-01 05:28:24 【问题描述】:

根据How does AOSP 9.0 build system link the executable?和What does @ mean in this clang command in AOSP build log?,链接模块时,AOSP似乎会生成一个.rsp文件,其中包含模块所需的所有obj文件,并将文件名作为参数传递给链接命令,例如:

prebuilts/clang/host/linux-x86/clang-4691093/bin/clang++ /OpenSource/Build/android/9.0.0_r30/soong/.intermediates/bionic/libc/crtbegin_so/android_x86_64_core/crtbegin_so.o @/OpenSource/Build/Android/9.0.0_r30/soong/.intermediates/frameworks/base/libs/hwui/libhwui/android_x86_64_core_shared/libhwui.so.rsp ......

但是 .rsp 文件似乎在构建后被删除了。

问题是,这些文件是如何生成的,如何获取这些文件?这可能需要学习和修改对我来说遥不可及的构建脚本。

【问题讨论】:

【参考方案1】:

也许有你的答案,阅读 ninja build manual ,在提到的手册 .rsp 文件中。

https://ninja-build.org/manual.html

以下是我复制出来的信息。


rspfile, rspfile_content 如果存在(两者),Ninja 将对给定命令使用响应文件,即在调用命令之前将所选字符串 (rspfile_content) 写入给定文件 (rspfile),并在成功执行命令后删除文件。

这在 Windows 操作系统上特别有用,其中命令行的最大长度受到限制并且必须使用响应文件。

【讨论】:

您可以按引用按钮将引用的文本格式化为引用的格式。您是否深入挖掘以找出 ninja 脚本中删除 rsp 文件的确切行?

以上是关于AOSP 构建系统如何生成 .rsp 文件以及如何获取它们?的主要内容,如果未能解决你的问题,请参考以下文章

构建 AOSP:如何在 SD 卡上包含文件?

如何将“aar”库添加到 AOSP?

如何从AOSP的android源代码中删除主屏幕的谷歌搜索栏

AOSP 变得冗长

如何在 AOSP 构建中设置默认启动器?

AOSP:如何在 Android Studio 中分别构建 /platform/frameworks/base 或 /platform/frameworks/support