如何在基于 android 的自定义开发板上进行 root 或 GPIO 访问

How to root or GPIO access on custom android-based development board

我有这个开发板Open-Q 820

它是 运行 一个 Android 7.0,基于 CodeAurora 的某些来源(似乎基于 AOSP 来源)。似乎它使用无法更改的专有引导加载程序。我需要从我的 android 应用访问 GPIO (/system/class/gpio) 以控制外部设备。问题是我无法从 android 应用程序执行此操作 - 似乎只有 root 可以访问此文件。 我可以从 PC 调用 "adb root" 命令,然后从 "adb shell" 调用

echo 0 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio0/direction
echo 1 > /sys/class/gpio/gpio0/value

它正在运行。但我需要从我的 android 应用程序中执行相同的操作。我知道如何从 android 应用程序访问终端和 su。我只是不知道如何根自定义设备。我尝试手动安装 SuperSU.apk 应用程序及其相应的 su 原生应用程序。它启动并表示需要更新 su 二进制文件。安装二进制文件并重新启动系统后,它就会损坏 - 无限 android 徽标。如果我不安装二进制文件更新,那么 SuperSU 可以授予我的应用程序权限,但实际上应用程序仍然不能使用 su(我不知道为什么 - 我在我的应用程序中使用这个库:https://github.com/Chrisplus/RootManager)。重启后 SuperSU 不再工作。 因此,您可能知道一些 SuperSU 替代方案(Knigroot 也无法正常工作)或了解如何正确安装某些超级用户管理应用程序的步骤。或者我可以直接使用 su(我试过了,但我的应用程序无权访问 /system/xbin/su)。或者我可以让 /sys/class/gpio 以某种方式被 android 应用程序访问(我在上面尝试了 chmod 777 - 不起作用)。可能是一些 SElinux 权限,但我没有这方面的经验。

谢谢

Magisk 帮助了我。因为它可以选择修补自定义启动映像。我使用了这个选项,现在 root 访问有效。