Войти

Или войди с помощью

Яблоко в ромашках: любит, не любит…

slavikus avatar |

Яблоко в ромашках

Многие из нас сталкивались с проблемой, когда после установки некоторого количества программ, телефон перестаёт загружаться — висит на заставке с яблочком с «ромашкой» поверх. Иногда телефон таки умудряется запустится через несколько часов лежания.

Мы исследовали этот вопрос в связи с тем, что такие ситуации иногда возникают и как результат взаимодействия Русского Проекта с различными программами типа MobileScrobber, Dock, Screenshot и других.

Далее достаточно «технологичное» объяснение одной из причин таких ситуаций — читайте, если Вам интересно, но имейте в виду, что оно, возможно, может представлять некоторые сложности для понимания. =)

В системе (как практически и во всех других) предусмотрены «демоны», процессы, которые загружаются с системой и висят в фоновом режиме. В случае с iPhone такими демонами (от сторонних разработчиков) является ssh, Dock, Screenshot, Scrobber, и т.п.

Практически все (кроме ssh) из них написаны на Objective-C, с применением UIKit (системной библиотеки, отвечающей за вывод GUI, и обслуживающей программы, написаные на Objective-C).

Продолжаем. В системе есть понятие системного порта, в который идут различные оповещения об изменении уровня яркости дисплей, входа/выхода из режима Sleep, и тп. Этим портом по умолчанию «владеет» SpringBoard.app, и работать без него отказывается. Однако, когда запускаются сторонние демоны, использующие UIKit, они пытаются открыть этот порт под себя (точнее, UIKit пытается). Если SpringBoard умудрилась запуститься раньше, и «подмять» его под себя, всё хорошо — система возвращает уже открытый порт демону, все довольны. Однако, если по какой-то причине SpringBoard запустилась чуть позже одного из демонов (а процесс запуска их всех идет параллельно — кто быстрее, тот и прав), наступает Полная Попа, в просторечии именуемая «яблочко с ромашкой при загрузке»: SpringBoard пытается открыть нужный ей порт с правами владения, жестко обламывается (порт уже открыт другим демоном, например, Dock), и завершается. Системный сервис launchd, который отвечает за запуск приложений при старте системы, видит, что SpringBoard завершился, и запускает его снова. И так до тех пор, пока каким-то чудом (часов через 12) SpringBoard не получит-таки в личное пользование этот злосчастный порт (если демон, который успел его захватить первым, по какой-то причине самозавершится, что, слава богу, благодаря количеству глюков в оных, не редкое явление).

Почему всё это происходит? Apple явно не рассчитывали, что демоны будут написаны на Objective-C с использованием UIKit. Есть обходной манёвр, который запрещает демонам пытаться захватить системный порт сообщений, но его должны реализовывать авторы демонов (или нужно править .plist в /Library/LaunchDaemons).

Тонкие связи

При чем тут Русский Проект, спросите вы? А при том, что поскольку мы не меняем системных файлов, а делаем всё динамически в памяти при запуске SpringBoard, это отнимает несколько миллисекунд, которые оказываются фатальными — другие сервисы успевают запуститься раньше. Вся описанная ситуация может случаться (и случается) и без наших продуктов вообще, но все-таки реже.

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


И на закуску, что делать, если это всё-таки произошло, ваш любимый телефон предлагает погадать с ним на ромашке о любви, и у Вас есть доступ к нему через iPhone Browser или SSH.

Самый радикальный и простой способ — удалить все . plist файлы из папки /Library/LaunchDaemons, кроме com. openssh. sshd. plist — это SSH, и такой конфликт вызывать он не может. После чего в 99 случаях из 100, ваш телефон запустится.

plist file

А более сложный способ, который в теории должны делать авторы демонов, требует небольшого редактирования тех же . plist файлов… если интересно, я его расскажу. В таком случае функциональность установленных приложений с демонами останется, но вот только я не знаю, насколько это отразится на каждом конкретном приложении — в теории, это может помешать ему выводить собственные окна на экран (оно и не должно, оно же демон, но вдруг кто-то попытается?..)


