Разработка с помощью Eclipse и Phonegap/Cordova 3

Кажется, что документация немного тонкая, и я уверяю вас, что пытался найти ее в Интернете, но я действительно не понимаю, как процесс разработки должен работать с phonegap и eclipse.

Я следовал одному из многих руководств и создал пример Hello World, используя командную строку Cordova. Затем я добавил платформу Android и запустил сборку. После этого я добавил бит andoridy в качестве проекта в eclipse по отношению к существующему источнику в соответствии с инструкциями с использованием подкаталога platform/android. Это позволило мне настроить эмулятор, и все работало очень хорошо.

Проблема, которая у меня сейчас есть, связана с процессом разработки.

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

Итак, мой вопрос: могу ли я использовать eclipse для разумной разработки этого проекта?

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

Есть ли способ получить реальные файлы, доступные в eclipse, чтобы я мог их разрабатывать, а затем легко создавать и развертывать в эмуляторе?

PS это мое воображение или кордова строит целую вечность!

Решение

Я добавил папку в проект Android, которая является ссылкой на расположение www в корне. Это в дополнительных параметрах создания папки.


person stevemarvell    schedule 08.09.2013    source источник
comment
Автоматизируйте сборку: щелкните правой кнопкой мыши проект -> свойства -> Builders и создайте новый (например, Phonegap Build Android), который выполняет локальную сборку phonegap android из каталога проекта. Это позволит просто нажать кнопки отладки/запуска в eclipse и начать отладку. Кроме того, может быть безопаснее переименовать ссылку на ваш исходный www.   -  person Riccardo Zorn    schedule 16.09.2013
comment
Были ли у вас проблемы с настройкой путей для этого?   -  person stevemarvell    schedule 16.09.2013
comment
Нет, я пошел по простому пути: сборщик вызывает buildphonegap.cmd, в котором я перехожу в каталог проекта и запускаю локальную сборку phonegap для Android.   -  person Riccardo Zorn    schedule 17.09.2013
comment
В документации PhoneGap указано, что нужно просто импортировать папку platform\android как существующий проект Android cordova.apache.org/docs/en/3.1.0/ — я попробовал, скомпилировал без ошибок и смог сразу развернуть на устройстве.   -  person Philip Murphy    schedule 05.11.2013
comment
@aziz Мне нравится предложенное вами решение. Есть ли способ заставить Eclipse запускать cordova prepare перед выполнением Run as Android App?   -  person arod    schedule 24.01.2014
comment
@aziz Чтобы решить проблему, которую я прокомментировал ранее, я подготовил cordova-prepare.bat (Windows) для выполнения команды оболочки cordova prepare. Затем я добавил это в Proyect Properties->Builders в качестве первого шага. Итак, теперь каждый раз, когда я выбираю Run As->Android Application, выполняется скрипт cordova-prepare.bat.   -  person arod    schedule 25.01.2014


Ответы (3)


Для этого необходимо использовать два разных проекта eclipse. Один, содержащий папку myProject/www для разработки (назовем его «проект верхнего уровня»), и один для вашего конкретного проекта платформы (например, Android, как вы уже сделали).

В своем проекте верхнего уровня вы пишете свой код и, если хотите, можете даже до определенной степени его отлаживать (функции, которые не требуют кордовы). Затем сохраните и введите cordova prepare в CLI. Затем вы можете переключиться на свой проект Android, нажать «Обновить» (F5), запустить эмулятор/устройство, найти ошибки и внести изменения в манифест Android. Если вы хотите изменить код, снова переключитесь на проект верхнего уровня и сделайте то же самое снова.

Это кажется немного неудобным, верно. Тем не менее, подумайте о том, что Cordova предназначена не только для разработки на Android, но и на iOS, Windows Phone, Blackberry, ... Чтобы получить доступ ко всем этим платформам, вам все равно придется переключиться на несколько IDE. Тогда намного проще иметь код верхнего уровня в независимом проекте.

Некоторые боковые узлы:

  1. Проделав этот процесс несколько раз, вы потеряете не более 2-3 секунд на cordova prepare и переключитесь между проектами. Что нормально, я думаю.

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

  3. Даже если вы разрабатываете только для Android, вы должны использовать два разных проекта, так как «подготовка кордовы» (или любая команда cli, содержащая подготовку, сборку, эмуляцию и запуск) перезапишет/удалит ваши файлы.

  4. В моей установке сборка с помощью CLI занимает столько же времени, сколько и в eclipse. Что имеет смысл, так как я использую один и тот же SDK для обоих. Однако в процессе, написанном выше, нет необходимости использовать команду cli-build.

  5. Если вы используете только платформу Android и вас не запутают файлы с одинаковыми именами в одном проекте, вы можете связать папку myApp/www в своем проекте Android. В этом случае у вас будет только один проект (За этот ответ отвечает сам stevemarvell, я просто добавляю это сюда для полноты картины)

person miwe    schedule 09.09.2013
comment
Большое спасибо за длинный и взвешенный ответ. Я принял вашу стратегию и считаю ее адекватной. По крайней мере, теперь я знаю, что не упускаю ни одного трюка. Больше всего сбивает с толку отсутствие файлов Cordova js на верхнем уровне, хотя это только раздражает и не мешает тестированию браузера на коде html5/jquery. Я заметил сокращение времени сборки после первого, что приятно. - person stevemarvell; 09.09.2013
comment
@stevemarvell Добро пожаловать. Тем не менее, мне интересно, не получилось ли что-то в конце концов, поскольку вы не приняли мой ответ, приняв его сначала... :) - person miwe; 12.09.2013
comment
Да, это принятый ответ, но я посчитал свой вариант более полным решением. Однако, поразмыслив, я чувствую себя плохо и поэтому обновлю :) Немного нового в протоколе здесь. - person stevemarvell; 12.09.2013
comment
Действительно, ваше решение тоже будет работать - я не видел примечание, извините;) Я бы сам запутался со связыванием (использование одних и тех же файлов в одном проекте), но если вы можете справиться с этим, это простой подход. . - person miwe; 12.09.2013

В дополнение к приведенному выше решению я создал конфигурацию «внешних инструментов», которая запускает утилиту phonegap с параметрами «локальная сборка Android» и переменной PATH среды, установленной на «/opt/local/bin:/usr/bin:/bin» для моего Мака. оттуда я установил инструменты Eclipse CDT и использовал его функцию «Launch Group» для запуска внешнего инструмента из проекта верхнего уровня перед вызовом отладки в проекте для конкретной платформы.

кажется, работает довольно хорошо. к сожалению, проект верхнего уровня не «помнит» выполнение Launch Group, поэтому мне приходится каждый раз выбирать его из раскрывающегося списка «Отладка». я преобразовал проект верхнего уровня в JavaScript в качестве теста, но, похоже, это не помогло, и все «Настройки запуска / отладки» в свойствах проекта выделены серым цветом.

person bishopthom    schedule 15.09.2013