iPhone

Как самому разобрать iPhone 3G (так, чтобы потом собрать)

ImageСлучилось неприятное - после замены сим-карты, iPhone перестал ее видеть. Пробовал чистить контакты на симке, перезагружал телефон несколько раз, все бесполезно. Похоже на то, что повредился контакт держателя сим-карты. Нести телефон в сервис возможности нет, т.к. нахожусь далеко от цивилизации, а звонить необходимость есть, поэтому принял решение - надо разбирать. Предупреждаю сразу, что ниже я описываю процесс так, как его сделал я и не гарантирую, что повторив мои действия вы ничего не сломаете, все на ваш страх и риск.


ImageДля разбора нам понадобится два инструмента - очень тонкая крестовая отвертка, что-то острое, например, нож с тонким лезвием или тонкая минусовая отвертка, чтобы поддевать шлейфы и присоска, чтобы снять экран. Подойдет присоска от автомобильного держателя или от плюшевой игрушки. Если таковой нет под рукой (как у меня), можно воспользоваться ножом, но только очень осторожно. Первым делом необходимо извлечь сим-карту из телефона. Далее, снизу, там где порт подключения к компьютеру, откручиваем два миниатюрных винтика. Открученные винтики складываем аккуратно, чтобы ничего не укатилось и не потерялось. Затем, самая сложная часть разборки - нужно извлечь экран из корпуса присоской или тонким предметом. Для этого я аккуратно вставил лезвие ножа между хромированным ободком и резиновой прокладкой, которая прилегает к экрану. Здесь нужно быть очень осторожным, чтобы не повредить экран и саму прокладку. Вставив нож, осторожно, приложив небольшое усилие, приподнимаем экран. Будьте осторожны, т.к. вверху, в районе сим-карты, экран держится на 3х шлейфах, которые нужно будет отсоединить. Сначала отсоединяем шлейфы под номерами 1 и 2, и затем под вторым открывается вид на номер 3. С ним нужно быть осторожнее и, чтобы его отсоединить не повредив, надо тонким предметом приподнять клипсу на противоположном конце разъема и только после этого можно извлечь сам шлейф. Теперь экран можно отложить в сторону.

ImageПеред нами материнская плата телефона, а под ней аккумулятор. Чтобы извлечь материнку - откручиваем 7 винтиков по периметру (7й винт под наклейкой "не откручивать"), отключаем шлейфы 4, 5, 6 и аккуратно вынимаем плату, поднимая ее за нижний край. Приподняв ее край, с обратной стороны отключаем шлейф, идущий от камеры и теперь, плату можно извлечь. Вот, собственно, и все. Далее все зависит от цели разбора: можно поменять стекло экрана, панельки, сам экран или батарейку. Моей целью было разобрать сим-ридер и восстановить на нем усики у контактов.

Разблокирование iPhone 4G возможно?

ImageМесяц или два назад мне в руки попал новенький iPhone 4G, привезенный из штатов. Естественно, для работы с сотовой сетью, он требовал симку американского AT&T, а без нее работал только, как айпод. Долго не расстраиваясь на эту тему, принялся за поиски прошивки или анлока для версии 4.2.1, с версией модема 03.10.01, но увы, долгие поиски не привели к желаемому результату. С большим удивлением обнаружил, что анлока просто нет в природе, и даже небезызвестные товарищи из Dev-Team ничем не смогли порадовать.





В последующие несколько дней удалось накопать следующую информацию, актуальную на данный момент:

  • Существует джейлбрейк для версий 4.1, 4.2.1, 4.3, который лишь позволит поставить Cydia и никак не повлияет на работоспособность телефона внутри сотовых сетей. Сделать его можно при помощи ultrasn0w 1.2.1.
  • С помощью того же ultrasn0w можно сделать анлок iPhone 4G, только если версия прошики модема 01.59.00
  • Существует так называемый "аппаратный анлок" при помощи некой китайской сим-карты. Товарищи разработчики именуют себя GEVEY и утверждают, что сим карта разлочит модемы версии 02.10.04 и 03.10.01. Не знаю, на сколько данный метод эффективен, попробовать его пока не удалось.

Управление памятью в Objective C

При разработке софта под iPhone, столкнулся с проблемой непонимания механизма распределения памяти. Являясь java-разработчиком, привыкшим к чудесам Garbage Collector'а, тема памяти в Objective C поначалу доставляла мне массу неприятностей. Спустя некоторое время, написав свое первое приложение, я подумал, что полностью разобрался в этой непростой теме... и это было моей ошибкой. Все таки, сначала надо хорошо читать мануалы и желательно до конца :)

Назвал я данную тему непростой не из-за сложности механизмов управления памятью - они то как раз более-менее понятные и простые, а, скорее, из-за того, что не разобравшись до конца, как правильно "освободить" объект из памяти, можно получить массу сложноотлавливаемых ошибок типа EXC_BAD_ACCESS, причем необязательно именно в том месте, где была допущена ошибка распределения памяти.

Apple iPad наконец-то увидел свет!

Image

Длительное ожидание закончилось, и несколько часов назад компания Apple официально анонсировала свой планшетный компьютер, который получил звучное имя iPad. Презентовал новинку глава Apple, Стив Джобс (Steve Jobs).

