Appium 如何在功能中从URL添加apk?

Appium 如何在功能中从URL添加apk?,appium,remotewebdriver,Appium,Remotewebdriver,我正在尝试从url引用apk,但未成功。这就是我正在尝试的- capabilities.setCapability("app", new URL("http://jenkinsserverurl:8181/job/projectname/apk/apkname.apk")); . . . driver = new RemoteWebDriver(new URL("http://remote test url:4723/wd/hub"),capabilities); Appium server

我正在尝试从url引用apk,但未成功。这就是我正在尝试的-

capabilities.setCapability("app", new URL("http://jenkinsserverurl:8181/job/projectname/apk/apkname.apk"));
.
.
.
driver = new RemoteWebDriver(new URL("http://remote test url:4723/wd/hub"),capabilities);

Appium server throws following error :-
info: --> POST /wd/hub/session {"desiredCapabilities":{"app":{"userInfo":null,"query":null,"hCode":1439549959,"defaultPort":80,"path":"//.apk","protocol":"http","ref":null,"file":"//.apk","port":8181,"authority":":8181","host":"","class":"java.net.URL"},"appPackage":"","appActivity":".MainActivity","browserName":"","platformName":"Android","version":"4.4","deviceName":"emulator-5554","platform":"ANDROID"}}
error: Using local app, but didn't end in .zip, .ipa or .apk
建议???

尝试以下方法:

File appDir = new File("/home/user/..."); //only path to apk file directory
File app = new File(appDir, "app.apk");
capabilities.setCapability("app",app.getAbsolutePath());
capabilities.setCapability("appPackage", "com.packageName");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

其中:

应用程序

指向.ipa或.apk文件或包含其中一个文件的.zip的绝对本地路径或远程http URL。Appium将首先尝试在适当的设备上安装此应用程序二进制文件。请注意,如果指定appPackage和appActivity功能,Android不需要此功能。与browserName不兼容

另外,如果你只想使用远程驱动程序,你可以像这样使用Android驱动程序-

driver = (AndroidDriver) new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"),
            capabilities);

否则请使用AndroidDriver。

我认为错误在于您没有使用“MobileCableType”

对于从url安装apk:

String url = "http://example.com/myapp.apk";  
 
cap.setCapability(MobileCapabilityType.APP, url);
要从文件安装,请执行以下操作:

FileUtils.copyURLToFile(URL, File) //download file

File appDir = new File(userDir, fileName); //set file

capabilities.setCapability(MobileCapabilityType.APP, appDir.getAbsolutePath());