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

Automation 无法从Appium桌面应用程序启动应用程序。执行apksigner时出错,automation,appium,appium-android,Automation,Appium,Appium Android,处理该命令时发生未知的服务器端错误。原始错误:无法使用默认证书签名。原始错误生成ENOTDIR 我正在尝试使用Appium桌面应用程序启动android应用程序。Appium服务器显示以下错误日志 正在启动“/home/santoshpc/Android/Sdk/buildtools/28.0.3/apksigner” 用args “[“sign”、“--key”、“/tmp/.mount_-AppiumGDrtg1/resources/app/node_modules/appium/node_

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

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

正在启动“/home/santoshpc/Android/Sdk/buildtools/28.0.3/apksigner” 用args “[“sign”、“--key”、“/tmp/.mount_-AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium/node_modules/appium adb/keys/testkey.pk8”、“--cert”、“/tmp/.mount_-AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium/adb/keys/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) [ADB]在 sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) [ADB]在 sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) [ADB]位于sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:447)[ADB] 在 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工具进行签名。默认为 原始错误:Command “/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) [ADB]在 sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102) [ADB]在 sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107) [ADB]位于sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:447)[ADB] 在 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已工作;错误为: 未知错误:处理时发生未知的服务器端错误 原始错误:尝试代理会话命令而不使用 会话id[ADB]正在运行 “/home/santoshpc/Android/Sdk/platformtools/adb-p5037-s 0123456789ABCDEF炮弹部队拦截eu.niko.smart.naswi.main' [Logcat]停止Logcat捕获[ADB]删除转发端口套接字 连接:8200[ADB]正在运行 “/home/santoshpc/Android/Sdk/platformtools/adb-p5037-s 0123456789ABCDEF转发--删除tcp:8200'[UiAutomator2]无法 执行adbExec时发生“删除端口转发”错误。原始错误:“命令” “/home/santoshpc/Android/Sdk/platformtools/adb-p5037-s 0123456789ABCDEF forward—删除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: 删除/wd/hub/session[HTTP]{}[HTTP]未找到路由。正在设置 内容类型为“text/plain”[HTTP]这是驻留在位置
/usr/lib/node\u modules/appium/node\u modules/appium adb/build/lib/tools中的“apk signing.js”文件中的一个错误

可能的解决方案:

  • 这可能是权限问题。应用程序在没有根目录的情况下执行 特权,因此无法对apk进行更改。正在执行的appium 使用root/admin权限可以解决此问题。(仅当
    apk signing.js
    无漏洞)
  • 对于特定的appium版本,它可以正常工作,因为它们没有 像appium版本1.7.2一样,没有bug的
    apk signing.js
  • 如果以上2项无效,这是最终解决方案。您必须修改文件
    apk signing.js

    ./node-v6.11.4-linux-armv7l/lib/node_modules/appium/node_modules/appium-adb/build/lib/tools/apk-signing.js
    
    它会的
    ./node-v6.11.4-linux-armv7l/lib/node_modules/appium/node_modules/appium-adb/build/lib/tools/apk-signing.js
    
    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);
    
    /usr/java/bin
    
    /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home