工作区之间的Android ccache共享

标签 android performance android-source ccache

我想共享使用一个工作空间构建的ccache以供另一个工作空间使用,以便使用一份ccache数据来编译相同的源代码。

例如: 1) 创建了一个工作区 (home/user/source_code1)。 2)从服务器同步这里的代码。 3) 使用 USE_CCACHE=1 编译代码

以上将构建我的缓存。现在我执行以下操作

案例一: 1) 创建了一个工作区 (home/user/source_code2)。 2)从服务器同步相同的源代码。 3) 进行与之前工作区中相同的编译。

案例二: 1) 删除工作区 home/user/source_code1 2) 重新创建之前的工作区 (home/user/source_code1)。 2)从服务器重新同步这里的代码。 3) 使用 USE_CCACHE=1 编译代码

我希望 source_code2 编译使用从 source_code1 构建的 ccache,当我删除并重新创建相同的工作区时,我需要使用已经构建的 ccache 进行编译。 欢迎任何实现相同目标的指针!

我现在在上述两种情况下看到的结果是,尽管 ccache 已构建,但它从未被使用过,或者 ccache 中没有命中,无论何时使用新工作区,它都会不断构建,如果我只是清理在不删除任何早期源代码 (home/user/source_code1) 的情况下在同一个工作区中构建和重新编译,然后 ccache 编译跳入并且有帮助减少构建时间的命中。

知道为什么每当使用全新的工作区时我都看不到任何 ccache 命中吗?

我总是增加“ccache miss”而不是“cache hit (direct) or cache hit (preprocessed)”。此外,“缓存命中(直接)”始终为 0。

我设置了以下变量。

CCACHE_BASEDIR=/home/user
USE_CCACHE=1
CCACHE_DIR=/home/user/ccache
CCACHE_SLOPPINESS=time_macros,file_macro

如果我在这里遗漏了什么,请告诉我。

最佳答案

也许你需要用ver替换ccache。 3.x 或以上。
据我所知,包含在android源代码树中的ccache是​​ver。 2.4.
CCACHE_BASEDIR 在 ccache 3.x 中工作,您可以引用下面的链接。

Set CCACHE_BASEDIR to share object files between trees

Andorid 构建脚本将使用他们的预构建工具,而不是安装在您系统中的工具。

关于工作区之间的Android ccache共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23304767/

相关文章:

android - 从微调器中删除最后一项会删除整个列表

android - 如何为 toast 设置字体?

c# - 测量每个 Entity Framework 查询的时间

javascript - 使用非常大的 Javascript 数组或对象

android - 查找 Nexus S 相机 HAL 的源代码?

android - 使用带有空格的文件运行 CMD 命令

php - Perl 与 PHP 的网络抓取

android - 构建 AOSP 应用程序并对其进行自定义

java - 调试Android SDK库

android - Kivy:在 Android 上无延迟地播放声音