Человеку нашего века вообще свойственна привязанность к железкам — будь то автомобиль, компьютер, или такое устройство, как iPhone. Поэтому неудивительно, что некоторые из них начинают себя вести не очень адекватно — балуем мы их? Потому давайте относиться к своему питомцу построже и не ставить на него всё подряд, не думая о последствиях. А любовь к своему телефону мы покажем и без дурацкого гадания на ромашке, не так ли?

Слава Карпенко (RiP Dev Team)

32
undefined
iPhones.ru
Многие из нас сталкивались с проблемой, когда после установки некоторого количества программ, телефон перестаёт загружаться — висит на заставке с яблочком с «ромашкой» поверх. Иногда телефон таки умудряется запустится через несколько часов лежания. Мы исследовали этот вопрос в связи с тем, что такие ситуации иногда возникают и как результат взаимодействия Русского Проекта с различными программами типа MobileScrobber, Dock, Screenshot и других. Далее достаточно «технологичное» объяснение одной из причин...

32 комментариев

Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик
Котик из TikTok
Котик из TikTok
Котик из TikTok
Котик из TikTok
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Момент из фильма
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Мем стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Офис стикер
Видео мем
Видео мем
Видео мем
Видео мем
Видео мем
Видео мем

Какие правила в комментариях
  1. naderevnudedu avatar
    naderevnudedu 11 января 2008
    0

    Спасибо, оч. интересно!
    Слава, может пора уже Мануал/методичку выпустить, от RipDev.
    кроме меня, еще покупатели найдутся?!

    Войди на сайт, чтобы ответить
    Ответить
  2. hackins avatar
    hackins 11 января 2008
    0

    а мне картинки понравились………;-)

    Войди на сайт, чтобы ответить
    Ответить
  3. Iskander avatar
    Iskander 11 января 2008
    0

    Мне кажется, что мануал уже начал писаться на форуме в разделе FAQ. А что касается статьи, то еще раз убеждаюсь – не зря денег платил за пакет русификации. Ребята работают! И работают отлично. Вот если бы они еще и за другие проекты взялись с функционалом типа Customize, SummerBoard, MMS, готов с удовольствием приобретать их продукты, потому что знаю – будет работать как надо!

    Войди на сайт, чтобы ответить
    Ответить
  4. --aleksander-- avatar
    --aleksander-- 11 января 2008
    0

    а я бы аську купил….. думаю аську нормальную огромное количество людей купили бы !!!

    Войди на сайт, чтобы ответить
    Ответить
  5. naderevnudedu avatar
    naderevnudedu 11 января 2008
    0

    +1 работает и работают
    Мануал после SDK будет актуален.
    Может народ начнет задумываться что ставить и что покупать.

    Войди на сайт, чтобы ответить
    Ответить
  6. SeaBreeze avatar
    SeaBreeze 11 января 2008
    0

    > Есть обходной манёвр, который запрещает демонам пытаться захватить системный порт сообщений

    Полцарства за маневр! У меня большие траблы с деланием скриншотов :)

    Войди на сайт, чтобы ответить
    Ответить
  7. Scorpios33 avatar
    Scorpios33 11 января 2008
    0

    На форуме мы старались просто сказать что делать не надо и что мы не всегда виноваты, как и Эппл. Здесь подробно и профессионально.

    Войди на сайт, чтобы ответить
    Ответить
  8. proforg avatar
    proforg 11 января 2008
    0

    Scrobbler кстати в последней версии запускается со специальной задержкой :) для решения подобных ситуаций

    Войди на сайт, чтобы ответить
    Ответить
  9. zarkad avatar
    zarkad 11 января 2008
    0

    Очень доступно и понятно написано про демонов – спасибо.
    Отсюда просьба – пишите почаще такие статьи, если на то будет ваше желание. Сэкономите народу килограммы нервов!.

    Войди на сайт, чтобы ответить
    Ответить
  10. bura avatar
    bura 11 января 2008
    0

    >SpringBoard пытается открыть нужный ей порт с правами владения, жестко обламывается
    У меня как раз после установки РП начались такие грабли, если следить за загрузкой, то видно как иФон по несколько раз перезагружается. Но отчетливо это видно при загрузке в verbose mode.

    Войди на сайт, чтобы ответить
    Ответить

Нашли орфографическую ошибку в новости?

Выделите ее мышью и нажмите Ctrl+Enter.