невозможно запустить приложение из приложения Appium Desktop.Произошла ошибка во время выполнения apksigner - PullRequest
1 голос
/ 11 марта 2019

При обработке команды произошла неизвестная ошибка на стороне сервера.Исходная ошибка: не удалось подписать сертификатом по умолчанию.Исходное сообщение об ошибке ENOTDIR

Я пытаюсь запустить приложение для Android с помощью приложения Appium Desktop.Сервер Appium показывает следующий журнал ошибок:

Запуск '/home/santoshpc/Android/Sdk/build-tools/28.0.3/apksigner' с аргументами '["знак", "- ключ" "/ TMP / .mount_AppiumGDrtg1 / ресурсы / приложение / node_modules / appium / node_modules / appium-ADB / ключи / testkey.pk8", "- сертификат"," / TMP / .mount_AppiumGDrtg1 / ресурсы / приложение / 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_AppiumGDgtресурсы / приложение / node_modules / appium / node_modules / appium-uiautomator2-сервер / APK-/ appium-uiautomator2-сервер-debug-androidTest.apk 'завершен с кодом 1 [ADB] apksigner stderr: Исключение в потоке "main" java.nio.file.FileSystemException: /tmp/.mount_AppiumGDrtg1/resources/app/node_modules/appium/node_modules/appium-uiamatto-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] по адресу 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] at 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/noium-mouiautomator2-server / apks / appium-uiautomator2-server-debug-androidTest.apk 'завершен с кодом 1;StdErr: Исключение в потоке "main"apk: Файловая система только для чтения [ADB] в sun.nio.fs.UnixException.translateToIOException (UnixException.java:91) [ADB] в sun.nio.fs.UnixException.rethrowAsIOException (UnixException.java:102) [ADB]at 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) [ADB]at 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 / платформа-инструменты / adb -P 5037 -s 0123456789ABCDEF shell am stop-stop eu.niko.smart.naswi.main ' [Logcat] Остановка захвата logcat [ADB] Удаление переадресованного сокета порта соединение: 8200 [ADB] работает '/ home / santoshpc / Android / Sdk / платформа-инструменты / adb -P 5037 -s 0123456789ABCDEF вперед - удалить tcp: 8200 '[UiAutomator2] Невозможно удалить порт вперед 'Ошибка выполнения adbExec. Исходная ошибка: «Команда '/ home / santoshpc / Android / Sdk / платформа-инструменты / adb -P 5037 -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] <- POST / wd / hub / session 500 9847 мс - 206 [HTTP] [HTTP] -> DELETE / wd / hub / session [HTTP] {} [HTTP] Маршрут не найден. настройка тип содержимого «text / plain» [HTTP] <- DELETE / wd / hub / session 404 5 мс - 57 </p>

Я добавил следующие DesiredCapabilities

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

Appium Desktop версия: 1.11.1 ОС - Ubuntu

1 Ответ

0 голосов
/ 11 марта 2019

Это ошибка в файле "apk-signature.js", расположенном в папке /usr/lib/node_modules/appium/node_modules/appium-adb/build/lib/tools.

Возможные решения:

  1. Это может быть проблема с разрешением. Аппиум выполнен без рута привилегии, поэтому он не может вносить изменения в apk. Выполнение аппиума с привилегиями root / admin решает проблему. (работает только если apk-signing.js не содержит ошибок)
  2. Работает нормально для определенных версий приложения, так как у них нет без ошибок 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

Надеюсь, это поможет.

...