Как стать автором
Обновить

Комментарии 36

клево, а как с производительностью дела обстоят?
И ещё интересно насколько вырастет объём скомпилированного приложения после переноса в Android
Вот этот проект собрал в релизе (это базовый template из Xcode с GLKit + небольшое дополнение)
apk — ~7mb (из них ресурсы чуть меньше 1mb)

После распаковки apk, библиотеки занимают 14,7 mb (libBridgeKit.so, libcxx.so, libdispatch.so, libffi.so, libFoundation.so, libobjc.so, libOpenAL.so, libpthread_workqueue.so, libSystem.so, libv.so, libverde.so).

Самая большая libFoundation.so — 5.2mb
libverde.so у меня получилась 5.5mb, но размер этого файла зависит от вашего кода и подключенных фреймворков в проекте (на сколько я заметил).

Программа на устройстве занимает 24.64 mb.
Я не замечал дропа fos на сложных нагружённых OpenGL приложениях, но тут тяжело сравнивать — все таки айфоны и топовые андроиды по мощности разные
Чего только не изобретут, лишь бы не учить указатели и адресную арифметику.
Намекаете на С/C++ и Android NDK?
Да я прямо говорю. Вместо того, что бы писать на языке существующем только на одной платформе и потом с костылями переносить на другие стоило бы сразу писать на кросс платформенных языках.
Дело не в языках, а фреймворках системных. Основная проблема в них. Собрать Hello World на ObjC в принципе под Android не проблема, думаю.

P.S. не понял шутки про указатели и адресную арифметику. В Obj-C, как надмножестве C, все это есть.
Собрать Hello World на ObjC в принципе под Android не проблема, думаю.
Да, под андроид собирает GCC, а он умеет компилировать Obj-C. Но, как вы правильно сказали, все проблема в завязанности кода на фреймворке. В итоге пересобрать такой код под андроид очень проблематично. Если бы писалось на С\С++ то большинство связей с этими фреймворками удалось бы избежать.
Ну и собрать Obj-C под андроид получится. А когда захочешь перенести на Win Phone, что делать тогда? Потому я считаю использование Obj-C\Java признаком низкой квалификации.
Поддерживаем примерно 100к строк кода для iOS/Android, 90% этого хозяйства — C++. Мнение тимлида: «Лучше бы это было Java/ObjC». Почему? «Дешевле, нормальный C++ слишком сложен, а потому дорог.»

С другой стороны, C++ и выбран по причине возможности портирования на что угодно.

Но в итоге по подсчётам взять один язык и делать бы порты обошлось в такую же сумму человекочасов, умноженных на квалификацию. Выбор прост. Есть люди и средства — можно делать красиво. Нет людей или средств — приходится делать как получается. Второй вариант к сожалению проявляется чаще.
2 code base — в 2 раза больше кода поддерживать, в 2 раза больше возможностей ошибок и граблей, в 2 раза больше специалистов по разным языкам. Ни разу не звучит, как умное решение.

Дешевле, нормальный C++ слишком сложен, а потому дорог.
Точно эту же фразу можно сказать о любом другом языке.

Но в итоге по подсчётам взять один язык и делать бы порты обошлось в такую же сумму человекочасов, умноженных на квалификацию.
Это утверждение в корне неправильно. Может, сделать что-то простое и забыть обошлось бы в ту же суму, но поддержка проекта занимает куда больше времени, чем его написание. А поддержка 2-х одинаковых проектов на разных языках — это полный бред
А речи о двух базах и не шло, речь шла о том, чтобы взять одну и использовать инструмент вроде того, что представлен в статье.
Если нужно хоть сколь работать с особенностями ОС (а без этого полноценное приложение не создашь), то без Obj-C/Java не обойдешься.
У меня в игре 50к+ строк кросс платформенного С\С++ кода. Игра работает под РС и iOS. Obj-C кода 150-200 строк. Что я делаю не так?!
Для игр Вы все делаете так. Но бывают не только игры.
Штуковина интересная, есть ли где-то описание, что там под капотом, или везде глухо и проприетарно?

Если я верно понял, в продукте есть библиотека, реализующая Foundation, UIKit и прочие радости для компиляции их под дроида. Если так, то производительность будет чуть хуже совсем нативной (NDK).

