【问题标题】:unable to start app from Appium Desktop app. Got an error during apksigner execution无法从 Appium 桌面应用程序启动应用程序。 apksigner 执行期间出错
【发布时间】:2019-08-01 09:48:21
【问题描述】:

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

我正在尝试使用 Appium 桌面应用程序启动一个 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 签名 --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) [ADB] 在 sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:447) [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) [亚行] 在 com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89) [ADB] [ADB] 无法使用 apksigner 工具进行签名。默认为 签名.jar。原始错误:命令 '/home/santoshpc/Android/Sdk/build-tools/28.0.3/apksigner 签名 --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:线程“主”中的异常 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) [ADB] 在 sun.nio.fs.UnixCopyFile.move(UnixCopyFile.java:447) [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) [亚行] 在 com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89) [ADB] [ADB] 辞职 apk。 [UiAutomator2] 删除 UiAutomator2 session [UiAutomator2] 删除 UiAutomator2 服务器会话 [WD 代理] 匹配 '/' 到命令名称 'deleteSession' [UiAutomator2] 没有得到 确认 UiAutomator2 deleteSession 工作;错误是: UnknownError:处理时发生未知的服务器端错误 命令。原始错误:尝试在没有代理的情况下代理会话命令 会话 ID [ADB] 正在运行 '/home/santoshpc/Android/Sdk/platform-tools/adb -P 5037 -s 0123456789ABCDEF shell am force-stop eu.niko.smart.naswi.main' [Logcat] 停止 logcat 捕获 [ADB] 删除转发端口套接字 连接:8200 [ADB] 正在运行 '/home/santoshpc/Android/Sdk/platform-tools/adb -P 5037 -s 0123456789ABCDEF forward --remove tcp:8200' [UiAutomator2] 无法 删除端口转发'执行 adbExec 时出错。原始错误:'命令 '/home/santoshpc/Android/Sdk/platform-tools/adb -P 5037 -s 0123456789ABCDEF forward --remove tcp:8200' exited with code 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]

我添加了以下 DesiredCapabilities

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

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

【问题讨论】:

    标签: automation appium appium-android


    【解决方案1】:

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

    可能的解决方案:

    1. 可能是权限问题。 appium 在没有 root 的情况下执行 特权,因此它无法对 apk 进行更改。执行appium 具有 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

    希望它会有所帮助。

    【讨论】:

      【解决方案2】:

      对我来说,有效的方法是使用 Appium 桌面配置并将 JAVA_HOME

      /usr/java/bin
      

      /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
      

      【讨论】:

        猜你喜欢
        • 2018-11-15
        • 2017-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-18
        • 2015-01-02
        • 2020-12-01
        • 1970-01-01
        相关资源
        最近更新 更多