У меня возникла проблема с использованием Jenkins для сборки и установки моего тестового проекта Android (страница с описанием текущей ошибки).
Я создал простой проект Android и соответствующий тестовый проект в Eclipse.Я выполнил следующее:
android update project -p App1
android update test-project -m ../App1 -p App1Test
Я могу запустить тестовый проект в Eclipse, собрать проекты, установить их на AVD (уже запущен) и выполнить правильно.
Также я могувыполните успешно из командной строки:
D:\> adb uninstall com.ss
(удалите App1 из AVD, если он уже установлен)
D:\workspace\App1> ant clean debug
затем
D:\workspace\App1Test> ant all clean debug install test
ОпятьApp1-test-debug.apk и App1-debug.apk создаются и устанавливаются на AVD, выполняются тесты.
Проблема заключается в том, что я пытаюсь сделать это с помощью Jenkins.
Я создаю 2 задания:
- App1 - цели муравья:
clean debug
- App1Test - цели муравья:
all clean debug install test
App1Test настроен для запускапосле успешной сборки App1.
Задание App1 выполняется правильно, создается App1-debug.apk.
App1Test отображается для правильного запуска до задачи установки.App1-debug.apk и App1Test-debug.apk созданы, но в задаче INSTALL
есть ошибка:
install: [echo] Установка D: \ Jenkins \ workspace \ App1Test \bin \ App1Test-debug.apk на эмуляторе или устройстве по умолчанию ... [exec] pkg: /data/local/tmp/App1Test-debug.apk [exec] Сбой [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] [exec] 40 КБ / с (14127 байт в0.343s)
-set-mode-check:
-set-debug-files:
install: [echo] Установка D: \ Jenkins \ workspace \ App1 \bin \ App1-debug.apk на эмуляторе или устройстве по умолчанию ... [exec] pkg: /data/local/tmp/App1-debug.apk [exec] Успех [exec] 433 КБ / с (13883 байта за 0,031 с)
installd:
-test-project-check:
test: [echo] Выполнение тестов ... [exec] INSTRUMENTATION_STATUS: id = ActivityManagerService [exec] INSTRUMENTATION_STATUS:Ошибка = отказ в разрешении: запуск инструментария ComponentInfo {com.ss.test / android.test.InstrumentationTestRunner} из pid = 2520, uid = 2520 не разрешен, поскольку package com.ss.test не имеет подписи, соответствующей цели com.ss [exec] INSTRUMENTATION_STATUS_CODE: -1 [exec] java.lang.SecurityException: Отказ в разрешении: запуск инструментария ComponentInfo {com.ss.test / android.test.InstrumentationTestRunner} из pid = 2520, uid = 2520 не допускается, поскольку пакет com.ss.test не имеет подписи, соответствующей цели com.ss
Я понимаю, что и App1, и App1Test должны быть подписаныс тем же сертификатом, который в этом случае должен быть таким же сертификатом отладки.Почему разные сертификаты будут использоваться для каждого проекта?
Полный журнал показывает, что оба apks подписаны сертификатом отладки:
-package:
[apkbuilder] Current build type is different than previous build: forced apkbuilder run.
[apkbuilder] Creating App1-debug-unaligned.apk and signing it with a debug key...
и:
-package:
[apkbuilder] Current build type is different than previous build: forced apkbuilder run.
[apkbuilder] Creating App1Test-debug-unaligned.apk and signing it with a debug key...
Я следовал Jenkins: Сборка и тестированиеAndroid-приложение , за одним исключением.Я не смог бы создать тестовый проект, если использовал свойство
tested.project.dir=
в разделе Advanced Ant.Я просто установил правильное значение в файле ant.properties
проектов и передал SVN:
tested.project.dir=../App1
(уверен, что это не вызывает проблему, но лучше всего ее документировать).
Я действительно рву свои волосы над этим, если кто-то может помочь мне восстановить мое здравомыслие, на вашем пути будет БОЛЬШАЯ ЛЮБОВЬ .
Использование: android-sdk-16
SVN
муравей 1,8
Eclipse Indigo