Objective C и Android [закрываются]

Я только что закончил относительно крупный проект для Android, и он оставил горький вкус в моем рту со знанием, что он никогда не будет работать на одной из самых повсеместных гарнитур эта сторона солнечной системы (та тем фруктовым небольшим клубом).

Так, для моего следующего проекта я хочу записать это способом, который делает большинство компонентов легко мобильным между платформами Android и iPhone. Путем я думаю о выполнении, это путем кодирования большей части из него в Objective C и затем добавления определенных для платформы частей в большем количестве Objective C и Java соответственно. На стороне Android это потребует использования NDK.

Мое знание C хорошо, но мое знание Objective C близко к нулю, и у меня нет требования изучить C++. Насколько нормальный подход выше и является там лучшим? Есть ли какой-либо способ, которым я могу кодировать в Java и все еще добраться до оригинального рынка iPhone? И как, вероятно, это, что у людей, которых я знаю (пользователи iPhone) будет телефон на базе Android к следующему году?

18
задан Tom R 6 March 2010 в 21:56
поделиться

10 ответов

Сделайте шаг назад и подумайте, чем вы, по логике, сможете в конце концов поделиться.

Модели пользовательского интерфейса довольно разные, компоненты разные. В конце концов, вы могли бы поделиться с вами классами объектов данных, возможно, некоторыми алгоритмами. Это даже не похоже на то, что вы могли бы реально в конечном итоге поделиться сетевым кодом, как в старые времена, потому что вы не используете напрямую сокеты, вы используете библиотеки HTTP.

Так будут ли все усилия, которые вы вкладываете в это, в конце концов окупятся? Мне кажется, что конечным результатом будет хрупкий беспорядок, который трудно обновить, и он будет посредственным на обеих платформах вместо того, чтобы быть отличным на любой из них.

Почему вы пишете приложения? Чтобы облегчить жизнь вам или вашим пользователям?

22
ответ дан 30 November 2019 в 05:53
поделиться

Мое предположение, у которого нет опыта, подтверждающего это, заключается в том, что вы, вероятно, могли бы каким-то образом написать Obj-C с помощью Google NDK, учитывая, что GCC существует для ARM, является открытым исходным кодом, имеет Obj- Компилятор C и базовая среда выполнения Obj-C (которая, если она еще не может быть взломана для работы с новой архитектурой) и т. Д.

Это также может быть большой работой с сомнительной пользой.

И, конечно же, «Obj-C» (без классов NS ) означает нечто совсем иное, чем «Какао», что большинство людей на самом деле имеют в виду, когда говорят «Obj -С ". Возможно, вы сможете повторно использовать часть GNUstep для этого, но ... Честно говоря, я сомневаюсь в этом. Снова похоже, что нужно много работать.

Так что да, я думаю, что это возможно. Это также большая работа, и я не думаю, что она того стоит.

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

9
ответ дан 30 November 2019 в 05:53
поделиться

Другие говорили в основном это, но я хотел бы сделать это более явным. Лучше всего, вероятно, написать:

  1. Межплатформенные модели данных и основная логика, используя:
    • бит GNUstep (Obj-C), или
    • CF-Lite (C), или
    • Как хотите, если это кроссплатформенный: P
  2. Код интерфейса только для iPhone с использованием Cocoa Touch (Obj-C)
  3. Код интерфейса только для Android, однако они делают это для Android.

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

15
ответ дан 30 November 2019 в 05:53
поделиться

Я не уверен насчет Android, но с iPhone вы, по сути, можете писать на чистом C, если вы обернете его в классы Objective-C.

1
ответ дан 30 November 2019 в 05:53
поделиться

Objective-C без Cocoa не так полезен и не приблизит вас к созданию работающей кодовой базы iPhone. Вероятно, вам будет лучше написать свое ядро ​​на C с помощью Core Foundation и использовать Java или Objective-C для частей, специфичных для платформы. Apple предоставила открытый исходный код большой части Core Foundation как CF-Lite, и она бесплатно связана с Cocoa в OS X (т.е. вы можете использовать многие классы CF взаимозаменяемо с их аналогами из Cocoa).

11
ответ дан 30 November 2019 в 05:53
поделиться

Подходя к этому под другим углом ... Я знаю, что вы сказали, что вы хотел попробовать и придерживаться Java, но если вы знаете C #, то можете использовать фреймворк MonoTouch для iPhone. По сути, Mono - это реализация стека .Net с открытым исходным кодом. Команда Mono работает над переносом Mono на Android, чтобы вы могли написать общую библиотеку C # для своей бизнес-логики и иметь разные представления / контроллеры для каждой платформы. Конечно, все это будет на C #, и это немного дороже, но это решает проблему написания всего на разных языках.

Я считаю, что это называется MonoTouch на iPhone и MonoDroid на Android.

2
ответ дан 30 November 2019 в 05:53
поделиться

Среда выполнения Objective-C еще не была перенесена на Android. Это не должно быть слишком сложной работой, но все же, без рабочего знания языка я сомневаюсь, что вам будет легко ее перенести.

То, что вы пытаетесь сделать, будет сложно для общего приложения, но должно быть возможно для игр, если вы решите разрабатывать игру на простом C (который поддерживается как Android NDK, так и iPhone). Вам придется написать некоторый "клейкий" код для передачи входных событий из сред Obj-C и Java в код на C, но это не должно быть большой проблемой - Objective-C позволяет напрямую вызывать код на C, и есть много примеров проектов, которые делают именно это для Android.

1
ответ дан 30 November 2019 в 05:53
поделиться

Я еще не пробовал сам и не закончил смотреть доклад, но на YouTube есть доклад Google Tech Talk по разработке приложений для iPhone с помощью Java, который выглядит довольно многообещающим.

1
ответ дан 30 November 2019 в 05:53
поделиться

Если вы можете подождать до конца этого года (точное время неизвестно), у Adobe будет AIR для Android и компилятор для iPhone. Таким образом, вы можете написать приложение в AIR для Android и использовать большую часть того же кода для компиляции на iPhone.

http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/

Даже если вам не терпится узнать: http://www.insideria.com/2008/12/actionscript- to-cocoa --- protot.html , где объясняется сходство между ActionScript и Cocoa.

Также посетите: http://labs.adobe.com/technologies/air2/ для версии AIR, способной использовать сенсорный экран.

Так что скоро вы сможете написать один раз и развернуть на Android и iPhone с помощью ActionScript 3.

0
ответ дан 30 November 2019 в 05:53
поделиться

XMLVM - это проект, который может переводить (некоторые) приложения Android на iPhone. Для получения дополнительной информации посетите http://xmlvm.org/android/

1
ответ дан 30 November 2019 в 05:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: