usbmuxd icon indicating copy to clipboard operation
usbmuxd copied to clipboard

How to build Android version?

Open weng1250 opened this issue 5 years ago • 25 comments

Could anyone figure out how to run usbmuxd on Android os? I am trying to connect iOS device with Android device by usb and then communicate with each other. Thanks

weng1250 avatar Nov 11 '19 11:11 weng1250

I've been looking into this as well

seanhead avatar Jul 02 '20 21:07 seanhead

首先,我想我们需要解决 Android 设备里面 /dev/bus/usb 目录的权限问题

image

usbmuxd 需要依赖 静态编译的 其它库。然后 修改以下代码 main.c

image

image

image

再修改 libusbmuxd 里面的 相应连接 libusbmuxd.c image

AiXanadu avatar Dec 05 '20 01:12 AiXanadu

I ended up skipping this path, since I didn't actually need to talk to "ios", just my app. If you emulate a ethernet device on the USB port you end up with a full TCP/IP stack to do what ever you want with.

seanhead avatar Dec 07 '20 19:12 seanhead

@seanhead
So isn't your goal to connect IOS devices ? Can you tell me how you simulated it ?

AiXanadu avatar Dec 08 '20 09:12 AiXanadu

@XanaduAPI 我编译好后实际运行会有错误提示 有什么方法解决么 我发现这两个路径都是无法访问 1|rk3288:/ # usbmuxd -v -f [17:25:19.379][3] usbmuxd v1.1.2 starting up [17:25:19.380][4] Creating socket [17:25:19.380][4] socket port:27015 [17:25:19.380][4] Listening on /var/run/usbmuxd [17:25:19.381][0] Failed to create required directory '/var/lib/lockdown': No such file or directory

cczhr avatar Feb 04 '21 09:02 cczhr

@XanaduAPI 我编译好后实际运行会有错误提示 有什么方法解决么 我发现这两个路径都是无法访问 1|rk3288:/ # usbmuxd -v -f [17:25:19.379][3] usbmuxd v1.1.2 starting up [17:25:19.380][4] Creating socket [17:25:19.380][4] socket port:27015 [17:25:19.380][4] Listening on /var/run/usbmuxd [17:25:19.381][0] Failed to create required directory '/var/lib/lockdown': No such file or directory

你解决了这两个路径也是没用的。只有ROOT过才可以的。

AiXanadu avatar Feb 04 '21 09:02 AiXanadu

@XanaduAPI 已经ROOT的设备要怎么执行?

cczhr avatar Feb 04 '21 09:02 cczhr

@XanaduAPI 已经ROOT的设备要怎么执行?

把 usbmuxd 的文件通信改为 socket 。在Linux中,usbmuxd 是通过文件和libusbmuxd 通信的。 你修改为 AF_INET 看看。 image

AiXanadu avatar Feb 04 '21 09:02 AiXanadu

@XanaduAPI 已经ROOT的设备要怎么执行?

通过 127.0.0.1 进行通信。这样就可以避开 /var/run/usbmuxd 的权限问题。 或者,你可以把那些文件夹的权限都改掉。放假咯。

AiXanadu avatar Feb 04 '21 09:02 AiXanadu

@XanaduAPI 我 main.c就是是这样改的,我都是用re管理器把这些目录创建和权限改成777也不行,通过 127.0.0.1 进行通信 是怎么操作? 最近这一两天才开始研究 ,不太熟悉。是啊放假啦

cczhr avatar Feb 04 '21 09:02 cczhr

@XanaduAPI 我 main.c就是是这样改的,我都是用re管理器把这些目录创建和权限改成777也不行,通过 127.0.0.1 进行通信 是怎么操作? 最近这一两天才开始研究 ,不太熟悉。是啊放假啦

就是说,本来 usbmuxd 和 libusbmuxd 是通过 /var/run/usbmuxd 来通信的。现在改为 通过本地网络来通信。这样就可以避开读写 /var/run/usbmuxd 文件的问题。libusbmuxd 也要修改

AiXanadu avatar Feb 04 '21 09:02 AiXanadu

@XanaduAPI 好的 谢谢 我晚上再看看

cczhr avatar Feb 04 '21 09:02 cczhr

Please try to post in English, even if it was just ran through a translator. Anyway, you don't need to change the source code. You can now pass --socket 127.0.0.1:12345 to usbmuxd to specify a port to listen on instead of the default unix socket, and also --pidfile NONE to disable the writing (and locking) of /var/run/usbmuxd.pid. For anything using libusbmuxd, you can then set an environment variable to change the socket path, e.g. USBMUXD_SOCKET_ADDRESS=127.0.0.1:12345 ideviceinfo. Hope that helps.

nikias avatar Feb 04 '21 12:02 nikias

@nikias Thank you for your help, I want to support libimobiledevice,must create a var/lib/lockdown path,creating this path requires the Android device to be rooted,can I easy customize this path?

cczhr avatar Feb 04 '21 14:02 cczhr

@XanaduAPI 感谢 通过你的方法确实可以连接上了

cczhr avatar Feb 04 '21 14:02 cczhr

