Вот этот проект собрал в релизе (это базовый 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, но размер этого файла зависит от вашего кода и подключенных фреймворков в проекте (на сколько я заметил).
Да я прямо говорю. Вместо того, что бы писать на языке существующем только на одной платформе и потом с костылями переносить на другие стоило бы сразу писать на кросс платформенных языках.
Собрать 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-х одинаковых проектов на разных языках — это полный бред
Штуковина интересная, есть ли где-то описание, что там под капотом, или везде глухо и проприетарно?
Если я верно понял, в продукте есть библиотека, реализующая Foundation, UIKit и прочие радости для компиляции их под дроида. Если так, то производительность будет чуть хуже совсем нативной (NDK).
Компилирует это дело тот же clang, который делает это для родной среды? Как с поддержкой ARC? Как реализуется поддержка разных разрешений экранов без эмуляции?
clang, есть ARC.
UIKit реализован с помощью OpenGL, если я не ошибаюсь, где-то читал.
Для разных экранов расширен UIScreenMode, который почти сам подбирает размер.
А как насчет поддержки Xib/Storyboard из UIKit? У меня есть простенькая игрушка, но Cocos2d там используется в паре с CCViewController только на одном экране. Все остальное — менюшки всякие и т.п. — на Storyboard. Спортирует оно его?
Поддерживаю. Будь это открытый проект — взял бы не задумываясь. Моральный долг бы вернул как минимум кодом, возможно даже донатом. А так, моё мнение на счёт этого — вытягивание денег из менеджеров, руководящих разработчиками.
Если вы портируете 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 — плати денюжку, ну тут уж никуда не деться… Либо пользовать сторонние фреймворки изначально, надеясь на бесплатность и портируемость.
Потратил пол-дня на игры с сабжем- штука, безусловно, весьма и весьма достойная, но, для портирования больших бизнес-приложений с глубоким использованием UIKit пока не годится. Лэйауты рвутся на части, всевозможные хаки не отрабатывают или отрабатывают очень криво.
А так, «автор, пиши еще». С легкостью расстался бы с $1K за возможность сэкономить 1000 ч/ч на портировании (:
Вот тут www.kickstarter.com/projects/203272607/gnustep-project пишут что внутри это базируется на опенсорс библиотеке GNUStep. То есть они используют LGPL код, очевидно со своими патчами. Дают ли они сырцы этих патчей всем, кто скачал их продукт?
Apportable SDK — Objective-C/Cocoa Touch для Android