Сайт для программистов

вторник, 4 октября 2016 г.

Работает на эмуляторе, не работает на устройстве

На прошлой неделе пришло сразу два письма с просьбой помочь с проблемой - любая программа запускалась на эмуляторе, но отказывалась запускаться на реальном устройстве.
Вообще я стараюсь не отвечать на такие письма. Причины неработоспособности приложения могут быть самыми разными, универсального ответа не существует, а я не экстрасенс.
Но тут был очень странный случай. Строго говоря, причину ошибки можно узнать, если запустить приложение из студии и почитать сообщения об ошибках в Android Monitor.
Но у одного из пользователя была и другая проблема - студия не видела его телефон, поэтому он не мог прочитать логи ошибок.
Здесь надо сделать отступление. На мой взгляд, любой разработчик должен добиться того, чтобы студия умела замечать реальное устройство. Искать драйвера, спрашивать на форумах и т.д. Никакой эмулятор не заменит устройство. Можно даже купить самое дешевый китайский телефон и проверять программы на нем. Заодно решите и другую проблему - проверите работоспособность программы на слабом устройстве с ограниченной памятью, маленьким экраном, слабым процессором.
Вернемся к проблеме. Прошу прислать APK мне на почту, устанавливаю на своё устройство и запускаю. Действительно, приложение валится с ошибкой. Тогда запускаю студию, подключаю устройство к компьютеру. Студия выводит различные сообщения. Копирую их и начинаю искать в интернете. Натыкаюсь на любопытную информацию - телефоны с версией Android 4.x некорректно работают с InstantRun. Для решения проблемы советуют отключить его.
Для начала устанавливаю программу на другом устройстве под Android 5.0. Действительно, на этом устройстве приложение нормально запускается. Отписываюсь и жду ответа. Через некоторое время получаю ответ, что все получилось. При отключенном InstantRun программа стала запускаться на его телефоне.
Никогда бы не поверил, что такое возможно. Но чудеса происходят. Как отключить InstantRun ищите самостоятельно.

Комментариев нет: