Остановка приложения для Android из консоли
можно ли остановить приложение для Android с консоли? Что-то вроде:
adb stop com.my.app.package
это бы так сильно ускорило наш процесс тестирования. Прямо сейчас мы удаляем / устанавливаем приложение каждый раз, чтобы убедиться, что ручные тестовые случаи начинаются с чистого состояния.
10 ответов:
Edit: спустя долгое время после того, как я написал этот пост, и он был принят в качестве ответа, был реализовала командой Android, как уже упоминалось в ответ.
кроме того: вместо того, чтобы просто остановить приложение, так как вы упоминаете, что хотите "чистый лист" для каждого тестового запуска, вы можете использовать
adb shell pm clear com.my.app.package, что остановит процесс приложения и очистить все сохраненные данные приложение.
если вы на Linux:
adb shell ps | grep com.myapp | awk '{print }' | xargs adb shell killэто будет работать только для устройств / эмуляторов, где у вас есть root сразу после запуска оболочки. Это, вероятно, можно немного уточнить, чтобы позвонить
suзаранее.в противном случае, вы можете сделать (вручную, или я полагаю, сценарий):
pc $ adb -d shellandroid $ suandroid # psandroid # kill <process id from ps output>
чистый способ остановки приложения является:
adb shell am force-stop com.my.app.packageтаким образом, вам не нужно выяснять идентификатор процесса.
во-первых, поместите приложение в фоновом режиме (нажмите кнопку home устройства)
Then....in терминал....
adb shell am kill com.your.package
вы можете использовать следующее из консоли устройства:
pm disable com.my.app.packageчто убьет его. Тогда используйтеpm enable com.my.app.package, Так что вы можете запустить его снова.
Если у вас есть доступ к пакету приложений, то вы можете установить с опцией-r, и это убьет процесс, если он в настоящее время работает как побочный эффект. Вот так:
adb -d install -r MyApp.apk ; adb -d shell am start -a android.intent.action.MAIN -n com.MyCompany.MyApp/.MyActivityпараметр-r сохраняет данные, связанные в данный момент с приложением. Однако, если вы хотите чистый лист, как вы упоминаете, вы не можете использовать эту опцию.
Если вы нацелены на некорневое устройство и / или имеете службы в вашем APK, которые вы не хотите останавливать, другие решения не будут работать.
чтобы решить эту проблему, я прибегнул к приемнику широковещательных сообщений, который я добавил к своей деятельности, чтобы остановить его.
public class TestActivity extends Activity { private static final String STOP_COMMAND = "com.example.TestActivity.STOP"; private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { TestActivity.this.finish(); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //other stuff... registerReceiver(broadcastReceiver, new IntentFilter(STOP_COMMAND)); } }таким образом, вы можете выполнить эту команду adb, чтобы остановить свою деятельность:
adb shell am broadcast -a com.example.TestActivity.STOP
в eclipse перейдите в перспективу DDMS и на вкладке Устройства щелкните процесс, который вы хотите убить, под устройством, на котором вы хотите его убить. Затем вам просто нужно нажать кнопку остановки, и она должна убить процесс.
Я не уверен, как вы это сделаете из командной строки, но должен быть способ. Может быть, вы делаете это через оболочку adb...
adb shell killall -9 com.your.package.nameсогласно MAC " обязательный контроль доступа" у вас, вероятно, есть разрешение на убийство процесса который не запускается с помощью root
удачи!
Comments