Статьи

Совместимость PhoneGap / Cordova для Codename One

Мы только что выпустили первую версию открытого проекта CN1Cordova на github. Это означает, что вы можете взять обычное приложение Cordova / PhoneGap, импортировать его в NetBeans и создать собственное приложение, используя наши серверы облачной сборки без каких-либо изменений!

Прежде чем мы углубимся в точный процесс преобразования приложения, давайте начнем с обзора точных преимуществ, которые разработчики PhoneGap / Cordova могут получить от Codename One. Вы также можете ознакомиться с видеоуроком и слайдами ниже.

Почему я хочу конвертировать?

Какие преимущества имеет Codename One для разработчиков PhoneGap / Cordova?

Построить облако на стероидах

Codename One предоставляет облако сборки, похожее на сборку PhoneGap, только намного более продвинутое. Он может переводить байт-код Java в нативный, что позволяет вам писать большую часть вашего «нативного» API в Java вместо того, чтобы писать его снова и снова для каждой платформы.

Лучшая поддержка родного кода

Вы можете и должны писать свой «родной» код на Java, что устраняет необходимость писать код Objective-C / Swift при создании плагина. Тем не менее, вы все равно можете использовать cn1lib и нативный интерфейс для реализации практически чего угодно, используя настоящие нативные вызовы для Objective-C, Dalvik / ART.

Лучшая защита IP

Приложения Cordova / PhoneGap — это просто набор файлов HTML / JavaScript и CSS. Поскольку нативная упаковка представляет собой «просто zip-файл», она привела к тому, что коттеджная индустрия распаковывала такие приложения и перепродавала их через другие аккаунты / магазины.
Это гораздо сложнее сделать для скомпилированных приложений, что делает Java-код в Codename One более непрозрачным для случайного хакера. Если ваше приложение содержит чувствительную логику, вы можете закодировать ее на Java для дополнительной безопасности. Мы также рассматриваем усиленную версию интеграции PhoneGap, которая зашифрует файлы, делая процесс еще более безопасным.

Интеграция IDE Java — JavaScript — HTML

NetBeans имеет замечательную поддержку JavaScript и html / css. Он также поддерживает все распространенные веб-фреймворки, такие как реагирующий, угловой и т. Д., При этом будучи полностью бесплатным …
NetBeans также является одним из лучших Java IDE на рынке, и наличие единой всеобъемлющей среды является огромным преимуществом.

Легко, не требует Mac, автоматизирует сертификаты / подписи

Среда Codename One работает на Mac, Linux и Windows без проблем. Одной из «убойных функций» Codename One является мастер сертификатов, который делает обычный кошмарный процесс подписания приложения iOS доступным.

Миграция на Java

Если ваша команда предпочитает Java, вы можете переходить к Java-приложению поэтапно или даже интегрировать части, написанные на Java, с элементами Cordova.

Каковы ограничения?

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

Поскольку нативная реализация плагинов в Codename One сильно отличается от нативных плагинов в PhoneGap / Cordova, для переноса плагинов потребуется ручная работа. К счастью, поскольку большинство функциональных возможностей плагинов уже поддерживаются в базовом Java-API Codename One, для большинства случаев это довольно тривиальная работа.

В настоящее время компонент браузера, используемый в Codename One, основан на компоненте браузера JavaFX, который довольно ужасен. Он основан на webkit, но имеет много ограничений в отношении полного соответствия HTML5 и неправильно определяет такие вещи, как пользовательский агент. Это работает с большинством фреймворков JavaScript правильно, хотя.
У нас есть планы заменить этот компонент более зрелым браузерным компонентом на основе хрома, если интерес сообщества достаточен, чтобы оправдать усилия.

Почему ты не сделал это раньше?

Мы были (и все еще) обеспокоены путаницей. Codename One использует довольно сложную архитектуру преобразования байт-кода в нативный код. Это связано с конвейером рендеринга на основе OpenGL ES и микшированием собственных виджетов.
Но затем мы добавили такие вещи, как поддержка JavaScript, которая использует TeaVM и наш собственный набор сложных библиотек для упрощения работы с WORA (Write Once Run Anywhere). На этом этапе, когда многие другие проекты шумят о кроссплатформенной мобильной разработке, мы пришли к выводу, что «избегать путаницы» не является достаточно разумным аргументом.

Означает ли это смещение фокуса на кодовое имя один?

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

Портирование приложения Cordova / PhoneGap в кодовое название One

Предварительные условия для этого: IDE NetBeans , JDK 8 (не Java JRE .. JDK!) И Apache Ant .
Скачайте cn1-cordova-tools.zip и распакуйте его.

Из терминала или командной строки:

$ cd cn1-cordova-tools
$ ant create -Dsource=/full/path/to/cordova/app

Примечание: убедитесь, что вы используете Java 8, а если нет, убедитесь, что переменная среды JAVA_HOME указывает на домашний каталог Java 8, иначе вы можете получить UnsupportedClassVersionError. Также убедитесь, что вы используете полный путь к приложению Cordova, а не короткий путь, иначе это не сработает (никаких относительных путей и т. Д.).
Это создаст проект Netbeans в каталоге cn1-cordova-tools с настройками (идентификатор пакета и имя), соответствующими приложению, указанному в -Dsourceаргументе. Содержимое wwwкаталога приложения будет скопировано в src/htmlкаталог проекта .

Вы можете открыть этот проект в NetBeans и начать работу над ним. Вы сможете запускать и отлаживать исходные файлы Java в проекте. Чтобы отправить облачную сборку или изменить конфигурацию проекта, просто используйте меню правой кнопки мыши и выберите правильные параметры.

Как уже упоминалось выше, плагины не будут импортированы. Если в приложении установлены плагины, вы увидите напечатанное предупреждение.
В будущих версиях должна быть добавлена ​​поддержка этого в некоторой форме (например, замена хорошо известных плагинов на плагины Codename One). В Codename One уже есть поддержка для разработки плагинов Cordova и их распространения в виде cn1libs (собственный формат библиотеки / плагина Codename One). Мы опубликуем инструкции для этого по мере развития интеграции.