【发布时间】:2016-09-30 06:58:22
【问题描述】:
我有一个 NATIVE LIBRARY,它将尝试在 Android 设备的 /system、/dev 文件夹中创建文件(使用 open()、fopen() 等)。
现在我已经使用 JNI 和 NDK 将该库与一个 android 应用程序集成。但是在根文件夹中创建文件失败。 我试图从本机库的 sdcard 中创建一个文件,这工作正常。
我既不想将文件打开代码移动到 Android 代码(Java 代码),也不想在 sdcard 中创建文件。我有明确要求在根文件夹本身中创建文件。
【问题讨论】:
-
那么,在尝试创建文件之前,您是否在代码中执行了
su root或类似内容? -
@Michael 我试过 Process su = Runtime.getRuntime().exec("su");此命令但它失败说 root 权限被拒绝。我可以通过 adb shell 获得超级用户。
-
如果您将文件打开操作移至 Java,访问权限不会改变。
-
@AlexCohn 我获得了设备的 root 访问权限。过程 su = Runtime.getRuntime().exec("su");现在正在工作。现在,而不是给出 13 (EACCESS denied) open("/system/abc.txt", RW) 方法返回 30(/system 以只读方式安装)。虽然我在获得“su”后将系统重新安装为读写
-
不,我不知道为什么你的 /system 仍然是 r/o 挂载的。您可以打开 adb shell 并检查那里实际发生的情况。注意 /system 和 rootfs 是分开挂载的。
标签: android android-ndk java-native-interface root native-code