首先,我想我们需要解决 Android 设备里面 /dev/bus/usb 目录的权限问题

image

usbmuxd 需要依赖 静态编译的 其它库。然后 修改以下代码 main.c

image

image

image

再修改 libusbmuxd 里面的 相应连接 libusbmuxd.c image

请问还需要修改其他地方吗?我按照修改后日志,我也该成通过127.0.0.1连接,但还是走了这个位置 Listening on /data/local/tmp/usbmuxd Failed to create required directory '/var/lib/lockdown': No such file or directory

daomeixiong2547 avatar Mar 31 '21 08:03 daomeixiong2547

@daomeixiong2547 你需要 搜索 /var/lib/lockdown ,然后替换为一个可读写的目录,这个位置是用来存储 iPhone 信任文件的。

AiXanadu avatar Apr 01 '21 04:04 AiXanadu

@daomeixiong2547 你需要 搜索 /var/lib/lockdown ,然后替换为一个可读写的目录,这个位置是用来存储 iPhone 信任文件的。

我也搞好了 非常感谢!!!

daomeixiong2547 avatar Apr 01 '21 08:04 daomeixiong2547

@daomeixiong2547 你需要 搜索 /var/lib/lockdown ,然后替换为一个可读写的目录,这个位置是用来存储 iPhone 信任文件的。

我也搞好了 非常感谢!!!

你可以用root后的Android来连接手机了吗?

AiXanadu avatar Apr 01 '21 08:04 AiXanadu

@XanaduAPI 感谢 通过你的方法确实可以连接上了

你用Root过的Android设备,可以通过 usbmuxd 和 libimobiledevice 来连接信任手机吗?

AiXanadu avatar Apr 01 '21 08:04 AiXanadu

@daomeixiong2547 你需要 搜索 /var/lib/lockdown ,然后替换为一个可读写的目录,这个位置是用来存储 iPhone 信任文件的。

我也搞好了 非常感谢!!!

你可以用root后的Android来连接手机了吗?

我手上没有root设备,但我用Genymoton和Virtual box模拟root设备连接usb的场景,替换了一下模拟器的cpu架构。 使用你描述的修改方法,打出来的包就可以可以通过 usbmuxd 和 libimobiledevice来信任手机并读取手机信息了。

daomeixiong2547 avatar Apr 13 '21 07:04 daomeixiong2547

@daomeixiong2547 你需要 搜索 /var/lib/lockdown ,然后替换为一个可读写的目录,这个位置是用来存储 iPhone 信任文件的。

我也搞好了 非常感谢!!!

你可以用root后的Android来连接手机了吗?

我手上没有root设备,但我用Genymoton和Virtual box模拟root设备连接usb的场景,替换了一下模拟器的cpu架构。 使用你描述的修改方法,打出来的包就可以可以通过 usbmuxd 和 libimobiledevice来信任手机并读取手机信息了。

模拟器和真机还是不一样的,我用Root过后的真机试了是不行,通信不了。

AiXanadu avatar Apr 19 '21 02:04 AiXanadu

@daomeixiong2547 你需要 搜索 /var/lib/lockdown ,然后替换为一个可读写的目录,这个位置是用来存储 iPhone 信任文件的。

我也搞好了 非常感谢!!!

你可以用root后的Android来连接手机了吗?

我手上没有root设备,但我用Genymoton和Virtual box模拟root设备连接usb的场景,替换了一下模拟器的cpu架构。 使用你描述的修改方法,打出来的包就可以可以通过 usbmuxd 和 libimobiledevice来信任手机并读取手机信息了。

模拟器和真机还是不一样的,我用Root过后的真机试了是不行,通信不了。

加我微信daomeixiong2547,我发给你试试

daomeixiong2547 avatar May 10 '21 03:05 daomeixiong2547

@daomeixiong2547 你需要 搜索 /var/lib/lockdown ,然后替换为一个可读写的目录,这个位置是用来存储 iPhone 信任文件的。

我也搞好了 非常感谢!!!

你可以用root后的Android来连接手机了吗?

我手上没有root设备,但我用Genymoton和Virtual box模拟root设备连接usb的场景,替换了一下模拟器的cpu架构。 使用你描述的修改方法,打出来的包就可以可以通过 usbmuxd 和 libimobiledevice来信任手机并读取手机信息了。

模拟器和真机还是不一样的,我用Root过后的真机试了是不行,通信不了。

加我微信daomeixiong2547,我发给你试试

加了

AiXanadu avatar May 10 '21 06:05 AiXanadu

Please try to post in English, even if it was just ran through a translator. Anyway, you don't need to change the source code. You can now pass --socket 127.0.0.1:12345 to usbmuxd to specify a port to listen on instead of the default unix socket, and also --pidfile NONE to disable the writing (and locking) of /var/run/usbmuxd.pid. For anything using libusbmuxd, you can then set an environment variable to change the socket path, e.g. USBMUXD_SOCKET_ADDRESS=127.0.0.1:12345 ideviceinfo. Hope that helps.

@nikias Is there a way to make usbmuxd to run on a android device without rooted?thanks

aceai84 avatar Aug 12 '21 08:08 aceai84