Есть ли способ разработать настоящие мобильные кросс-платформенные приложения NATIVE без переноса вещей?

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

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

Причина, по которой я хочу создать собственное родное приложение:

  • Скорость и компактность
  • Избегать проблем с браузером.
  • Принятие на рынок
  • Избегайте легкого /'script kiddie "обратного проектирования

Продукты, которые я пробовал:

  • Appcelerator (не работает корректно в моей системе)
  • PhoneGap (не создает реальные приложения REAL)
  • Embarcadero radPHP EX2 (использует PhoneGap)
  • Embarcadero radStudio EX2 (не может создавать мобильные/андроидные приложения?)
  • Adobe Flash Builder (работает очень хорошо, но полагается на Air, поэтому приложения огромны и нет нативные устройства, такие как вибрация (возможно, но должны писать самостоятельно)
  • Разработка Flash (но такая же, как Adobe Flash Builder)
  • ..... и некоторые другие;-) как moSync......

В настоящее время я загрузил "RhoStudio", но у него есть некоторые сомнения, потому что во вступительном видео они рассказывают о вещах, которые мне не нужны.

Целевые направления - это, в первую очередь, Android, iOS и, возможно, в будущем Windows Phone. Примечание. У меня нет Mac, поэтому я не могу скомпилировать его на Mac.

Я хочу, чтобы это было невозможно, или есть такой продукт, который может это сделать?

EDIT: См. Мой ответ, ответ НЕТ!

Ответ 1

Спустя 2 года, задав этот вопрос, я могу сказать: "Нет, это невозможно, это миф".

Все продукты, которые я пробовал, используют какую-то упаковку или используют второй язык в качестве слоя для вызова родного материала. Хотя библиотеки являются родными, основной программой нет. Последний ответ Cosku с smartface.io - хороший пример, они утверждают, что он является родным, но это НЕ.

Почему так сложно? Проблема заключается в том, что язык программирования (различия в языке, который делает его сложным), который требуется для платформы. Слишком сложно перевести второй язык на основной язык платформы и конкретные библиотеки, вы можете добиться этого только путем объединения вещей с помощью собственных двоичных файлов. Второе препятствие - это необходимый компилятор, который должен иметь возможность запускать межплатформенную платформу.

Но зачем полагаться на второй язык или сторонний инструмент разработки для создания приложений, когда вывод в основном тот же, плохой, проблема совершенно проиллюстрирована на этом изображении: http://xkcd.com/927/

Изображение о стандартах, но это то, что происходит, создавая новый стандарт для стандарта. Например, при использовании PhoneGap вы должны изучить основы API PhoneGap. Вы полагаетесь на "новый стандарт", вызывающий PhoneGap. Проблема в том, что вы полностью полагаетесь на поддержку PhoneGap и ее существование. Он может ввести вторую слабость в жизненном цикле приложения.

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

Сегодня я создаю и проектирую пользовательский интерфейс приложения в самом длинном существующем и стабильном "языке" HTML с интерфейсом javascript. Приложение также может запускаться в браузере и не прерывается, если отсутствует какая-то конкретная функция, например, вибрация. Вы не можете получить те же самые результаты с помощью телефонного разговора, попробуйте! Вы можете проектировать приложение с помощью гибких методов, как обычный веб-сайт (попробуйте это в Android, например;-)). Технически, он может работать везде, на любой платформе в браузере или в веб-браузере, но не использовать специальные мобильные javascript-библиотеки! Вам не нужны эти специальные библиотеки, действительно, используйте вместо них "нормальные" версии.

Я написал компилятор /obfuscator, чтобы он "упаковывал" UI-источник в один файл, который будет загружен родной оболочкой. Это необходимо для защиты источника, поэтому просмотреть или изменить источник нелегко.

Единственное, что мне нужно сделать, чтобы поддерживать платформу приложений, это написать для нее встроенную оболочку. Если платформа по какой-то причине умирает (например, Windows Mobile в прошлом), мне нужно написать новую оболочку для нее. Это проще сделать, чем написать всю программу с нуля. Кроме того, когда есть новая платформа, она также может работать и в браузере платформ.

Если ваше приложение не полагается на конкретное оборудование (например, игру) или может работать без особых требований к оборудованию, это способ расширить жизненный цикл вашего приложения. Используйте HTML5 и javascript для разработки графического интерфейса и использования родной оболочки для использования определенных функций ОС.

