- Android Studio: “Session ‘app’: Error Launching activity”
- Sometimes weird things happen in Android-land. This is the (not fully solved) story of a weird launch problem I ran into in Android Studio.
- Приложение вылетает при переходе на 3-е Activity
- Методы лечения различных ошибок в Android Studio при разработке проекта
- Памятка по жизненному циклу Android — часть I. Отдельные Activity
- Часть 1: Activity
- Одно Aсtivity — Сценарий 1. Приложение завершено и перезапущено
- Одно Aсtivity — Сценарий 2. Пользователь уходит
- Одно Aсtivity — Сценарий 3. Изменение кофигурации
- Одно Aсtivity — Сценарий 4. Приложение приостановлено системой
Android Studio: “Session ‘app’: Error Launching activity”
Sometimes weird things happen in Android-land. This is the (not fully solved) story of a weird launch problem I ran into in Android Studio.
Jan 22, 2018 · 3 min read
My usual work/test setup is that I have two physical devices (Nexus 5 on LineageOS 7.1.2 & Pixel 1 on Stock 8.1) connected to my Macbook Pro. This allows easy access to testing changes quickly on a device.
I was working through a bunch of changes on an app for client and wanted to test the result on the phones. I launched the app on the Nexus 5 via Run ‘app’ in Android Studio — everything was fine and worked as expected.
Next, I tried to l a unch the app on the Pixel but it didn’t install and therefore it didn’t launch either. The app didn’t show up in the app drawer.
Instead Android Studio decided to show me the proverbial middle finger and resorted to the dreaded Session ‘app’: Error Launching activity problem. I managed to obtain some more details from the run panel and it seemed that the source of the trouble was that the MainActivity couldn’t be found.
A quick investigation looking into a variety of possible problems left me puzzled. After cleaning the build and rebuilding, the generated .apk file looked ok. The app hadn’t changed that dramatically over the last couple of days anyway. The weirdest thing though: going back in time in the Mercurial repo and rebuilding from an older snapshot still didn’t fix the problem.
At this stage it was clear it would have to be an issue with the Pixel or Android Studio and the Pixel or some other weird thing coming from an update to the build or sdk tools.
One particular thing that I found in logcat when trying to install on the Pixel were messages from PackageManger that indicated a path change:
That’s weird — why would the path change in this situation? Because the app didn’t show up in the app drawer, the finding inspired me to have a look in the app list in the Settings app. And bingo, the app in question was there. However, it had a little note saying “Not installed for this user” next to it. Unfortunately I didn’t take a screenshot of it, but it would look similar to the screenshot shown in a Stackexchange discussion on how to remove apps installed for a different user.
Uninstalling it (via uninstall for all users in the three dots menu in the upper right corner) got rid of the app. Another clean build and a relaunch from Android Studio fixed the issue with the app not running on the Pixel.
Now, in hindsight the launch error makes sense. Not sure if adding -r (for replacing an existing app) to the pm install flags would have prevented the issue, it might have.
Now we’re getting to the unsolved part I mentioned above. What does not make sense to me is that my Pixel thought the app was installed for a different user.
For a start my phone doesn’t have multiple users. It has me (well, and the guest user option one can’t get rid of easily). I struggle to think that Android Studio would install apps into that guest user even by accident, so let’s rule that out.
Leaves the option of some of the internals of the device’s user management (or specifically my user) having changed through the lifecycle of my phone. Could the upgrade from Android 7.1.2 to 8 or to 8.1 have caused that? Could one of the monthly security patches have caused this?
I’d be really keen to shed some more light on this particular problem. If you have seen this before and know more about it, I’d really appreciate any comments, feedback and further explanation.
I hope you find this informative and useful. If you do, please like it and share. As usual, I’d really appreciate any comments and feedback. You can find me as AgentK on Twitter.
Источник
Приложение вылетает при переходе на 3-е Activity
Вылетает примерно через 30 минут (при переходе в нет, в стим, или вообще простотак но при переходе)
Здравствуйте у меня windows вылетает на синий экран, внизу появляется отсчет до 100 потом он сам.
Ошибка при переходе на новое Activity
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? При переходе на новое активити.
При переходе на предыдующую Activity — пустота
Здравствуйте, Имеются 3 activity (Poets, Poems, PoemText). На первом из БД вытаскиваются имена.
Сохранение введенных данных при переходе на другой activity
Здравствуйте, такая ситуация, есть два активити, 1-Форма добавления клиента в базу, 2-Активити для.
выше скинул лог ошибки, уже на прямую подключил телефон и тоже самое, при переходе на 3-е активити , всё тухнет.. на эмуляторе по прежнему всё хорошо.. при этом 50 на 50, на некоторых телефонах всё ок.
Прошу помочь разобраться в ситуации =)
Добавлено через 2 часа 47 минут
Решил проблему путём добавления таких строк в манифест и сжал изображения .. на сколько я понял проблема заключалась в размере и типе использованных изображений.
ответ нашёл тут: решение проблемы =)
Программа выдаёт ошибку при переходе в новую activity
При переходе в новую activity приложение вылетает. ниже приведен код того самого activity package.
Подскажите у кого происходит вылет при переходе на Activity
java.lang.NullPointerException java.lang.RuntimeException: Unable to start activity.
Как сохранить текст с EditText при переходе на другую Activity?
проблема такая что не могу реализовать EditText сохраняет данные в буфер или еще куда-то при.
Вылетает activity при заполнении ArrayList
Всем привет, у меня выбивает из приложения (android studio) в момент заполнения ArrayList с базы.
Программа вылетает при переходе на ListActivity
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Моя программа просто вылетает.
Приложение зависает, если свернуть и развернуть Activity или перейти на другую Activity
У меня в параллельном потоке происходит куча apply() Решение использовать apply вместо commit было.
Источник
Методы лечения различных ошибок в Android Studio при разработке проекта
Сегодня хотел бы поделиться своим анализом и способами лечением разных ошибок при разработке своего продукта в Android Studio. Лично я, не раз сталкивался с различными проблемами и ошибками при компиляции и/или тестировании мобильного приложения. Данный процесс, всегда однообразный и в 99% случаев и всегда нужно тратить n-колличество времени на его устранение. Даже, когда ты уже сталкивался с данной проблемой, ты все равно идешь в поисковик и вспоминаешь, как же решить ту или иную ситуацию.
Я для себя завел файлик, в котором отметил самые частые ошибки — потратив на это несколько часов и перечислил самые популярные ошибки (в дальнейшем планирую просто их запомнить), чтоб сократить свое время в дальнейшем.
Итак, начну по порядку с самой распространенной проблемы и дальше буду перечислять их по мере появления:
1) Если подчеркивает красным код, где используются ресурсы: R. — попробовать (но вероятно не поможет): Build -> Clean Project.
В принципе на Build -> Clean Project можно не терять времени, а лучше всего — слева переключиться на Project, открыть каталог .idea, затем каталог libraries и из него удалить все содержимое. Затем нажать кнопку Sync Project. А затем (если все еще красное, но скорее всего уже будет все ок ) Build -> Clean Project.
2) После внезапного выключения компьютера, после перезапуска может быть во всех проектах весь код красным. Перед этим может быть ошибка: Unable to create Debug Bridge: Unable to start adb server: Unable to obtain result of ‘adb version’. Есть три решения — первое помогло, второе нет (но может быть для другого случая), а третье — не пробовал:
а) File — Invalidate Caches/Restart — Invalidate and Restart
б) Закрыть студию. В корне папки проекта удалить файл(ы) .iml и папку .idea. Вновь запустить студию и импортировать проект.
в) Нажать Ctrl-Alt-O и запустить оптимизацию импорта.
Кстати, adb сервер можно проверить на версию (и работоспособность) и затем перезапустить:
3) Если Android Studio выдает приблизительно такую ошибку: Error:Execution failed for task ‘:app:dexDebug’.
Надо слева переключиться на опцию Project, найти и удалить папку build которая лежит в папке app, т.е. по пути app/build. Затем перестроить весь проект заново: Build -> Rebuild Project.
Такое же решение если ошибка типа: «не могу удалить (создать) папку или файл» и указан путь, который в ведет в app/build. Тоже удаляем папку build и ребилдим проект.
4) В сообщении об ошибке упоминается heap — виртуальная память. А ошибка обычно вызвана ее нехваткой, т.е. невозможностью получить запрашиваемый объем. Поэтому этот запрашиваемый объем надо уменьшить, т.е. переписать дефолтное значение (обычно 2048 MB которое можно изменить в настройках), на меньшее 1024 MB.
В файле проекта gradle.properties пишем:
5) Android Studio пришет примерно такую ошибку: Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to «83648b99316049d63656d7276cb19cc7e95d70a5»
Возможные причины (кроме необходимости регулярного обновления SDK):
а) Загруженный проект был скомпилирован с помощью уже несовместимого старого gradle плагина. В этом случае надо найти и подключить в своем build.gradle проекта этот более старый плагин. т.е. попробовать более старые версии, например: 1.1.3 (часто именно 1.1.x и подходит).
Найти все версии можно здесь.
б) Если в build.gradle проекта используется beta-версия плагина — это означает, что срок ее истек. Посмотреть последние релизы (продакшн и бета) можно также здесь:
6) Иногда при подключении сторонних библиотек могут дублироваться некоторые файлы (обычно связанные с лицензированием). В сообщении будет что-то содержащее слова: duplicate files. Решение — надо посмотреть в сообщении об ошибке или в документации подключенной сторонней библиотеки — какие именно файлы стали избыточными, и перечислить их в build.gradle модуля для исключения (exclude) из билда.
Это делается в директиве packagingOptions (которая, в свою очередь, находится в директиве android).
Источник
Памятка по жизненному циклу Android — часть I. Отдельные Activity
Android спроектирован так, чтобы использование приложения пользователем было максимально интуитивным. Например, пользователи приложения могут повернуть экран, ответить на уведомление или переключиться на другое приложение, и после этих манипуляций они все так же должны иметь возможность продолжить использовать приложение без каких-либо проблем.
Чтобы обеспечить такое взаимодействие с пользователем, вы должны знать, как управлять жизненными циклами компонентов. Компонентом может быть Activity, Fragment, Service, класс Application и даже сам процесс приложения. Компонент имеет жизненный цикл, в течение которого он проходит через различные состояния. Всякий раз, когда происходит переход, система уведомляет вас об этом при помощи методов жизненного цикла.
Чтобы нам было легче объяснить, как работает жизненный цикл в Android, мы определили несколько сценариев (примеров из жизни), которые сгруппированы по компонентам:
Часть 1: Activity — ЖЦ одного активити (этот пост)
Диаграммы также доступны в виде шпаргалки в формате PDF для краткого ознакомления.
Примечание: эти диаграммы соответствуют поведению в Android P/Jetpack 1.0.
Следующие сценарии демонстрируют поведение компонентов по умолчанию, если не указано иное.
Если вы обнаружили ошибки в статье или считаете, что не хватает чего-то важного, напишите об этом в комментариях.
Часть 1: Activity
Одно Aсtivity — Сценарий 1. Приложение завершено и перезапущено
Будет вызван, если:
Пользователь нажимает кнопку Назад или
Вызван метод Activity.finish()
Самый простой сценарий показывает, что происходит, когда приложение с одним активити запускается, завершается и перезапускается пользователем:
Управление состоянием
onSaveInstanceState не вызывается (поскольку активити завершено, вам не нужно сохранять состояние)
onCreate не имеет Bundle при повторном открытии приложения, потому что активити было завершено и состояние не нужно восстанавливать.
Одно Aсtivity — Сценарий 2. Пользователь уходит
Будет вызван, если:
Пользователь нажимает кнопку «Домой»
Пользователь переключается на другое приложение (через меню «Все приложения», из уведомления, при принятии звонка и т. д.)
В этом случае система остановит активити, но не завершит его сразу.
Управление состоянием
Когда ваше активити переходит в состояние Stopped, система использует onSaveInstanceState для сохранения состояния приложения на тот случай, если впоследствии система завершит процесс приложения (см. ниже).
Предполагая, что процесс не был убит, экземпляр активити сохраняется в памяти, сохраняя все состояние. Когда активити возвращается на передний план, вам не нужно повторно инициализировать компоненты, которые были созданы ранее.
Одно Aсtivity — Сценарий 3. Изменение кофигурации
Будет вызван, если:
Изменена конфигурация, такие как поворот экрана
Пользователь изменил размер окна в многооконном режиме
Управление состоянием
Изменения конфигурации, такие как поворот или изменение размера окна, должны позволить пользователям продолжить работу с того места, где они остановились.
Активити полностью уничтожено, но состояние сохраняется и восстанавливается при создании нового экземпляра.
Bundle в onCreate тот же самый, что и в onRestoreInstanceState .
Одно Aсtivity — Сценарий 4. Приложение приостановлено системой
Будет вызван, если:
Включён многооконный режим (API 24+) и потерян фокус
Другое приложение частично покрывает работающее приложение: диалоговое окно покупки (in-app purchases), диалоговое окно получения разрешения (Runtime Permission), стороннее диалоговое авторизации и т. д.
Появится окно выбора приложения (при обработке неявного интента), например диалоговое окно шейринга.
Этот сценарий не применим к:
Диалогам в том же приложении. Отображение AlertDialog или DialogFragment не приостанавливает базовое активити.
Уведомлениям. Пользователь, получающий новое уведомление или открывающий панель уведомлений, не приостанавливает текущее активити.
Источник