我可以例如通过符号链接更改dalvik缓存位置吗?


9

我目前使用Link2SD,因为手机的板载存储不足以用于多个基本应用程序。它非常有效,但仅限于手机开机时使用。

更换ROM时,dalvik缓存被擦除,当手机重新启动时,您会看到一个进度条,指出Android正在优化应用程序。因此,在给定合理数量的应用程序的情况下,dalvik高速缓存会在link2sd不能执行任何操作之前就填满存储。

那么,是否有一种方法可以在系统继续启动并开展业务之前,将sd卡文件夹安装为适当的缓存位置?我知道这可能涉及创建符号链接,但是我只是不知道什么时候安装东西和安装顺序。

Answers:


2

当然可以。尽管将dalvik-cache迁移到普通SD卡文件系统(最常见的vfat)似乎没有问题,但仍然强烈建议您将SD卡格式化为ext4(或与相同/data),以确保一切正常精细。

所以走吧 建议在继续操作之前对所有应用程序进行完整备份,但是如果您感到幸运,则不需要这样做。假设您有一个终端仿真器来执行必要的工作。

首先,创建一个要将dalvik缓存迁移到的文件夹。然后chmodchown新文件夹匹配/data/dalvik-cache如果您正在运行支持SELinux的Android操作系统,请不要忘记相应地更改安全上下文。

ls -dlZ /data/dalvik-cache
ls -lZ /data/dalvik-cache

查看dalvik-cache文件夹的原始权限,所有者/组和安全上下文。

接下来,将所有文件从复制/data/dalvik-cache到您的新位置,例如/storage/sdcard1/dalvik-cache。您可以使用cp -a命令来保留文件属性,这会使事情变得更简单。

确保在接下来的步骤中没有新的应用程序启动。

然后,使用rm -r /data/dalvik-cache创建指向新位置的符号链接

ln -s /storage/sdcard1/dalvik-cache /data/dalvik-cache

就这样。大功告成 重新启动手机(不是必需的,但建议使用)。

有关此过程的一些注意事项:

  1. 由于Android基于高度修改的Linux内核,busybox可能无法始终正常运行。例如,几乎所有与SELinux相关的功能都无法正常运行。您可以如下所示进行测试。

    toolbox ls -Z /data
    busybox ls -Z /data
    toolbox getenforce
    busybox getenforce
    

    但是,这些可能会正常工作,具体取决于Android版本:

    busybox chcon <context> <files...>
    busybox runcon <context <program> [args...]
    
  2. 切勿取出SD卡。如果您重新格式化SD卡,请确保它仍为ext4,并在首次启动手机之前重新创建dalvik-cache文件夹。


一年后再次看到时,我不知道如何写出这个全面的答案。猜猜我已经对Android遗忘了很多(当然,这是不可能的)。
iBug

1

有一些不错的Howtos,可能对解决您的问题很有帮助:

根据一些论坛讨论,A2SDGUI-Darktremor A2SD GUI应该是将Dalvik缓存移至SD卡的首选应用程序。


1
如果您可以从链接中添加一些信息到您的帖子中,那就很好了
Flow

太多的东西无法与我的答案相结合-这就是为什么我只提取基本提示(即用于执行此工作的应用程序)的原因。
伊齐
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.