Итак, Apple iPad оснащается 9,7-дюймовым глянцевым емкостным IPS-дисплеем с LED-подсветкой и поддержкой технологии мультитач, разрешение экрана — 1024х768 точек. Процессор Apple A4 имеет тактовую частоту 1 ГГц, объем SSD-накопителя — 16 Гб, 32 Гб или 64 Гб. Имеется поддержка Wi-Fi 802.11 a/b/g/n, Bluetooth 2.1 с EDR, также планшет оснащён акселерометром, компасом, aGPS-модулем, датчиком освещённости, динамиком и микрофоном. Габариты планшета — 243х190 мм, толщина — всего 13,4 мм, а вес — 680 граммов у модели без 3G-модуля и 730 граммов — с 3G.

Cocoa / iPhone: отладка ошибки EXC_BAD_ACCESS

Если вы хоть раз занимались разработкой программного обеспечения под iPhone, то наверняка встречались с ошибкой EXC_BAD_ACCESS. Отловить ее достаточно непросто, т.к. встроенный дебагер не покажет вам нужный стектрейс и тем более не подскажет, как все исправить.

Что же такое EXC_BAD_ACCESS? Мне удобнее сравнивать эту ошибку с NullPointerException в Java, т.к. возникает она в ситуации, когда вы отправляете "сообщение" объекту, который уже был выгружен из памяти (released). Например, попробуйте создать объект с помощью alloc и затем два раза подряд его "отпустить" с помощью release.

Так как же быть, если у нас достаточно большой проект с массой кода и объектов? Как проще и быстрее отловить данную ошибку? На помощь придет директива NSZombiEnabled, установленная в переменных окружения проекта. Все, что она сделает - это заставит Objective C runtime оставлять объект-пустышку за каждым выгруженным реальным объектом и в следующий раз, когда вы попытаетесь обратиться к своему выгруженному объекту, вызов пойдет именно к пустышке, которая остановит выполнение кода и выведет короткое и ясное сообщение в дебагер о том, какой объект был вызван и что за сообщение ему было отправлено. Стектрейс при этом также не будет испорчен, и сможет дать дополнительную информацию о месте баги.

2010-01-08 16:21:35.802 My Project[4833:207] *** -[NSMutableURLRequest release]: message sent to deallocated instance 0x4925f30

Cocoa / iPhone: форматирование даты

Простой пример для тех, кто ищет простой и быстрый путь отформатировать дату при разработке под iPhone. В моем примере будем форматировать дату по стандарту RFC2822.

NSString *rfcDate = @"Mon, 4 Jan 2010 20:41:12 +0300";

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

/* Установка локали обязательна, т.к. иначе будет использована текущая */
NSLocale *enUS = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale:enUS];
[enUS release];
[formatter setDateFormat:@"EEE, dd MMM yyyy HH:mm:ss ZZ"];
NSDate *theDate = [formatter dateWithString:rfcDate];

Данный подход достаточно прост и эффективен, но у него есть один минус - куча строк, которые придется писать каждый раз, когда надо сделать преобразование. Чтобы этого избежать можно сделать так:

iPhone SDK 3.x под Mac OS X Leopard 10.5

Хотите разрабатывать под айфон? Хотите использовать последнюю версию SDK 3.x? Нет проблем - идем на сайт Apple iPhone Dev Center и качаем. Но что делать, если у вас хакинтош версии ниже, чем 10.5.7 и обновиться никак не получается? На моем ноутбуке установлена iDeneb 10.5.6 и соответственно iPhone SDK 3.1.2 ставиться не собирается, предлагая мне обновить систему.

Возится с обновлением совсем не хотелось, к тому же, инсталятор SDK можно легко обмануть. Итак, качаем SDK 3.1.2 под наш леопард и перед установкой делаем следующее:

  • Открываем файлик /System/Library/CoreServices/SystemVersion.plist
  • Внизу файла меняем в двух местах версию на 10.5.7
  • Сохраняем файл и ставим SDK

Регистрируемся в Apple App Store

iPhone
В последнее время в сети появилось огромное количество статей от iPhone-разработчиков, которые сколотили свой первый миллион. Чего только стоит признание девелоперов Tap Tap Revenge о том, как они зарабатывают по $ 1 000 000 в месяц! Действительно, если посмотреть на предложения платного софта в App Store, то можно найти очень много, достаточно простых программ, написание, которых вряд ли отняло у разработчика больше пары дней. Не смотря на это, товарищи не стесняются ставить цену хотя бы в $ 0.99 и надеяться на большие продажи.

Собственно, а почему бы не попробовать и нам? Естественно, для разработки под айфон вам потребуется как минимум Mac / хакинтош, Xcode, прямые руки и хорошая идея. Но и это еще не все. Чтобы выставить свое приложение в магазине Apple, нужно сначала в нем зарегистрироваться. Вроде ничего сложного, да? Так и есть, если вы не проживаете в Российской Федерации.

Создание и установка рингтона для iPhone

Чтобы залить свой модный рингтон в Apple iPhone, необходимо проделать несколько нехитрых шагов. Итак, допустим вы уже выбрали желаемую мелодию...

1. Сперва нужно обрезать мелодию так, чтобы ее продолжительность была не более 30 секунд. Для этого можно воспользоваться любым аудио-редактором или даже онлайн сервисами, такими как Audiko.

2. Запускаем iTunes и добавляем наш mp3-файл в медиатеку путем перетаскивания файла в окно программы.

Синхронизация iPhone с несколькими компьютерами

Интересную политику проводит Apple в плане синхронизации iPhone с компьютером. Если использовать одну машину, то все отлично, но стоит попробовать подключить его к другой, как сразу же перестают запускаться все загруженные из App Store приложения. А что делать, если хочется синхронизировать телефон с ноутбуком и домашним компьютером?

Реклама на stremoukhov.ru: