В настоящее время мы работаем над набором инструментальных тестов, который выполняется на нашем сервере сборки, но хотя тесты проходят на компьютере разработчика с использованием обычного эмулятора Android, сборка на сервере сборки завершается неудачно, поскольку там мы запускаем только безголовый эмулятор сфлаг -no-window
.
Ошибка возникает при попытке вызвать метод InstrumentationTestCase.sendKeys()
, чтобы программно открыть меню параметров.Ошибка:
В доступе отказано: ввод ключевого события из pid 646 uid 10026 в окно Window {43d55100 paused = false}, принадлежащее uid 1000
Затем мы выясниличто есть разрешение INJECT_EVENTS
, но установка его в манифесте не имела никакого эффекта.Фактически в журнале мы увидели этот вывод:
Не предоставление разрешения android.permission.INJECT_EVENTS для пакета com.qype.radar (protectionLevel = 2 flags = 0x6644)
Значит ли это, что это разрешение бесполезно?
Мы также пытались разрешить приложению инструментального тестирования и тестируемому приложению использовать один и тот же идентификатор пользователя Linux с помощью android:sharedUserId
и работать в одном и том же процессе (android:process
-- мы не были уверены, было ли это уже так), но все равно не повезло.
Означает ли это, что в настоящее время невозможно запускать контрольно-измерительные приборы, содержащие ключевые события, в эмуляторе без монитора, или мы что-то упустили?