13 октября 2009 г.

Чтение/запись .plist файлов на iPhone

Оказывается очень просто, у обеьекта NSDictionary есть методы: -initWithContentsOfFile: и -writeToFile:atomically:

  1. NSString *filePath = @"./test.plist";
  2. NSMutableDictionary* plistDict = [[NSMutableDictionary alloc]
  3. initWithContentsOfFile:filePath];
  4. [plistDict setValue:@"test_value" forKey:@"test"];
  5. [plistDict writeToFile:filePath atomically: YES];

7 октября 2009 г.

Установка iphone-gcc на iPhone/iPod с прошивкой 3.х

Из Cydia пакет gcc на iPhone не устанавливается из-за битой libgcc. Для установки нам понадобится командная строка на устройстве:

  1. $ wget http://apt.saurik.com/debs/libgcc_4.2-20080410-1-6_iphoneos-arm.deb
  2. $ sudo dpkg -i libgcc_4.2-20080410-1-6_iphoneos-arm.deb
  3. $ sudo apt-get install iphone-gcc

(c) iphonesdkdev.blogspot.com

11 сентября 2009 г.

Создание iso образа диска в Mac OS X

Способ подходит для любых *nix систем, нужно только пути к устройству подкоректировать.
Все работы ведутся в терминале.
1. Вставляем диск в CD-ROM
2. Отмонтируем диск из системы (если у работает автомаунт дисков)
3. Создаем образ диска

  1. $ dd if=/dev/disk1 of=~/disk.iso bs=2048

Так же в Mac OS есть несколько интересных утилит drutil, drutil, hdid.

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

8 июля 2009 г.

Переименование проекта в xCode

1. Закрыть проект в xCode
2. Переименовываем папку в которой находится проект (если необходимо)
3. Открываем папку с проектом и переименовываем папку ".xcodeproject"
4. Удаляем папку "build"
5. Открываем переименованый проект в xCode (дважды кликнув по ".xcodeproject")
6. Идем в меню "Project/Edit Active Target" на вкладку "General" и переименовываем имя, а во вкладке "Build" выбираем "All configuration" в "Configuration" и в списке снизу переименовываем свойство параметра "Product Name".
8. Build/Clear All Targets
9. Собираем проект

2 июля 2009 г.

Деинсталяция iPhone SDK

Иногда вознкает необходимость удалить iPhone SDK (например поставить более новую версию).
Все просто, в терминале набираем:

  1. $ sudo /Developer/Library/uninstall-devtools --mode=all

вводим пароль пользователя и iPhone SDK вместе со всеми компонентами удалится.

10 июня 2009 г.

Настройка xCode для разработки под iPhone SDK

Здесь я опишу шаги по настройке Xcode для разработки на устройстве БЕЗ сертификата разработчика.
1. Предполагаем, что Xcode и iPhoneSDK (версии 2.1 или 2.2) установлены в /Developer.

