Force Close всегда происходит на устройстве Android (даже с очень простым кодом hello world)

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

Тем не менее, после создания базовых обучающих сценариев для реального телефона (желание hd и невероятное s) они мгновенно выводят сообщение о принудительном закрытии.

[РЕДАКТИРОВАТЬ] Окей. Это (на мой взгляд) чрезвычайно простая процедура, основанная на исходном файле monoDevelopProject.

Для ясности я не использовал разделы пространства имен, все они оставлены по умолчанию.

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);

    // Set our view from the "main" layout resource
    SetContentView(Resource.Layout.Main);

    // Get our button from the layout resource,
    // and attach an event to it
    Button button = FindViewById<Button>(Resource.Id.MyButton);
    // on button click change button text
    button.Click += delegate { button.Text = string.Format("You clicked the button!") };
}

Итак, это компилируется, строится и работает без ошибок на стандартном эмуляторе SDK 2.3. Но не на реальном устройстве.

Я не могу получить какую-либо отладочную информацию с устройства (я следовал инструкциям, чтобы разрешить отладку Wi-Fi). С точкой останова, включенной в строку 3 выше (base.onCreate(bundle);), похоже, что он даже не вступает в этот метод и просто останавливает отладку после принудительного закрытия.

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

Я только что попробовал несколько примеров проектов из xamarin gitHub, начиная от простых макетов и заканчивая полными примерами 3D oGL, и все они возвращают сообщения о принудительном закрытии при запуске на моем устройстве. Я посмотрю некоторые настройки компилятора и сделаю перезагрузку этой системы.

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


person McSteve    schedule 20.11.2011    source источник
comment
Можете ли вы опубликовать журналы вывода отладки для сбоя?   -  person Cameron Hotchkies    schedule 20.11.2011
comment
Трудно отлаживать то, что вы не видите :) Я предлагаю редактировать это, чтобы включить как можно более простой воспроизводящий механизм. build и как можно более подробные сообщения об ошибках. (Уделяя особое внимание предупреждениям компилятора.)   -  person sarnold    schedule 20.11.2011
comment
Не могли бы вы попробовать удалить точки останова? Это диалоговое окно принудительного закрытия отображается, когда Android обнаруживает, что приложение не отвечает, что происходит, когда отладчик ожидает точки останова. Возможно, MonoDevelop не показывает точку останова (или неправильный файл), поэтому вы можете попробовать без точек останова или использовать команду "Выполнить", чтобы продолжить выполнение и посмотреть, решает ли проблему.   -  person poupou    schedule 20.11.2011
comment
Я вижу, однако проблема остается без точек останова, физически я вижу заголовок приложения, отображаемый за секунду до принудительного закрытия, поэтому кажется, что оно настраивается и начинает работать, но падает, когда или непосредственно перед входом в класс Activity1.   -  person McSteve    schedule 20.11.2011
comment
Извините, я не был ясен. Это не только точки останова, но и общий перерыв — т. е. когда отладчик останавливает (прерывает) выполнение, тогда Android подозревает, что приложение зависло и может показать вам этот диалог принудительного закрытия. Если вы можете шагнуть/возобновить (запустить) из MonoDevelop, то он должен (из памяти) автоматически закрываться (т.е. вам не нужно отвечать на диалог).   -  person poupou    schedule 20.11.2011
comment
Я понимаю. Есть ли какая-то причина, по которой, когда я запускаю отладку, не появляются кнопки [воспроизведение, остановка, пауза]? Боюсь, я делаю совершенно неправильную вещь, когда нажимаю f5?   -  person McSteve    schedule 20.11.2011


Ответы (3)


В дополнение к ответу jpobst я бы порекомендовал вам получить средство просмотра журнала для вашего устройства и смотреть его во время работы вашего приложения. Я не имею никакого отношения к этим ребятам, но я снова и снова использую их приложение. https://market.android.com/details?id=com.nolanlawson.logcat&hl=en

person Terrance    schedule 20.11.2011
comment
спасибо, кажется, я был прав, думая, что он не был установлен правильно. используя catLog, я обнаружил ошибку ОШИБКА: эта версия MonoDroid будет работать только в эмуляторе Android. Я поговорю с техподдержкой и попрошу их проверить установку. - person McSteve; 21.11.2011
comment
Когда вы сомневаетесь, catlog, кажется, выручает. Нп. - person Terrance; 21.11.2011

Попробуйте запустить его без отладки (Ctrl-F5), дождитесь сбоя, а затем проверьте журнал отладки на наличие исключения, вызвавшего сбой:

http://docs.xamarin.com/android/advanced_topics/android_debug_log

person jpobst    schedule 20.11.2011

ОП говорит, что они решили проблему:

MonoDroid не был правильно установлен в лабораториях, хотя вся информация, указывающая на регистрацию/аутентификацию, указывала на обратное.

person Community    schedule 24.09.2013