【问题标题】:“vendor" folder of Android file systemAndroid文件系统的“vendor”文件夹
【发布时间】:2016-06-29 07:37:11
【问题描述】:

我正在开发一个 Android 应用程序,它使用 OTG cableAndroid 设备与 iOS 设备通信.我正在使用libimobiledevice libraryAndroid 移植版本。该库包含共享库(.so 文件)和二进制可执行文件,用于使用 usbmuxd 的概念在 Android 和 iOS 设备之间建立通信。

此库需要将某些 .so 文件(共享库)安装到位置 “/vendor/lib” 并将一些二进制可执行文件安装到位置 “/vendor/bin”。经过研究,我了解到如果 Android 设备是 root,则可以访问这些位置。

我有以下问题:

  1. 为什么 libimobildevice 库需要这样的 root 权限?一般来说,将共享库文件放在“vendor”文件夹中可以获得哪些类型的优势(在权限方面)?
  2. Android 设备文件系统上是否有相当于将文件放入“vendor”文件夹的位置?

我已经在我的 MOTO-X 上测试了这个库,它没有根,我无法从我的 Android 应用程序中检测到连接的 iOS 设备。

如果您有任何关于此主题的建议,我将不胜感激。提前谢谢你。

【问题讨论】:

    标签: android ios shared-libraries .so


    【解决方案1】:

    从您链接的 github 存储库中,安装位置可能会更改(在 android/install.sh 中),您是否尝试过任何其他安装位置(如 sdcard 或数据)?

    对于您的问题:

    1. vendor 文件夹rootfs 标记,并链接到 system/vendor,后者用 system_file 标记,访问此位置的权限由 SEAndroid sepolicy 控制。

      ls -Z 供应商
      lrwxrwxrwx root root u:object_r:rootfs:s0 vendor -> /system/vendor
      ls -Z 系统
      drwxr-xr-x root shell u:object_r:system_file:s0 vendor

    2. 我建议您先尝试其他位置。或者尝试在 jni 中使用它 怎么办?

    希望这能有所帮助。

    【讨论】:

    • 感谢您的评论。我试图将所有二进制文件和库放在 SD 卡上,但由于 Android 系统不允许 SD 卡授予任何文件的可执行权限,我无法执行 SD 卡上存在的二进制文件。我曾尝试以 jni 方式使用这些 .so 文件,但我的应用程序无法检测到附加的 iOS 设备。
    • 我没用过你的工具。假设您应该确定该工具是否运行良好。并使用 adb shell dmesg | grep avcadb logcat | grep avc 查看是否缺少 sepolicy 权限
    猜你喜欢
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 2014-03-16
    相关资源
    最近更新 更多