Это медленно? Я должен сказать "нет". По крайней мере, не используйте громоздкие и раздутые специальные материалы для мобильных javascript-библиотек и не используйте событие click на сенсорных устройствах, вместо этого используйте touchstart. В наши дни также улучшаются возможности HTML-движков и улучшена поддержка функций HTML5, которые позволяют писать мощные веб-приложения HTML5 без необходимости реализации этого на родном языке.

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

Ответ 2

Для кросс-платформенных приложений на базе iOS, Android, Mac и Windows проверьте Xamarin. Код в С#, скомпилировать в native. Для iOS вы можете использовать инструменты XCode для макета приложения, а Xamarin Studio очень хорошо интегрируется с ним.

И для полноты, PhoneGap имеет достойного (да, WebView) конкурента в TRIGGER.IO. В то время как он приближается, похож на PhoneGap/Cordova, он улучшает API для доступа к родным функциям, упрощает push-уведомления и выполняет намного более быструю разработку облаков.

Я никоим образом не связан ни с одним из этих продуктов... Мне просто нравятся оба.

Ответ 3

Вы пробовали www.codenameone.com? Это открытый исходный код, основанный на java, требуется только создание затмения или netbeans.

Ответ 4

Во-первых,

Appcelerator (does not work correctly on my system)

Есть ли какая-то проблема с вашей стороны? получают java-ошибки или что-то еще, возможно, не были правильно настроены.

Короткий ответ - нет, для этого нужно иметь некоторый уровень абстракции, java и objective-c - это совершенно разные языки, а также Android и IOS SDK, имеющие разные методы, процедуры, стили, дизайн и т.д. Нет никакого способа заставить что-то работать на обоих без наличия среднего слоя для преобразования или рендеринга.

Appcelerator будет тем, что вы ищете, поскольку он не является оболочкой веб-обозревателя, как другие, правда, он интерпретирует javascript, но поскольку его не завернутый в веб-просмотр, вы избегаете проблем с браузером.

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

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

Если вы хотите использовать IOS, вам понадобится Mac, если вы хотите публиковать его в магазине приложений, вам нужен xcode и встроенный проект для использования загрузчика приложений, я не знаю ни одного инструмента (даже веб-просмотра обертки), которые не требуют, чтобы у вас был SDK IOS, поскольку он не может работать в симуляторе, упаковывать приложение или запускать любой из кода без него.

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

Ответ 5

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

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

Я не думаю, что можно писать один раз и работать везде без какой-либо обертки или слоя, это связано с тем, что каждая платформа имеет отдельные API и даже языки программирования. Например, вам будет сложно написать один набор исходных кодов, который запускается изначально как на устройствах Apple, так и на Android. Это не означает, что это технически невозможно, настольные операционные системы в течение многих лет имели такую ​​кросс-компиляционную переносимость с C/С++, и Java только упростил это. Конечно, инженеры мобильных операционных систем, похоже, не разделяют видение совместимых API.

В заключение я бы порекомендовал A) написать приложение дважды (ужасно, я знаю, но он обеспечит достоверность собственного исполнения на обоих устройствах и может быть выполнен с минимальной болью) или B) разрушение и использование одного из "script -kiddie". На самом деле это может быть не так уж плохо, если ваше приложение достаточно простое, и, возможно, оно совсем не обратное. Если у кого-то есть предложения относительно лучшей "кросс-платформенной платформы", это было бы полезно.

Ответ 6

Ну, есть несколько вещей, которые следует учитывать, если вы хотите, чтобы внешний вид и внешний вид были такими, как Sencha (www.sencha.com) и пользовательский интерфейс Kendo (http://www.kendoui.com/), которые имитируют его JavaScript сторона. Я обнаружил, что они оба хороши на Android и iPhone, но пока не поддерживают Windows Phone.

Если вы ищете реальные виджеты в сочетании с HTML, вы можете посмотреть в пользовательский интерфейс MoSync (http://www.mosync.com/documentation/manualpages/jsnativeui-library), который поддерживает интерфейс Windows Phone Metro UI, или Титан (http://docs.appcelerator.com/titanium/2.1/index.html).

В любом случае, вы можете использовать такие пакеты, как Phonegap или MoSync или AppMobi (которые, я думаю, используют что-то похожее на сборку PhoneGap), чтобы обернуть ваше приложение и разместить его на рынках App. из этого списка PhoneGap специально не предназначен для предоставления вам каких-либо специфических функций пользовательского интерфейса, хотя я видел некоторые попытки добавить плагины плагинов в Phonegap.