iOS 8 GM -> iOS 7 -> iOS 8 GM

Пришлось сегодня в срочном порядке делать даунгрейд с iOS 8 GM на iOS 7, лишь для того, чтобы проверить воспроизводимость одного бага в тестируемом приложение.

В общем, сложного в этом ничего не было:

  1. В iTunes на всякий случай (и как оказалось не зря) создал резервную копию устройства (без бэкапа программ)
  2. Сделал дауегрейд на iOS 7 -> после этих действий все программы слетели, но настройки системы сохранились
  3. После всех необходимых работ по воспроизведению бага, вновь накатил iOS 8 GM -> все программы вернулись на свои места, правда настройки расположения иконок полностью сбились
  4. Сделал восстановление из ранее созданной резервной копии -> все пришло на свои места, как и было ранее до выполнения пункта 2!

iOS 8 Golden Master вышла в свет

Позавчера Apple провела очередную презентацию своих новых устройства — iPhone 6 в двух вариантах (большой и маленький), а также носимые часы Watch. Также был анонсирован новый платежный сервис — Apple Pay.

Сразу же после презентации вышла iOS 8 (Golden Master), которую можно ставить без привязки к аккаунту разработчика (в отличии от всех предыдущих бета-версий iOS 8).

Я не стал ожидать официального релиза iOS 8, который должен состояться через неделю, 17 сентября, и поставил Golden Master на свой iPad Air. Размер прошивки, конечно же, удивил — почти 2 ГБ, но установилось все довольно быстро и без каких-либо нештатных ситуаций.

Сразу же заметил пару косяков. К примеру, есть интересная проблема, связанная с разблокировкой экрана:

1) Повернуть iPad в ландшафтный режим и открыть приложение, которое также работает ТОЛЬКО в ландшафтном режиме (к примеру, GarageBand). Проверить, что центр уведомлений открывается путем свайпа сверху вниз.

2) Заблокировать устройство путем закрытия крышки чехла с магнитами.

3) Повернуть iPad в портретный режим.

4) Разблокировать устройство, открыв крышку чехла.

5) Повернуть iPad в ландшафтный режим. Попытаться вновь вызвать центр уведомлений путем свайпа сверху вниз -> не работает! А все потому, что устройство думает, что оно находится в портретной ориентации. Легко убедиться, если сделать свайп справа налево -> центр уведомлений открылся.

Возможно, проблема присутствовала и в предыдущих версиях iOS, правда я что-то такого не замечал.

[Android] Перехват HTTPS-трафика с помощью прокси-сервера

Эта заметка является продолжением той, в которой я расписал, как можно проанализировать незащищенный трафик, исходящий от мобильного приложения к серверу. Теперь настало время поговорить о защищенном трафике. Далее будем считать, что сетевой обмен происходит по протоколу HTTPS.

Как и раньше, помочь нам в этом деле могут такие известные и популярные прокси-серверы, как Charles, Fiddler, Burp Suite. Fiddler работает только под ОС Windows (ибо написан на .Net), а Charles и Burp Suite являются кроссплатформенными инструментами, работающими как под Windows, так и под Mac.

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

В моем случае я использовал Fiddler с его сертификатом, и трафик от части приложений был виден (Facebook, Fourquare…), но к сожалению не для тех приложений, которые мне действительно были нужны для анализа.

И тут на помощь пришел Burp Suite. Его сертификат был «скушен» недоверчивыми приложениями и таким образом я смог получить доступ к защищенному трафику и впоследствии проанализировать его. Возможно, сертификат от Charles тоже помог бы в этом, но, честно сказать, я еще не пробовал.

SSL-сертификат в Burp Suite

Немного визуальных проблем в iOS 7

На прошлой недели на конференции WWDC 2014 была анонсирована новая версия мобильной операционной системы iOS 8, которая доступна для ознакомления уже сейчас, а официальный релиз состоится, как обычно, осенью.

Недавно я тут порылся с своей фотоленте на iPad и обнаружил пару скриншотов с экрана iOS 7, на которых присутствуют баги в UI. А все потому что, когда вижу проблему, стараюсь ее всегда зафиксировать. Времени выложить обнаруженные проблемы ни как не хватало, но сегодня не тот случай 🙂

1. Ширина область нотификации сократилась в два раза:

Немного визуальных проблем в iOS 7

2. В App Store некорректно отображается иконки приложения «Ведомости», которая в свою очередь налезает на иконку другого приложения:

Немного визуальных проблем в iOS 7

