Kotlin应用无法找到已存在的Chrome Cookies文件求助
问题场景
我正在开发一款Kotlin应用,需要访问Chrome的Cookies文件,路径为/data/data/com.android.chrome/app_chrome/Default/Cookies。通过adb shell和Amaze文件管理器能确认文件存在,且应用已获取root权限,但始终报“文件未找到”错误。
直接读取时的错误日志
04-20 13:42:52.590 25419 25419 E AndroidRuntime: android.database.sqlite.SQLiteCantOpenDatabaseException: Cannot open database '/data/data/com.android.chrome/app_chrome/Default/Cookies' with flags 0x1: Directory /data/data/com.android.chrome/app_chrome/Default doesn't exist
尝试复制的代码
var proc = Runtime.getRuntime().exec("su --preserve-environment -c cp "+tempCookiesDatabaseFile.absolutePath+" "+CHROME_COOKIES_DATABASE_FILE.absolutePath) var exitVal = proc.waitFor() if (exitVal != 0) { val errorStream: InputStream = proc.getErrorStream() val stderrReader = BufferedReader(InputStreamReader(errorStream)) for (line in stderrReader.lines()) { Log.e("CookieSwapper", line) } }
复制时的错误日志
04-20 14:52:22.565 31774 31774 E CookieSwapper: cp: bad '/data/data/com.android.chrome/app_chrome/Default/Cookies': No such file or directory
排查方法
- 修正cp命令的参数顺序:你的代码里cp命令的源和目标写反了!正确格式是
cp [源文件] [目标文件],应该把Chrome的Cookies文件复制到临时目录,代码要改成:
这是可能导致失败的核心错误。var proc = Runtime.getRuntime().exec("su --preserve-environment -c cp "+CHROME_COOKIES_DATABASE_FILE.absolutePath+" "+tempCookiesDatabaseFile.absolutePath) - 检查SELinux状态:Android的SELinux可能阻止root进程访问Chrome私有目录。执行
su -c getenforce查看状态,若为Enforcing,临时关闭测试:su -c setenforce 0,若有效需考虑添加SELinux规则。 - 验证Chrome用户数据目录的实际路径:部分Chrome变种(如国内定制版、Beta/Dev版)的Cookies路径可能不同。执行
su -c ls -l /data/data/com.android.chrome/app_chrome/确认是否存在Default目录,或查看是否有Profile开头的目录;也可通过su -c ps | grep chrome找到Chrome进程,核实其数据目录。 - 使用绝对路径执行cp命令:有些su环境下PATH不包含系统命令路径,直接用
/system/bin/cp替代cp,确保命令能被正确调用。 - 先关闭Chrome进程:Chrome运行时会对Cookies数据库加锁,执行
su -c am force-stop com.android.chrome杀死进程后,再尝试复制操作。 - 检查文件权限与所属用户:执行
su -c ls -l /data/data/com.android.chrome/app_chrome/Default/Cookies查看文件权限和所属用户(通常为u0_aXX),确认root用户拥有读取权限。 - 用File类验证路径可访问性:在代码中通过
File(CHROME_COOKIES_DATABASE_FILE.absolutePath).exists()和isFile()判断文件是否能被当前进程识别,排查沙箱限制导致的路径不可见问题。
内容的提问来源于stack exchange,提问作者Daviid
相关产品推荐
相关产品推荐