Компилирует это дело тот же clang, который делает это для родной среды? Как с поддержкой ARC? Как реализуется поддержка разных разрешений экранов без эмуляции?
clang, есть ARC.
UIKit реализован с помощью OpenGL, если я не ошибаюсь, где-то читал.
Для разных экранов расширен UIScreenMode, который почти сам подбирает размер.
Не глухо, не проприетарно. Почти все — опенсорс патчами, патчи уже отданы в апстрим
Кто нибудь уже пробывал ?? Как кросс платформенный код тяжелло поддерживать ??
А как насчет поддержки Xib/Storyboard из UIKit? У меня есть простенькая игрушка, но Cocos2d там используется в паре с CCViewController только на одном экране. Все остальное — менюшки всякие и т.п. — на Storyboard. Спортирует оно его?
Мда, ценники на платные версии не слишком гуманные. 'Indie' за $1000 выглядит неудачной шуткой.
Поддерживаю. Будь это открытый проект — взял бы не задумываясь. Моральный долг бы вернул как минимум кодом, возможно даже донатом. А так, моё мнение на счёт этого — вытягивание денег из менеджеров, руководящих разработчиками.
Если вы портируете iOS приложение на Android — скорее всего, на iOS оно окупилось, иначе такое портирование было бы сомнительно. Я не считаю ценник в 1000$ гуманным, но и слишком задранным тоже. Если этот SDK будет хорошо выполнять свою функцию, то можно и разориться. Опять же, список клиентов внушает уважение, а на сайте сказано о том, что можно запросить триал для платных пакетов.
По поводу своего опыта — не поленился, скачал и прогнал через SDK свою еще не доделанную Cocos2d игру. Пришлось повозиться с отключением Flurry и пары других либ, которые в бесплатной версии не поддерживаются, но что важно — она запустилась и хорошо заработала! Музыка, анимации, эффекты — все пашет. Конечно, сразу в глаза бросаются куча шероховатостей, но лучше заплатить и две недели отшлифовывать игру, чем портировать с нуля месяца 2-3.
PS: исключительно личное мнение, не реклама, не холивар))
Я не считаю ценник в 1000$ гуманным, но и слишком задранным тоже.

Я говорил про все цены, там еще и Pro есть (хотя, конечно, обычному разработчику она вряд ли понадобится, за такую разницу в цене), а второе предложение было отдельно про название 'Indie', оно обычно не соотносится с раскрученными и прибыльными играм, скорее с начинающими разработчиками, считающими каждую копейку. В любом случае, это их право назначать цены, я просто озвучил мысли вслух.
Такая-же фигня. Тупо попробовал бесплатную версию на своем проекте (пока в разработке), оно скомпилилось и запустилось. Да, есть глюки. Но оно живет! Отладить остальное — дело недели-двух. При чём я не пользовал никаких сторонних фреймворков. Двигло своё. Писал все на obj-c. TouchXML скомпилился без проблем. Если гама попрет на айосе, то спортировать на ведроид будет пустяково, пусть даж и за штуку.
Практически 100% любых надобностей покрывает бесплатная версия. Есть что-то в инди версии, что вам нужно, но вы не можете себе позволить? Пишите в личку, обсудим.
Пока нет, но работаю над iOS версией, не игра, а приложение с MapKit, так что бесплатной, видимо, не хватит, да и смысла для такого (пока) небольшого приложения нет, хотя, конечно, идея получить андроид-версию минимумом усилий интересна.
Велика вероятность того, что к тому времени как вы закончите, вам хватит бесплатной версии — она планируется к расширению в скором будущем
Это хорошо, я в любом случае буду следить за проектом.
А вот если приложение совсем бесплатное, ни рекламы, ни внутренних покупок и на IOS оно только в планах? Если хочется одновременно запустить на андройд и на иос, 1000 у.е. как то уж больно кусается. Сделайте бесплатную версию для бесплатных приложений без коммерческой выгоды, ну а с нашей стороны (думаю желающих найдется не мало), отзывы, поддержка в нужный момент и т.д.
Как обстоят дела с портированием аппаратных функций (камера и прочие)?
У них есть бесплатная версия, но тянет ведроид от 4.0 и выше. Я чуть выше отписал как я попробовал свой еще не доделанный проект компильнуть. Надо 2.0 — плати денюжку, ну тут уж никуда не деться… Либо пользовать сторонние фреймворки изначально, надеясь на бесплатность и портируемость.
Извините, а как дела с CoreData?
Поддерживается.
Потратил пол-дня на игры с сабжем- штука, безусловно, весьма и весьма достойная, но, для портирования больших бизнес-приложений с глубоким использованием UIKit пока не годится. Лэйауты рвутся на части, всевозможные хаки не отрабатывают или отрабатывают очень криво.

А так, «автор, пиши еще». С легкостью расстался бы с $1K за возможность сэкономить 1000 ч/ч на портировании (:
Работы над улучшенным UIKit ведутся, ждите новостей.
Вот тут www.kickstarter.com/projects/203272607/gnustep-project пишут что внутри это базируется на опенсорс библиотеке GNUStep. То есть они используют LGPL код, очевидно со своими патчами. Дают ли они сырцы этих патчей всем, кто скачал их продукт?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории