我想用Java调用MonkeyRunner的waitForConnection函数。
我知道它可以使用Jython的device = MonkeyRunner.waitForConnection();
,但由于参数不匹配而无法使用Java。
Official MonkeyRunner API仅适用于旧版的MonkeyRunner。 waitForConnection的参数是官方API中的'float timeout,string deviceId',但waitForConnection的参数是MonkeyRunner的jar包中的'PyObject [] args,String [] kws'。
我尝试了一些方法来调用waitForConnection,如下所示,但它引发了NoSuchMethodException。
public static void main(String[] args) {
String[] strArray={"emulator-5554"};
String serialNumber = "1.0";
PyObject[] pyobj = { new PyFloat(15), new PyString(serialNumber) };
MonkeyDevice device = MonkeyRunner.waitForConnection(pyobj, strArray);
}
我调试了它,它在waitForConnection函数中使用了反射类。这意味着我应该将device = MonkeyRunner.waitForConnection(pyobj, strArray);
放入一个带参数'PyObject [] args,String [] kws'的函数中,如下所示。
public static void main(String[] args) {
String[] strArray={"emulator-5554"};
String serialNumber = "1.0";
PyObject[] pyobj = { new PyFloat(15), new PyString(serialNumber) };
MonkeyDevice device = connection(pyobj, strArray);
}
public static MonkeyDevice connection(PyObject[] args, String[] kws) {
MonkeyDevice device = MonkeyRunner.waitForConnection(args, kws);
return device;
}
但它引发了NullPointerException。
我希望将monkeyrunner连接到模拟器并返回MonkeyDevice对象。
我不知道如何在一些尝试和在互联网上搜索后调用waitForConnection()。
请帮助解决问题或提出一些建议。我对jar中的实际参数与官方API不匹配感到困惑。
感谢。