Отладки приложений для Android в течение нескольких секунд затем просто останавливаются
Я пытаюсь создать новую среду разработки приложений для Android дома, и я столкнулся с проблемой, которая является showstopper.
Во-первых, вот моя среда:
- Windows 10
- Visual Studio Community 2015 с установленной платформой Xamarin
- Контрольное устройство: G Pad 7.0 LTE
- Версия Android 5.0.2
Я следую этому руководству: учебник MSDN
Когда я иду отлаживать свое тестовое приложение, вот что происходит.
- Выберите debug из Visual Studio с моим планшетом в качестве целевого
- VS развертывается на планшет
- Приложение запускается на планшете
- Запуск приложения и отладки выполняется примерно 5-10 секунд.
- Завершение сеанса отладки и закрытие приложения
Ошибки не отображаются в Visual Studio, и когда я включаю Android, регистрирующую это такое огромное переполнение информации, что я действительно не знаю, с чего начать поиск проблемы.
Также обратите внимание, что когда я впервые установил приложение, в соответствии с учебным пособием отладка на планшете работала нормально. Первоначальная сборка - это просто шаблон с несколькими основными элементами управления.
В промежутке между тем, когда он прекратил работу, я также добавил и успешно протестировал проект Windows Phone на устройстве Windows Phone.
Как только я попал в раздел, в котором я изменял проект, это когда проблема началась. Я подумал, что, возможно, изменение кода, которое я вызывало, вызвало эту проблему, поэтому я попробовал еще одно пустое приложение, и теперь это сообщение удалено.
Когда я разворачиваю учебное приложение к эмулятору, он сразу же срабатывает, но когда я развертываю пустое приложение, он не падает.
Я также попробовал восстановить планшет до заводских настроек и снова проверить. Тот же сценарий: пустое приложение и учебное приложение запускаются в течение нескольких секунд, отладка останавливается, приложение закрывается.
Любая подсказка относительно того, на какую проблему я смотрю?
Ответы
Ответ 1
Решение
- Очистите ваш проект (щелкните правой кнопкой мыши на Project и выберите clean)
- Перейдите в вашу папку сборки. Вероятно, в корневой папке вашего проекта Android с именем "obj". Удалите любую сборку, которая у вас была, когда вы столкнулись с этим поведением (отладка или выпуск).
Путь к каталогу
./AndroidProject/obj/Debug
./AndroidProject/obj/Release
- Перезапустите Visual Studio
- Создайте и запустите снова, и все должно работать нормально, так как хеши md5 теперь снова совпадают.
Я также ранее удалил приложение с устройства и перезапустил его, я не знаю, требуется ли это больше, потому что приложение теперь "переустанавливается" новыми версиями Xamarin.
adb uninstall com.your.domain
История и справочная информация
Была такая же проблема с устройством под управлением Android 5.0.
По сути, приложение просто останавливалось без каких-либо заметок. Когда я теперь перезагружал телефон, журнал был расширен (один раз) следующей строкой:
Device could not find component named: *com.your.domain*/{*md5hash*}.*{Activity}
Оказывается, что в Andrpod 5.0 реализован механизм хеширования:
С выпуском 5.0 имена пакетов по умолчанию для Android Callable Wrappers будут основаны на MD5SUM полного имени сборки экспортируемого типа. Это позволяет предоставлять одно и то же полное имя из двух разных сборок и не получать ошибку упаковки. См. Это для получения дополнительной информации Xamarin.Android 5.1
Таким образом, если время от времени время от времени меняется хэш md5, простой очистки вашего проекта недостаточно.
Ответ 2
Я столкнулся с этой проблемой и применил одно и то же решение, описанное выше, которое, как представляется, устраняет эту конкретную проблему.
Возможно, связанное исправление, но, безусловно, стоит отметить
После выпуска этого приложения для Android и последующего выпуска обновлений для приложения мы получили отзывы от пользователей о том, что их ярлык на экране Android на главной странице исчезает после каждого обновления приложения. Это нехорошо по очевидным причинам, но исправление для него было очень простым, как указано здесь:
dream-team-mobile-blog - Android-приложение удаляет ярлык при обновлении решения Xamarin
В основном действии задайте атрибут Name
<your package>.<your main activity>
как:
com.mycompany.myapp.MainActivity
Для моего решения я решил сделать это в коде следующим образом:
[Activity(Name = Constants.PackageName + "." + nameof(MainActivity),
Label = Constants.AppIconTitle, Icon = "@drawable/icon",
Theme = "@style/splashscreen", MainLauncher = true,
LaunchMode = LaunchMode.SingleInstance,
ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
//Side Note: I change my PackageName between Prod and SQA builds, so using
//a constant as seen above makes that change less risky to miss maintaining.
//Also, using nameof() keeps things tight and a sure match.
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
Я упоминаю об этом здесь, в этом посте, потому что, имея это исправление, может иметь:
- определенно предотвратили потерю ярлыка приложения и
- возможно, помешало вопросу, обсуждаемому в этом сообщении
поскольку префикс хеша MD5 из основного действия, похоже, больше не генерируется.
Эта настройка может исправить две ошибки с одним исправлением. Если этого не произойдет, внедрение фиксированного основного имени активности, безусловно, поможет вашим пользователям сохранить ярлык вашего приложения при выпуске обновлений!
Ответ 3
Перейдите в свой AndroidManifest.xml и измените имя пакета.
Ответ 4
Что исправило это для меня в Visual Studio 2017 собирается:
Tools → Options → Xamarin → Android Settings
и снимите флажок:
Preserve Application data cache on device between deploys