【发布时间】:2020-11-19 11:00:42
【问题描述】:
我正在尝试在运行 Windows 10 的机器上安装 android 设备,以便通过 Java 应用程序访问文件。我知道大家一致认为应该使用 WebDav 或 FTP 服务器,但如果可能的话,我想避免这种情况。我花了好几个星期研究这个问题,最终决定接触堆栈溢出的聪明才智。
要挂载 MTP 设备,我们需要一个类似于 Unix 的 fuse 的文件系统库。对于 Windows,两个明显的选择是:
- 多卡尼
- winfsp
据我了解,有两个主要的 API/库可以访问 MTP 设备:
- libmtp
- WPD
我已经设法使用 msys2/Mingw64 为 windows 编译 libmtp。
在我看来,我应该使用像 mtpmount 这样的应用程序,或者尝试使用像 dokany 这样的文件系统库而不是 fuse 来移植像 simple-mtpfs 这样的 linux 应用程序。
但是,当我尝试使用 mtp-mount(它使用 WPD API)时,它没有列出任何设备,并且当我使用提供的示例测试 libMTP 时,我收到如下错误:
libusb_open() failed!: No error
libmtp version: 1.1.18
Listing raw device(s)
Device 0 (VID=04e8 and PID=6860) is a Samsung Galaxy models (MTP).
Found 1 device(s):
Samsung: Galaxy models (MTP) (04e8:6860) @ bus 1, dev 10
Attempting to connect device(s)
OK.
LIBMTP PANIC: Unable to initialize device
Unable to open raw device 0
我不知道该怎么做。任何帮助将不胜感激。
更新
我让 libmtp 使用 libusbk-dev-kit 工作。具体来说,我使用 libusbK-inf-wizard 为我的设备创建驱动程序。我测试了 libusbk 驱动程序和 WinUSB 驱动程序,发现它们都解决了我的问题。 另外,我从源代码构建了mtpmount,发现它也可以正常工作。
【问题讨论】:
标签: android mount libusb mtp dokan