Обезьяна Android: "Действия не найдены, обезьяна прервана"

Моя посылка называется com.mywebsite.banana.

  • Я хочу получить семя, поэтому тест повторяется: -s 13
  • Я хочу иметь довольно низкий уровень многословия: -v
  • Я хочу выполнить 500 псевдослучайных команд: 500

Я звоню обезьяне так:

adb shell monkey -s 13 -p com.mywebsite.banana -v 500

Мой вывод:

:Monkey: seed=13 count=500
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
No activities found to run, monkey aborted

Мой AndroidManifest.xml содержит это:

<categoy android:name="android.intent.category.LAUNCHER"/>

Что я делаю неправильно? Есть ли что-то, что мне нужно добавить в мое приложение перед запуском обезьяны? Основное действие расположено в com.mywebsite.banana - это правильный путь, по которому нужно пройти, или он должен пройти весь путь до действия, подобного этому: com.mywebsite.banana.activityName?

Из того, что я прочитал, кажется, что я делаю это правильно:


редактировать

Попытка 1:

adb shell monkey -p com.mywebsite.banana -c intent.CATEGORY_LAUNCHER -v 500

Результат 1:

:Monkey: seed=13 count=500
:AllowPackage: com.mywebsite.banana
:IncludeCategory: intent.CATEGORY_LAUNCHER  
// Warning: no activities found for category intent.CATEGORY_LAUNCHER
** No activities found to run, monkey aborted

Попытка 2:

adb shell monkey -p com.mywebsite.banana -c android.intent.category.MONKEY -v 500

Результат 2:

:Monkey: seed=13 count=500
:AllowPackage: com.mywebsite.banana
:IncludeCategory: android.intent.category.MONKEY 
No activities found to run, monkey aborted

Попытка 3:

adb shell monkey -p com.mywebsite.banana -c android.intent.category.LAUNCHER -c android.intent.category.MONKEY -v 500

Результат 3:

:Monkey: seed=13 count=500
:AllowPackage: com.mywebsite.banana
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY 
No activities found to run, monkey aborted

Некоторые из манифеста:

<activity
        android:name="com.mywebsite.banana.FRCActivity"
        android:launchMode="singleTask"
        android:configChanges="orientation|screenSize"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="none" />
            <category android:name="android.intent.category.MONKEY"/>
        </intent-filter>
</activity>

Также пробовал эту версию манифеста, без изменений:

    <activity
        android:name="com.mywebsite.banana.FRCActivity"
        android:launchMode="singleTask"
        android:configChanges="orientation|screenSize"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <category android:name="android.intent.category.MONKEY"/>
        </intent-filter>
</activity>

3 ответа

Решение

ХОРОШО! Я понял это. Показанная ошибка действительно верна:

** No activities found to run, monkey aborted

Это означает, что имя пакета, которое я использовал, было неверным. Я смотрел, смотрел и смотрел, и, наконец, мой коллега упомянул, что наша система сборки изменяет имя пакета, прежде чем отправить его на устройство.

Итак, если вы получаете эту ошибку, убедитесь, что вы действительно знаете, как называется ваш пакет.

Итак, последняя команда, которая сработала, была такой:

$ adb shell monkey -p com.mywebsite.banana.newname -v 5

Кстати, правильный вывод этой команды обезьяны выглядит так:

:Monkey: seed=1418671144561 count=5
:AllowPackage: com.mywebsite.banana.newname
:IncludeCategory: android.intent.category.LAUNCHER
:IncludeCategory: android.intent.category.MONKEY
// Event percentages:
//   0: 15.0%
//   1: 10.0%
//   2: 2.0%
//   3: 15.0%
//   4: -0.0%
//   5: 25.0%
//   6: 15.0%
//   7: 2.0%
//   8: 2.0%
//   9: 1.0%
//   10: 13.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.mywebsite.banana.newname/com.mywebsite.banana.MyActivity;end
// Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.mywebsite.banana.newname/com.mywebsite.banana.MyActivity } in package com.mywebsite.banana.newname
Events injected: 5
:Sending rotation degree=0, persist=false
:Dropped: keys=0 pointers=0 trackballs=0 flips=0 rotations=0
## Network stats: elapsed time=175ms (0ms mobile, 0ms wifi, 175ms not connected)
// Monkey finished

Последнее замечание: мне НЕ нужно было добавлять android.intent.category.MONKEY в мой файл AndroidManifest.xml!

В вашем манифесте у вас есть "categoy", но вам нужна "категория"

Чтобы добавить к ответу @ncrypticus, я думаю, что самый простой способ узнать окончательное имя пакета - открыть приложение в эмуляторе, а затем в Android Studio перейти в Инструменты -> Инспектор макетов. Это покажет вам имя пакета этого приложения.

Для меня, чтобы найти имя пакета (который также был изменен), я пытаюсь это:

$ adb shell monkey --ignore-crashes -c android.intent.category.LAUNCHER -v 10000 > text_logs.txt

Было зарегистрировано много намерений, и все они указывали на имена пакетов между ними, также были мои.

Другие вопросы по тегам