3. Иногда в App Store на странице обновления не подгружаются иконки обновляемых приложений:

Немного визуальных проблем в iOS 7

P.S.: по время Сочинской Олимпиады загрузил приложение «Смотри+» от Мегафон. К сожалению, оно также не обошлось без существенных проблем в UI:

Смотри+ от Мегафон

Импорт SMS-сообщений с Nokia на Android

Решил перенести свои старые смс-сообщения с Nokia 5800 на новенький Nexus 5.

Первым делом необходимо синхронизировать Nokia с программой Ovi Suite, выбрав  в качестве синхронизации смс-сообщения. Затем в программе Ovi нужно экспортировать смс-сообщения в файл формата *.csv. Теперь в этом файле хранится вся ваша эсэмэсная переписка 🙂

Далее перемещаем данный csv-файл на Android-устройство, а из Google Play устанавливаем программу Sms Tools — All in one, с помощью которой можно уже промпортировать sms-сообщения из csv-файла. После импорта все сообщения будут видны в программе Google Hangouts.

LG Nexus 5

Приобрел LG Nexus 5. Красный. 16 ГБ. За 14 тыс. рублей.

Также прикупил к нему черный чехол Ringke Ultra Slim (софт-тач покрытие).

Все это дело смотрится просто шикарно — сочетание черного и красного дает о себе знать.

Теперь чуть подробнее:

Как я уже писал, в последнее время мне приходилось ходить с рабочими Android-телефонами — сначала HTC EVO 3D, затем с LG Optimus 3D. На обоих моделях были постоянные тормоза. Я проклинал Android как только мог. Я вообще не переношу ни малейший намек на лаги, все должно работать быстро и без задержек, потому что часто это бывает весьма критически важно.

Возвращаться на свою Nokia 5800 уже желания никакого не было, поэтому я начал подбирать себе новый телефон. Сразу скажу — iPhone в качестве варианта даже не стоял. Мне не нужно еще одного устройство на базе iOS, т.к. iPad Air вполне хватает. Значит, выбираем из Android’ов. Наиболее привлекательным аппаратом в средней ценовой категории является как раз LG Nexus 5. По мимо того, что это действительно хорошее устройство, еще важным для меня был момент того, что это телефон от Google и что на него первым будут приходить самые последние версии Android.

Nexus 5 использую чуть больше двух недель и пока это устройство вполне отвечает ожиданиям — современный, удобный, быстрый, с хорошей камерой.

[Android] Наиболее популярные секретные коды

Наиболее популярные секретные коды, которые работают на Nexus 5:

*#06# — информация об IMEI
*#*#4636#*#* — информация б устройстве, сетевых подключениях, аккумуляторе, статистики использования
*#*#8255#*#* — информация о GTalk Service
*#*#7594#*#* — позволяет выключать устройство без отображения подтверждающего окна
*#*#7780#*#* / *2767*3855# — сброс устройства к заводским настройкам (hard reset)

ProGuard и Java 8

При попытке собрать релизное Android-приложение через ProGuard (утилита для сокращения, оптимизации и обфускации кода), появляется сообщение об ошибке:

Unsupported class version number [52.0] (maximum 51.0, Java 1.7) with sbt-proguard

Действительно, я использую Java 8, а ProGuard, идущий в составе Android Studio, имеет версию 4.x. Но четвертая версия, как оказалась, не умеет работать с Java 8.

Решением проблемы является установить последнюю бета-версию ProGuard 5.0. Пятая версия, кстати, на выходе выдает более компактный в размере apk-файл.

Про автоматическое включение Bluetooth после обновления iOS

Каждый раз, когда обновляю iOS, автоматически включается Bluetooth. Это баг такой или фича?

Вот и сейчас после обновления до iOS 7.1.1 включился Bluetooth. Можно предположить, что при обновлении системы некоторые настройки принимают значения по умолчанию, но если честно, в такое даже и верить не хочется, потому что больше похоже на ересь.

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

Про HTC (Android 4.4.2) и setWebContentsDebuggingEnabled

Обнаружил весьма странное поведение у HTC-устройств с Android 4.4.2 — невозможно провести удаленную отладку Android WebView.

Я уж начал грешить, что проблема в моих руках, хотя выполнил все условия, описанные в официальном мануале (раздел «Debugging Android WebViews»). Как я не старался, но заставить Chrome увидеть запущенный WebView из под приложения, мне не удалось. Потом решил попробовать запустить все это дело на Google Nexus 4 (Android 4.4.2) и… все заработало.

Вот так-то… Там работает, тут не работает…