2. Создаем сертификат (вместо того, который дает эппл официально). Для этого запускаем keychain и создаем сертификат типа Self Signed Root (инструкция по созданию сертификата - http://developer.apple.com).
Запоминаем имя сертификата (пусть это будет MyDeveloperCert).

3. Отключаем профилирование в Xcode, чтобы она не проверяла корректность нашего липового сертификата. Для этого исправляем файл /Developer/Platforms/iPhoneOS.platform/Info.plist следующим образом:

Для 2.1 меняем значения параметров PROVISIONING_PROFILE_ALLOWED и PROVISIONING_PROFILE_REQUIRED на NO.

Для 2.2 добавляем ключи:

  1. <key>PROVISIONING_PROFILE_ALLOWED</key>
  2. <string>NO</string>
  3. <key>PROVISIONING_PROFILE_REQUIRED</key>
  4. <string>NO</string>

в секцию DefaultProperties.

4. Идем в /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates и копируем папку Applications в, например, Pwned Applications (чтобы не портить оригинальные темплейты).

5. Далее, для каждого темплейта (каталога) из папки Pwned Applications правим следующие файлы:

Info.plist:
Добавляем следующий ключ.

  1. <key>SignerIdentity</key>
  2. <string>Apple iPhone OS Application Signing</string>


___PROJECTNAME___.xcodeproj/project.pbxproj:
Исправляем значения параметров (их там несколько) CODE_SIGN_IDENTITY[sdk=iphoneos*] на название нашего сертификата (в нашем примере это MyDeveloperCert).

Такие же операции надо провести над любым официальным проектом программы для iPhoneOS (например над демкой HelloWorld).

6. Устанавливаем на телефон патченный MobileInstallation (например, MobileInstallationPatch через Сидию, репозиторий http://www.iphone.org.hk/apt/).

Для тех, кто хочет понимать что там такого патчится привожу перевод объяснения javacom.

  1. Исправить E0 на A0
  2. Для прошивки 2.1 по адресу 0x00009d06.
  3. В прошивке 2.2 файл не изменился.

Для тех, кто хочет понимать еще больше -- take this fucked IDA and goahead :-)


Для проверки запускаем Xcode, создаем новый проект для iPhone (выбираем тот проект, файлы которого мы изменяли) и собираем его.
Подключаем телефон, Xcode спросит, будем ли мы использовать этот телефон для девелопмента -- отвечаем, что будем.
При сборке проекта для устройства Xcode спросит, можно ли пользоваться сертификатом. После сборки, программа будет установлена на телефоне и загружена. Загрузка программы на телефоне под управлением Xcode занимает большее время, нежели запуск ее без Xcode.

Я сделал, как описано, для SDK 2.1. После обновления на SDK 2.2 пришлось снова править файл /Developer/Platforms/iPhoneOS.platform/Info.plist. В остальном никаких изменений делать не пришлось. Мой проект, сделанный в 2.1 работает в 2.2 нормально и на устройство с 2.2 устанавливается нормально.

Разные версии SDK и прошивки телефона работать вместе не будут.

(c) www.iphones.ru

7 июня 2009 г.

Настройка интернет шлюза Ubuntu для wi-fi сети с статическими IP адресами

Есть два интерфейса:
wlan0 - беспроводный адаптер, к которому будут коннектится наши беспроводные устройства
eth0 - устройство которое смотрит в интернет

Настраиваем интерфейс wlan0:
добавляем в файл /etc/network/interfaces

  1. auto wlan0
  2. iface wlan0 inet static
  3. address 192.168.0.1
  4. netmask 255.255.255.0
  5. wireless_mode Ad-Hoc
  6. wireless_channel 10
  7. wireless_essid home
  8. wireless_key 1234567890


Разрешаем пересылку пакетов:

  1. $ sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf


включаем NAT и сохраняем настройки в файл:

  1. $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  2. $ sudo iptables-save > /etc/iptables.up.rules


добавляем в /etc/networks/interfaces в секцию wlan0:

  1. pre-up iptables-restore < /etc/iptables.up.rules
  2. up route add -net 192.168.0.0 netmask 255.255.255.0 dev wlan0
  3. up route add -net 0.0.0.0 netmask 255.255.255.255 dev eth0


Перегружаем сеть:

  1. $ sudo /etc/init.d/networking restart


(c) afreedenfield.livejournal.com

Установка ffmpeg и x264

1. Удаляем x264, libx264-dev, и ffmpeg если они были установлены:

  1. $ sudo apt-get purge ffmpeg x264 libx264-dev

2. Получаем зависимые пакеты необходимые для установки FFmpeg и x264:

  1. $ sudo apt-get update
  2. $ sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libtheora-dev libxvidcore4-dev

3. Установка x264:

  1. $ git clone git://git.videolan.org/x264.git
  2. $ cd x264
  3. $ ./configure
  4. $ make
  5. $ sudo checkinstall --fstrans=no --install=yes --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`-0.0ubuntu1" --default

4. Установка ffmpeg:

  1. $ svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
  2. $ cd ffmpeg
  3. $ ./configure --enable-gpl --enable-nonfree --enable-pthreads --enable-libfaac --enable-$ libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid
  4. $ make
  5. $ sudo checkinstall --fstrans=no --install=yes --pkgname=ffmpeg --pkgversion "3:0.svn`date +%Y%m%d`-12ubuntu3" --default


(с) ubuntuforums.org

11 ноября 2008 г.

Установка Mac OS на ноутбук Acer Aspire 1650

Среди многих существующих операционных систем мне больше всего хотелось «пощюпать» Mac OS, предыдуший опыт запуска этой ОС под VMWare ничего толкового мне не дал из-за жутко медленной работы эмулятора. Покупать компьютер от Apple ради этого нет причины, хорошо, что Apple производят ОС под процессоры Intel, хотя есть сборки и под процессоры AMD.
Сборки которые устанавливаются на «железо» не от компании Apple называются «Хакинтош». Вот такую сборку я и устанавливал на свой ноутбук Acer Aspire 1650. К сожаленю скриншотов я не наделал, да и незачем, руководств по установке много в интернете, да и в конце статьи дам ссылки.
Сразу скажу, что из окола десятка выкачаных мной дистрибутивов установились только 4. Но это не означает, что их поставить невозможно, просто эти 2 установились без особых "танцев с бубном". Я хотел иметь рабочюю систему быстро, и выкачать другой дистрибутив для меня было гараздо проще, чем копаться в конфигурационных файлах и эксперементирования с драйверами. Тестировал версии от Tiger 10.4.1 до Leopard 10.5.5 различных сборок: iDeneb, Kalyway, Leo4All, iATKOS, JaS.
Приступим к установке.
Мы имеем записанй на DVD исталяцию хакинтош и ноутбук Acer Aspire 1650. Везде советуют записывать образ хакинтоща на болванку на минимальной скорости, что ж не игнорируйте этого, может это еще одно причина по которой у меня не поставились нокоторые сборки.
Загружаемся с нашего DVD. Установка должна запустится автоматически. Если началась загрузка с вашего жесткого диска, то либо вы не выставили в БИОС-е загрузку с DVD-Rom либо нужно воспользоватся "командным интерпретатором" загрузки ядра Mac OS. Для этого при загрузке жмем F8 как только загрузка доходит до выбора загрузочного раздела. Немного о командах который предаставляет этот интерпретатор:
-v - вывод расширеной информации в консоль (для получения места подвисания установки)
-x - однопользовательский режим
cpus= - жесткое указание кол-ва процессоров в системе
"Graphics Mode" - разрешение графичиского режима
утановка происходит в несколько логичных шагов, не забудте отформатировать ваш раздел жесткого диска на который будете ставить систему с помошью утилиты «Disk Utilites» в «Mac OS journaled» (это на шаге выбора установочного раздела). Вам не обязательно иметь «Apple ID» для завершения установки, просто пропустите тот шаг, где его спрашивают.

PS: Итак система установлена, но грузатся только при наличии диска в DVD-ROMе. У меня первой системой стоит Ubuntu, и загрузчик grub инсталяция хакинтоша совсем не попортила. Загружаем Ubuntu и из под суперпользователя (root) редактируем файл /boot/grub/menu.lst, добавляя в него строки:

  1. title          Mac OS Leopard 10.5.5
  2. rootnoverify   (hd0,0)
  3. makeactive
  4. chainloader    +1
  5. boot

где в строке «rootnoverify (hd0,0) » число в скобках после запятой означает номер раздела на который установлена хакинтош, hd0 — номер жесткого диска (тут всегда hd0).