Отладчик отключается в Android Studio при отладке виджета главного экрана

Я пытаюсь отлаживать приложение виджета для домашнего экрана Android, которое я создал. При нажатии кнопки на виджете начинается отладчик, а затем он просто отключается от виртуальной машины. Нет причин. Я использую Windows 10.

Вот что говорят журналы:

D/Atlas: Validating map... D/libEGL: loaded /system/lib/egl/libEGL_emulation.so D/libEGL: loaded /system/lib/egl/libGLESv1_CM_emulation.so D/libEGL: loaded /system/lib/egl/libGLESv2_emulation.so D/ ] HostConnection::get() New Host Connection established 0xef0394f0, tid 3709 I/OpenGLRenderer: Initialized EGL, version 1.4 D/OpenGLRenderer: Enabling debug mode 0 W/EGL_emulation: eglSurfaceAttrib not implemented W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xef1485e0, error=EGL_SUCCESS D/roboguice.RoboGuice: Using annotation database(s). D/roboguice.RoboGuice: Using annotation database(s) : [, roboguice] D/roboguice.RoboGuice: Time spent loading annotation databases : 21 W/art: Verification of com.gdbd.geedeebeedee.model.GdbdWidgetRecord com.gdbd.geedeebeedee.model.GdbdWidgetRecordsRealmImpl.create(java.util.Date) took 127.878ms W/art: Verification of com.gdbd.geedeebeedee.model.GdbdWidgetRecord com.gdbd.geedeebeedee.model.GdbdWidgetRecordsRealmImpl.getTodaysRecord() took 111.586ms D/GdbdWidgetBase: Received intent: android.appwidget.action.APPWIDGET_ENABLED D/GdbdWidgetBase: Updating widget index: 0 with id: 23 D/GdbdWidgetBase: Received intent: android.appwidget.action.APPWIDGET_UPDATE D/GdbdWidgetBase: Received intent: android.appwidget.action.APPWIDGET_UPDATE_OPTIONS D/GdbdWidgetBase: Received intent: change_day_staus I/art: Thread[5,tid=3470,WaitingInMainSignalCatcherLoop,Thread*=0xf3c30c00, peer=0x22c0a0a0,"Signal Catcher"]: reacting to signal 3 I/art: Wrote stack traces to '/data/anr/traces.txt' Disconnected from the target VM, address: 'localhost:8619', transport: 'socket' 

Я также вытащил traces.txt, но не нашел явного сообщения об ошибке. Может быть, я не знаю, что искать. При первом размещении виджета на экране отладчик не отключается. Это происходит как с официальным эмулятором, так и с GenyMotion. Эмулятор – это Google Nexus 5 5.1.0 API 22.

Введите описание изображения здесь

Это настройка сборки Gradle:

 android { compileSdkVersion 25 buildToolsVersion "25.0.0" defaultConfig { applicationId "com.gdbd.geedeebeedee" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile group: 'com.google.code.gson', name: 'gson', version: '2.3.1' compile 'com.android.support:appcompat-v7:25.0.0' compile 'org.roboguice:roboguice:3.+' provided 'org.roboguice:roboblender:3.+' testCompile 'junit:junit:4.12' } 

Кто-нибудь знает, что происходит и почему я не могу отлаживать? Благодарю.

Изменить 1:

Видимо, процесс умирает.
Введите описание изображения здесь

 D/OpenGLRenderer: Enabling debug mode 0 W/EGL_emulation: eglSurfaceAttrib not implemented W/OpenGLRenderer: Failed to set EGL_SWAP_BEHAVIOR on surface 0xf3ff6900, error=EGL_SUCCESS D/roboguice.RoboGuice: Using annotation database(s). D/roboguice.RoboGuice: Using annotation database(s) : [, roboguice] D/roboguice.RoboGuice: Time spent loading annotation databases : 19 80: 80 D/ ] Socket deconnection D/GdbdWidgetBase: Received intent: change_day_staus 80: 80 D/ ] Socket deconnection 80: 80 D/ ] Socket deconnection 80: 80 D/ ] Socket deconnection 80: 80 D/ ] Socket deconnection I/art: Thread[5,tid=13474,WaitingInMainSignalCatcherLoop,Thread*=0xf3c30c00, peer=0x12c0a0a0,"Signal Catcher"]: reacting to signal 3 I/art: Wrote stack traces to '/data/anr/traces.txt' 

Измените 2 добавленных файла манифеста Android

`

 <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <meta-data android:name="roboguice.modules" android:value="com.gdbd.geedeebeedee.model.ModelModule" /> <activity android:name=".activity.StatsActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".widget.GdbdWidgetBase" > <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> <intent-filter> <action android:name="change_day_staus" /> </intent-filter> <meta-data android:name="android.appwidget.provider" android:resource="@xml/gdbd_widget_info" /> </receiver> </application> 

`

Измените 3 файла traces.txt https://ufile.io/c41eb

