1

aafm 是一个小型 Python GUI 实用程序,它使用 adb 作为底层在计算机和具有 MTP 的 Android 设备之间复制文件。但就像现在一样,文件得到的是它们被复制时的时间戳,而不是它们的原始时间戳。

如果我们可以将设备中的最后修改日期设置为与计算机中的最后修改时间相匹配,那就太好了。

我一直在浏览http://developer.android.com/tools/help/adb.html中的 adb shell 命令列表,但到目前为止,我找不到任何与经典 unixtouch命令类似的东西。

这个shell中是否存在类似的东西?

4

2 回答 2

2

为此,您可以在 android 上使用busybox 。这是一个替代小型 Linux 标准程序(例如touch )的二进制文件(主要是有限的选项) 。 阅读这个这个

现在我发现它是 android toolbox二进制文件的一部分,但如果你在手机上找不到它,你可以使用自己构建的 touch 二进制文件并使用它,源文件在这里。只需要在手机上上传,chmod,使用后删除即可。

于 2012-09-25T20:48:20.337 回答
1

如果您正在谈论使用 ADB 从主机复制到 Android,则应使用原始修改时间戳。adbd 中的当前代码执行 utime()。在某些设备上 utime() 失败(见下文)。通过 ADB 从 Android 复制到主机甚至不会尝试设置任何时间戳。我不知道这个遗漏的原因。在我的两台设备(2.1 和 4.0)上,修改时间戳是在写入 Android 时设置的,而不是在写入主机时设置的。在 4.2 设备上,FUSE 文件系统存在问题,不允许使用 utime();

在没有真正 sdcard 的设备上(即使用 FUSE),除非您是 root,否则在文件上执行 utime() 会出现问题。这进入了异常情况,您可以创建文件但不能更改时间戳。唯一真正的解决方案是确保ro.secure=0或您正在运行不安全的adbd.

于 2013-03-03T10:43:37.833 回答