Вопрос по iphone, objective-c, mobile – Общая библиотека для iPhone и BlackBerry

4

У меня есть набор функций (классов), которыми я хотел бы поделиться с приложением, которое я создаю для iPhone и Blackberry (Java). У кого-нибудь есть лучшие практики в этом?

Ваш Ответ

4   ответа
4

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

Вы можете попытаться обернуть разделы API, специфичных для платформы (iPhone SDK и т. Д.), Которые вы используете со своими собственными интерфейсами. При этом вы эффективно скрываете библиотеки, специфичные для платформы, и облегчаете управление своим дизайном и кодом при работе с различиями в платформах.

Имея это в виду, вы можете написать свой основной код приложения, чтобы он выглядел очень похожим на любой платформе - даже если они написаны на разных языках. Я считаю, что Java и Objective-C концептуально очень похожи (по крайней мере, на том уровне, на котором я их использую), и я ожидаю, что смогу достичь паритета, по крайней мере, со следующим:

  • An almost identical set of Java and Objective-C classes with the same names and responsibilities
  • Java/Objective-C classes with similarly named methods
  • Java/Objective-C methods with the same responsibilities and logical implementations

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

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

4

Это не будет возможно, насколько я понимаю ваш вопрос - двоичный формат для iPhone и Java не совместимы - и даже для нативной библиотеки на устройстве Blackberry.

Это не похоже на сборку для OS X, где вы можете использовать Java, к сожалению, iPhone не поддерживает Java.

Лучшая идея, вероятно, состоит в том, чтобы собрать свою библиотеку в Objective-C и затем перенести ее на Java, что является более простым переходом, чем другой путь. Если вы программируете для Objective-C и убедитесь, что в вашем коде нет утечек памяти, то изменения не так сложны.

Если вы сохраняете структуру ваших классов одинаковой, то вы должны найти обслуживание намного проще - исправьте ошибку в Java, и вам будет легко найти такую же ошибку в методах ObjC и т. Д.

Надеюсь, это поможет - извините, что это не все хорошие новости.

Это помогает. Я немного отредактировал свой пост. Я больше ищу лучшую практику, чем возможность поделиться двоичным файлом. Указание на утечку памяти - это именно та информация, которую я ищу. Cody C
Я согласен с teabot - все, что вы можете сделать, чтобы сделать дизайн похожим, будет большой победой.
3

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

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

Парадигмы API пользовательского интерфейса и удобства использования для BlackBerry и iPhone настолько отличаются, что в большинстве случаев невозможно напрямую перенести такую логику между приложениями. Самая большая ошибка, которую можно сделать (на мой взгляд), состоит в том, чтобы попытаться перенести пользовательский интерфейс, разработанный для одной мобильной платформы, на другую. То, как люди взаимодействуют с BlackBerrys и iPhone, очень отличается, поэтому будьте готовы обновить пользовательский интерфейс для каждой мобильной платформы, на которой вы хотите развернуть.

Надеюсь, это полезно.

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

Можно написать код C ++, который работает как в приложении BB10 Native, так и в приложении iOS. XCode должен видеть файлы C ++ как код ObjectiveCPP.

В настоящее время я работаю над такой задачей в свободное время. Я еще не выполнил это достаточно, чтобы показать или узнать, возможно ли это на самом деле, но я еще не сталкивался с какими-либо препятствиями.

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

Моя общая схема такова, что у меня есть «класс Foo» для выполнения кроссплатформенных вещей и класса FooPlatform. делать специфичные для платформы вещи. Класс & quot; Foo & quot; можно вызвать класс "FooPlatform" который абстрагирует что-то конкретное от платформы.

Необработанный кроссплатформенный код сам по себе не компилируется. Отдельные проекты BB10 и XCode создаются в соответствующих IDE. Каждый проект реализует тонкую (несколько [дюжину] строчек) «класс FooPlatform». и ссылается на сырой кроссплатформенный код.

Когда я получу что-то, что смогу показать, я снова напишу здесь ...

Также см. Официальное "Положение RIM" о переносе приложений с iOS на BB10 ". страница:developer.blackberry.com/native/beta/documentation/…   Прочитайте подтемы этой темы ...

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