Проблема несовпадения сертификатов при установке Android Test App на AVD с использованием Jenkins - PullRequest
2 голосов
/ 07 февраля 2012

У меня возникла проблема с использованием 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

1 Ответ

1 голос
/ 07 февраля 2012

решаемая ....

На устройстве должен быть установлен тестовый apk с использованием другого хранилища ключей (не знаю как).

Итак, выполнив:

adb uninstall com.ss.test

«Новый» тестовый apk устанавливается нормально.

...