You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python的os.system执行adb命令为/data/data子文件夹授权

问题解决方法
  • 修正su命令写法,避免cd执行问题
    部分su实现对-c参数后的复合命令解析存在兼容问题,直接跳过cd操作,让chmod直接作用于目标路径更稳妥,修改后的Python代码:
    os.system("adb shell su -c 'chmod -R 777 /data/data'")
    无需额外添加exit命令,su -c执行完指定命令后会自动退出root环境。

  • 先验证目标路径有效性
    手动执行以下命令确认/data/data目录存在:
    adb shell su -c 'ls -ld /data/data'
    如果返回正常的目录信息则路径无误;若提示不存在,说明你的ROM对存储目录做了定制,需要确认实际的应用数据目录位置。

  • 解决adb pull权限问题
    即使给/data/data设置了777权限,SELinux规则或文件自身权限仍可能限制直接pull操作。可以先把目标文件复制到外部存储再拉取:

    # 替换成你要拉取的文件实际路径
    target_file = "/data/data/com.example.app/files/your_file.txt"
    os.system(f"adb shell su -c 'cp {target_file} /sdcard/temp_file' && adb pull /sdcard/temp_file ./")
    
  • 推荐使用subprocess替代os.system
    os.system无法便捷捕获执行结果和错误信息,用subprocess更可靠,示例代码:

    import subprocess
    try:
        subprocess.run(
            ["adb", "shell", "su", "-c", "chmod -R 777 /data/data"],
            check=True,
            capture_output=True,
            text=True
        )
        print("权限设置成功")
    except subprocess.CalledProcessError as e:
        print(f"执行失败: {e.stderr}")
    

内容的提问来源于stack exchange,提问作者Adam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 16:33:16