xcode 4 + phonegap ... не обновлять JS при сборке? - PullRequest
8 голосов
/ 26 июня 2011

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

Я работаю над приложением для iPad, используя Xcode 4 и PhoneGap. Он использует jQuery. Я поместил все свои JS в файл scripts.js.

Все работает хорошо.

Я провожу около часа, занимаясь настройкой CSS. Я обновлял CSS-файл, останавливал приложение, перестраивал и отправлял на iPad-симулятор или iPad. Это работает нормально. Каждое обновление файла CSS отражается в новой сборке.

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

Файл, который я обновляю, обновляется в Finder в папке проекта (я могу щелкнуть правой кнопкой мыши «View in Finder», и этот файл действительно обновляется).

Так что я в тупике. Компилятор xcode кэширует файл JS как-то вместо того, чтобы получить обновленный файл? Есть ли способ заставить его захватить обновленный JS?

Ответы [ 11 ]

10 голосов
/ 18 августа 2011

Я счел необходимым удерживать кнопку «Option» при щелчке команды меню, которая превращает команду из «Очистить» в «Очистить папку сборки ...», и это привело к обновлению моих ресурсов.

4 голосов
/ 27 июня 2011

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

Один из вариантов - запустить команду «clean» перед новой сборкой.Я попробовал это, не повезло.

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

  • Откройте ваш файл .plist
  • изменить что-то (в моемВ этом случае я переименовываю один из файлов значков приложения каждый раз)
  • сохранить и собрать

Это магическим образом заставляет xcode ПОЛНОСТЬЮ захватить все обновленные файлы и выполнить правильную сборку.

Я не могу объяснить, почему XCode кажется совершенно счастливым, каждый раз получая мой обновленный файл .css, но не будет обновлять файлы .html или .js без предварительного редактирования файла .plist.

Похоже, у Apple все еще есть несколько ошибок, над которыми нужно разобраться.Я думаю, нам придется терпеливо ждать следующего 4gig .x реферала об этом.;)

3 голосов
/ 17 апреля 2012

Просто добавьте новую фазу сборки "Run Script" к вашей цели в XCode и вставьте это:

touch -cm ${SRCROOT}/www
2 голосов
/ 21 февраля 2014

Ни один из них не работал для меня: (

Единственный способ, которым я могу заставить вещь обновить ее html и js, это запустить "corodova run ios" в командной строке.

2 голосов
/ 27 июня 2011

У меня сейчас нет mac, но есть несколько вещей, которые нужно попробовать:

  • Попробуйте посмотреть на действие по сборке (или предварительной сборке) вашего проекта, где должна быть папка wwwскопировано.

  • Попробуйте изменить index.html и посмотрите, работает ли он.

  • Попробуйте скопировать и вставить весь свой код JavaScript в index.html.тег сценария

  • Попробуйте проверить Ваш javascript (например, Google Closure Compiler) и посмотрите, нет ли у него проблем

1 голос
/ 31 января 2014

Найдите файл с именем copy-www-build-step.sh.

Шахта была в [project_folder]/platforms/ios/cordova/lib/copy-www-build-step.sh

В этом файле найдите строки, начинающиеся rsync -a "...

Добавьте -c кстроки rsync, поэтому они готовы rsync -a -c "...

copy-www-build-step.sh - это сценарий, который копирует файлы с www / туда, куда они попадают в файл приложения.rsync - это команда копирования файлов unix, которую они используют.Без этого -c rsync просто сравнивает размер файла для каждого файла и папки и копирует их, если размер изменился, а пара пробелов или кавычек не считается достаточным изменением.С помощью -c он проверяет их и сравнивает контрольные суммы, которые улавливают даже самые маленькие изменения.

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

0 голосов
/ 23 февраля 2016

Ничего из вышеперечисленного не удалось решить, наконец, я увидел, что в проекте есть два файла index.html и .js, созданные с помощью инструмента командной строки Cordova

Так что внесите изменения, как показано ниже в Staging folder enter image description here

0 голосов
/ 04 ноября 2014

У меня возникла такая же проблема с симулятором iOS, я безуспешно пытался выполнить большинство из приведенных выше предложений, но мои изменения не были приняты.Позже мне пришло другое возможное решение, которое сработало:

Удалить приложение из симулятора..1005 *

0 голосов
/ 12 марта 2014

Я нашел сочетание всех этих ответов для работы, попробуйте принятый ответ здесь

XCode Build не обновляет JS и HTML

0 голосов
/ 30 октября 2012

Я не уверен, кто это сделал, но я сделал следующее:

  1. Изменил значение значка в моем MyProject-Info.plist
  2. Выйти из симулятора
  3. Product -> (hold option) -> Clean Build Folder
  4. Пробег
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...