所以这就是我想要做的。我有一个由我的活动生成的第三方本机可执行文件。Activity 和本机可执行文件通过 TCP 进行通信。问题是 - 第三方应用程序正在使用libusb,因此需要 root。所以我认为实际上可以编写一个与原始libusb具有相同接口但使用 Android USB Host API的包装器libusb-java 。因此,我可以将我正在运行的可执行文件与我的libusb-java链接而不更改它,它将使用 Android USB Host API。问题是如果我想写libusb-java,我需要能够从库内部访问 JVM(它将在第三方可执行文件启动时动态加载),但由于这不会在 Java 端链接,我无法访问它。有没有一种简单的方法可以从未链接到 Activity 的本机可执行文件中调用一些 java 代码(可能是反射?)。有任何想法吗?
例如:如果我的原生二进制文件调用 *libusb_open()*,它实际上会从 libusb-java 调用 *libusb_open()*,而libusb-java又应该调用android.hardware.usb.UsbManager的openDevice()而不是原来的直接原生实现. (我过于简单化了,但这是基本思想)