gpt4 book ai didi

android - 从 Android 应用程序中的 native 库访问根文件(/system、/dev)

转载 作者:搜寻专家 更新时间:2023-11-01 09:41:04 25 4
gpt4 key购买 nike

我有一个 NATIVE LIBRARY,它将尝试在 android 设备的/system、/dev 文件夹中创建文件(使用 open()、fopen() 等)。

现在我已经使用 JNI 和 NDK 将库与 A​​ndroid 应用程序集成在一起。但是在根文件夹中创建文件失败。我尝试从 native 库在 SD 卡中创建一个文件,这工作正常。

既不想将文件打开代码移动到 Android 代码(Java 代码),也不想在 sdcard 中创建文件。我有明确要求在根文件夹中创建文件。

最佳答案

在最近的 android 版本中,rootfs 和系统在 init 设置目录和文件后以只读方式挂载。

为了在系统分区中创建文件,您必须重新挂载它们并具有写入权限。所以你必须以 root 用户身份调用/system/bin/mount。

根据/system/bin/mount 是玩具箱还是工具箱符号链接(symbolic link),挂载系统 rw 的命令不同

如果您无法通过 Runtime.getRuntime().exec("su") 获取 su,您是否在 userdebug 构建中使用了 aosp 生成的 su 二进制文件?如果是这样,我相信您必须是 shell 用户才能使用它。也许切换到更常用的 su 二进制文件或更新 aosp 二进制文件。

编辑:对于安装系统 rw,您首先需要确定/system/bin/mount 是 toybox 还是工具箱的符号链接(symbolic link),因为它们用于安装系统 rw 的命令会不同

ls -l 或 readlink 应该能够很容易地回答这个问题。

对于工具箱,

(以 uid(0) 运行)

mount -o remount,rw/system

玩具盒,

(以 uid(0) 运行)

mount -o rw,remount -t auto/system

在 Java 中,子进程必须首先请求 su,因为只有 root 用户才能执行挂载命令

关于android - 从 Android 应用程序中的 native 库访问根文件(/system、/dev),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39785497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com