无法从Appium Desktop应用程序启动应用程序。执行apksigner时出错

时间:2019-03-11 05:41:29

标签: automation appium appium-android

在处理命令时发生未知的服务器端错误。原始错误:无法使用默认证书签名。原始错误产生ENOTDIR

我正在尝试使用Appium Desktop应用程序启动一个android应用程序。 Appium服务器显示以下错误日志;

  

启动'/home/santoshpc/Android/Sdk/build-tools/28.0.3/apksigner'   带参数   '[“ sign”,“-key”,“ / tmp / .mount_AppiumGDrtg1 / resources / app / node_modules / appium / node_modules / appium-adb / keys / testkey.pk8”,“-cert”,“ / tmp / .mount_AppiumGDrtg1 / resources / app / node_modules / appium / node_modules / appium-adb / keys / testkey.x509.pem“,” / tmp / .mount_AppiumGDrtg1 / resources / app / node_modules / appium / node_modules / appium-uiautomator2-server / apks /appium-uiautomator2-server-debug-androidTest.apk“]'   [ADB]执行apksigner时出错:命令   '/home/santoshpc/Android/SDK/build-tools/28.0.3/apksigner sign --key   /tmp/.mount_AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium-adb/keys/testkey.pk8   --cert /tmp/.mount_AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium-adb/keys/testkey.x509.pem   /tmp/.mount_AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-debug-androidTest.apk'   以代码1 [ADB] apksigner stderr退出:线程“ main”中的异常   java.nio.file.FileSystemException:   /tmp/.mount_AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-debug-androidTest.apk:   只读文件系统[ADB]位于   sun.nio.fs.UnixException.translateToIOException(UnixException.java:91)   [亚行]   sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)   [亚行]   sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)   sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:447)上的[ADB] [ADB]     在   sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:262)   [ADB]位于java.nio.file.Files.move(Files.java:1395)[ADB]位于   com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:342)[ADB]     在com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89)   [ADB] [ADB]无法使用apksigner工具进行签名。默认为   sign.jar。原始错误:命令   '/home/santoshpc/Android/SDK/build-tools/28.0.3/apksigner sign --key   /tmp/.mount_AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium-adb/keys/testkey.pk8   --cert /tmp/.mount_AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium-adb/keys/testkey.x509.pem   /tmp/.mount_AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-debug-androidTest.apk'   以代码1退出; StdErr:线程“ main”中的异常   java.nio.file.FileSystemException:   /tmp/.mount_AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium-uiautomator2-server/apks/appium-uiautomator2-server-debug-androidTest.apk:   只读文件系统[ADB]位于   sun.nio.fs.UnixException.translateToIOException(UnixException.java:91)   [亚行]   sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)   [亚行]   sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)   sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:447)上的[ADB] [ADB]     在   sun.nio.fs.UnixFileSystemProvider.move(UnixFileSystemProvider.java:262)   [ADB]位于java.nio.file.Files.move(Files.java:1395)[ADB]位于   com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:342)[ADB]     在com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89)   [ADB] [ADB]辞职apk。 [UiAutomator2]删除UiAutomator2   会话[UiAutomator2]删除UiAutomator2服务器会话[WD代理]   将'/'与命令名称'deleteSession'匹配[UiAutomator2]没有得到   确认UiAutomator2 deleteSession是否工作;错误是:   UnknownError:处理时发生未知的服务器端错误   命令。原始错误:尝试代理会话命令而没有   会话ID [ADB]正在运行   '/ home / santoshpc / Android / SDK / platform-tools / adb -P 5037 -s   0123456789ABCDEF外壳是强制停止的eu.niko.smart.naswi.main'   [Logcat]停止logcat捕获[ADB]删除转发的端口套接字   连接:8200 [ADB]正在运行   '/ home / santoshpc / Android / SDK / platform-tools / adb -P 5037 -s   0123456789ABCDEF转发-删除tcp:8200'[UiAutomator2]无法   删除端口转发“执行adbExec时出错。原始错误:“命令   '/ home / santoshpc / Android / SDK / platform-tools / adb -P 5037 -s   0123456789ABCDEF转发-删除tcp:8200',代码为1';   Stderr:“错误:未找到侦听器'tcp:8200'”;代码:'1''   [BaseDriver]事件“ newSessionStarted”记录在1552282079530   (11:12:59 GMT + 0545(+0545))[MJSONWP]遇到内部错误   运行命令:错误:无法使用默认证书签名。   原始错误在以下位置产生ENOTDIR [MJSONWP]   ADB.apkSigningMethods.signWithDefaultCert   (/tmp/.mount_AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium-adb/lib/tools/apk-signing.js:124:13)   [HTTP] <-POST / wd / hub / session 500 9847 ms-206 [HTTP] [HTTP]->   删除/ wd / hub / session [HTTP] {} [HTTP]找不到路由。设置   内容类型为'text / plain'[HTTP] <-DELETE / wd / hub / session 404 5   毫秒-57

我添加了以下 DesiredCapabilities

{
  "noReset": true,
  "automationName": "uiautomator2",
  "appPackage": "myapp package name",
  "appActivity": "my app activity name",
  "deviceName": "My device",
  "platformName": "android"
}

Appium桌面版本:1.11.1 操作系统-ubuntu

2 个答案:

答案 0 :(得分:0)

这是位于/usr/lib/node_modules/appium/node_modules/appium-adb/build/lib/tools位置的“ apk-signing.js”文件中的错误。

可能的解决方案:

  1. 可能是权限问题。 appium无需root执行 特权,因此它无法对apk进行更改。执行鸦片 具有root / admin特权可以解决此问题。 (仅在 apk-signing.js没有错误)
  2. 由于没有特定的appium版本,因此效果很好 无错误的apk-signing.js,例如appium版本1.7.2。

这是最终解决方案,如果高于2则不起作用。您必须修改文件apk-signing.js

./node-v6.11.4-linux-armv7l/lib/node_modules/appium/node_modules/appium-adb/build/lib/tools/apk-signing.js

,因此即使看起来没有签名,它也会返回true。如下所述编辑文件。

287 case 20:
288 context$1$0.prev = 20;
289 context$1$0.t0 = context$1$0’catch’;
290
291 _loggerJs2[‘default’].debug(“App not signed with debug cert.”);
292 return context$1$0.abrupt(‘return’, true);

请检查此链接以编辑文件和更多详细信息。

https://discuss.appium.io/t/appium-1-7-1-canot-singin-appium-uiautomator2-server-debug-androidtest-apk/19233/4

希望这会有所帮助。

答案 1 :(得分:0)

对我来说,有效的方法是转到Appium Desktop配置并从中更改JAVA_HOME

/usr/java/bin

/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
相关问题