Изменить 4 GdbdWidgetBase

 @Inject GdbdWidgetRecords gdbdWidgetRecords; public void onHandleUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // Perform this loop procedure for each App Widget that belongs to this provider for (int widgetIndex = 0; widgetIndex < appWidgetIds.length; widgetIndex++) { int widgetId = appWidgetIds[widgetIndex]; Log.d(TAG, "Updating widget index: " + widgetIndex + " with id: " + widgetId); GdbdWidgetRecord todaysRecord = gdbdWidgetRecords.getTodaysRecord(); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.gdbd_widget); if(todaysRecord.getCurrentStatus() == DayStatus.GOODDAY) views.setImageViewResource(R.id.btnClicker, R.drawable.ic_gd); else if(todaysRecord.getCurrentStatus() == DayStatus.BADDAY) views.setImageViewResource(R.id.btnClicker, R.drawable.ic_bd); else if(todaysRecord.getCurrentStatus() == DayStatus.NOTSET) views.setImageViewResource(R.id.btnClicker, R.drawable.ic_undecided); Intent intent = new Intent(context, GdbdWidgetBase.class); intent.setAction(CHANGE_DAY_STATUS); intent.putExtra(WIDGET_ID_EXTRA, widgetId); PendingIntent changeStatusIntent = PendingIntent.getBroadcast(context, widgetId, intent, PendingIntent.FLAG_CANCEL_CURRENT); views.setOnClickPendingIntent(R.id.btnClicker, changeStatusIntent); scheduleUpdateAtMidnight(context, widgetId); appWidgetManager.updateAppWidget(widgetId, views); } } @Override public void onHandleReceived(Context context, Intent intent) { Log.d(TAG, "Received intent: " + intent.getAction()); //Log.d(TAG,"getDebugUnregister: " + (getDebugUnregister()?"true":"false")); if (CHANGE_DAY_STATUS.equals(intent.getAction())) { int appWidgetId = intent.getIntExtra(WIDGET_ID_EXTRA, -1); if (appWidgetId >= 0) { GdbdWidgetRecord todaysRecord = gdbdWidgetRecords.getTodaysRecord(); Log.d(TAG, "today record: " + todaysRecord.toString()); DayStatus newDayStatus = DayStatus.NOTSET; if(todaysRecord.getCurrentStatus() == DayStatus.NOTSET) newDayStatus = DayStatus.GOODDAY; else if(todaysRecord.getCurrentStatus() == DayStatus.GOODDAY) newDayStatus = DayStatus.BADDAY; else if(todaysRecord.getCurrentStatus() == DayStatus.GOODDAY) newDayStatus = DayStatus.NOTSET; Log.d(TAG, "newDayStatus: " + newDayStatus); gdbdWidgetRecords.changeTodaysStatus(newDayStatus); onHandleUpdate(context, AppWidgetManager.getInstance(context), new int[]{appWidgetId}); } } } private void scheduleUpdateAtMidnight(Context context, int widgetId) { Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.set(Calendar.SECOND, 1); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.add(Calendar.DAY_OF_YEAR, 1); Intent updateAtMidnightIntent = new Intent(context, GdbdWidgetBase.class); updateAtMidnightIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); updateAtMidnightIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[]{widgetId}); PendingIntent broadcastIntent = PendingIntent.getBroadcast(context, widgetId + 1, updateAtMidnightIntent, PendingIntent.FLAG_CANCEL_CURRENT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), broadcastIntent); } else { alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), broadcastIntent); } } 

Изменить 5 Точка останова всегда находится в методе onReceive () моего AppWidget. Для других целей, таких как android.appwidget.action.APPWIDGET_ENABLED, требуется больше, прежде чем отладчик остановится, но мое приложение все еще умирает

 01-09 22:28:20.861 3881-3881/com.gdbd.geedeebeedee D/GdbdWidget: Received intent: android.appwidget.action.APPWIDGET_ENABLED 01-09 22:29:20.854 3881-3886/com.gdbd.geedeebeedee I/art: Thread[2,tid=3886,WaitingInMainSignalCatcherLoop,Thread*=0x7fbcebe06000,peer=0x2ac070a0,"Signal Catcher"]: reacting to signal 3 01-09 22:29:21.013 3881-3886/com.gdbd.geedeebeedee I/art: Wrote stack traces to '/data/anr/traces.txt' 

Если для моего собственного намерения, которое отправляется при нажатии кнопки в виджетах, это занимает 10 секунд.

 01-09 22:34:25.353 4314-4314/com.gdbd.geedeebeedee D/GdbdWidget: Received intent: change_day_staus 01-09 22:34:35.362 4314-4319/com.gdbd.geedeebeedee I/art: Thread[2,tid=4319,WaitingInMainSignalCatcherLoop,Thread*=0x7fbcebe06000,peer=0x2ac070a0,"Signal Catcher"]: reacting to signal 3 01-09 22:34:35.549 4314-4319/com.gdbd.geedeebeedee I/art: Wrote stack traces to '/data/anr/traces.txt' 

Solutions Collecting From Web of "Отладчик отключается в Android Studio при отладке виджета главного экрана"

Вы пытались отключить мгновенный запуск в Android Studio. Возможно, это противоречиво во время отладки.

Я перешел к настройкам Эмуляции устройства -> Параметры разработчика и включил «Показать все ANR», и теперь появляется предупреждение «Ваше приложение не отвечает», и я могу нажать «WAIT» и, похоже, работает.

Это не решение, чтобы остановить отсоединение. Но вы можете снова подключить отладчик сразу после этого. Вы можете прикрепить отладчик к запущенным процессам с помощью кнопки на панели инструментов:

Введите описание изображения здесь

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

Используйте этот плагин студии Android. АБР WIFI

Подключите оба устройства. 1) ПК / ноутбук. 2) Мобильный телефон в той же сети и сделайте это. Инструменты -> Android -> ADB WIFI -> ADB USB to WIFI.

благодаря

Я считаю, что это будет полезной ссылкой.

http://tech.shantanugoel.com/2010/06/14/how-to-debug-android-widgets.html

Может быть, это может вам помочь. Пожалуйста, как только вы проверите приведенное ниже предложение

Вы выбираете свое устройство, а затем выбираете имя своего пакета в правой части, которое вы можете видеть рядом с регулярным выражением, выберите из раскрывающегося списка только выбранное приложение Введите описание изображения здесь