Как стать автором
Обновить

Комментарии 20

Заинтересовался разработкой с помощью PhoneGap. Я правильно понимаю, что приложение пишется на js+html с использование библиотечных функций phoneGap, которые предоставляют доступ к нативным функциям платформ? Т.е. после написания нужно лишь откомпилировать приложение под определенную платформу, и оно будет работать? Или нужно сделать что-то ещё?
Да, все верно, все очень просто, пока не полезут такие проблемы как у меня. Тогда гугл, гугл и еще раз гугл :) и конечно документация по SDK и платформе.
Может я чего-то еще недопонял, но от Phonegap смешанные чувства. С одной стороны, js/html позволяют ускорить разработку, а открытость исходников еще и греет душу, но: 1) как же нативный интерфейс? хотя бы меню… 2) как ускорить компиляцию — уж больно долго phonegap.jar конвертируется в classes.dx, нативное приложение компилится на глаз быстрее 3) с жизненным циклом activity все в порядке будет если использовать phonegap? когда сохранять данные?
Да, видимо разбираться и разбираться мне еще…
1. можно реализовать нативные вещи в виде плагина на яве с апи в яваскрипт. Посмотри исходники плагинов, там все достаточно просто.
2. работаю на 5 летнем ноутбуке, особых тормозов не заметил. Проблема была с отладкой в эмуляторе. Приложение сделанное под старый апи там не работало. Поэтому отлаживался на телефоне. Последнюю версию еще не смотрел. Может она работает в эмуляторе.
3. о разных сменах состояния приложение уведомляется ивентами, так что проблем не должно быть. Список событий можно расширить, как это проделал я.
Забудте про активити. Phonegap — скомпиленая нейтив заглушка, которая в себе просто открывает встроенный браузер смартфона, с html+css+js файлами. Вот и весь Phonegap.
Никакой встроенный браузер не открывается, по крайней мере на iPhone и Android (с другими дел не имел). Если говорить про Android, то все PhoneGap приложение крутиться внутри одной активности с единственным виджетом — WebView. Последний предоставляет рендеринг html и исполнение JS.

Если говорить про написание нативных плагинов — на это WebView можно накидать много чего дочернего, т.к. оно наследует AbsoluteLayout (осторожно, depricated!).
WebView — это компонент со встроенным браузером смартфона.
1) Нативный интерфейс не может быть кроссплатформенным (того же меню на iOS к примеру нет).
2) PhoneGap.jar — это набор классов для организации моста JavaScript — Java с доступом к телефону, чем больше классов, тем дольше компиляция, это нормально. Любое другое приложение с большим кол-во классов или библиотек будет долго компилироваться.
3) PhoneGap — это одно Activity c WebView внутри (за исключением работы некоторый плагинов), а данные сохраняются в LocalStorage.

PhoneGap — это оболочка для запуска html5-application на различных платформах. В идеале написанное html5-application должно работать точно так же и при простом заходе через браузер, не даром в документации можно увидить, что методы точно такие же, как и в обычном js (взять к примеру работу с LocalStorage или sqlite)
1) Да, хотя это несколько сужает круг использования PhoneGap. Почему-то в библиотеки имитирующие нативный интерфейс мне не верится. А делать меню/настройки/диалоги через плагины — теряется вкус легкой жизни с Phonegap.
2) Я понимаю, что добавление новых классов замедляет сборку, но от сборки к сборке я изменяю только «assets/www», ни один *.java не изменяю — кажется достаточно только перепаковать архив .apk? Ведь classes.dx остается неизменным.
3) Да, после работы с Андроидом чё-то даже не подумал что данные можно сохранить тогда когда это нужно приложению, а не системе :)
Не кроссплатформенно у вас кое-где получилось, наверное вам это не сильно нужно, но раз уж выбрали средства для кроссплатформенной разработки, то мне кажется их нужно придерживаться.

localstorage в ie9 с локального домена не будет работать. Там для хранение сетингов наверное должно быть что-то поверх isolated storage(изолирование хранилище или БД), которое предоставляет ос для приложения.
Так как это приложение чисто для персонального использования, то кроссплатформенностью я не замарачивался. Приложение нельзя выставить для раздачи, т.к. оно использует данные «с душком».
Для хранения можно воспользоваться апи, который предоставляет платформа — storage.
Но, как говорится, «вам шашечки или ехать?» мне — ехать, поэтому я воспользовался более удобным интерфейсом.
ну я так просто на всякий пожарный вдруг полезно окажется.
НЛО прилетело и опубликовало эту надпись здесь
Адоби его не покупали.
НЛО прилетело и опубликовало эту надпись здесь
Если в приложение надо встроить сканер штрих-кодов, то ка поставляются плагины?
1) Для каждой из платформ свой плагин. Тогда как будет работать приложение запущенное на WP7 и BlackBerry, если для этих платформ плагинов нет?
2) Или же один «универсальный» палагин сразу на все платформы? Как компилируется исходник плагина?
Вы ж под каждую платформу будете делать отдельное приложение. Каждая платформа имеет свой цикл разработки и поддерживаются разные языки. iPhone — objective C, Android — java, WP7 — silverlight и т.д. Поэтому да — разные платформы, разные плагины. Но плагины могут обеспечивать одинаковый апи для яваскрипта. Так что в приложении будет универсальный код.
Если плагина нет, то надо будет писать самому или искать код, который переделать в плагин.
Погодите, а как html+js приложение взаимодействует с базой данных словаря? Из js можно к sqlite обращаться? Или у вас он в офлайне не работает?
Ответ ниже
Да, у phonegap есть интерфейс для работы с базой данных. Но это не мой случай. У меня нет базы слов. Если бы была, то и огород не стоило городить. У меня словарь состоит из сканированных со словаря страниц. Он показывает картинки. Картинки могут лежать в папке на телефоне или в онлайне на сервере.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории