XCode Build не обновляет JS и HTML
Я использую XCode 5.0.2 и Cordova 3.4.0-0.1.3. Я нахожу это после создания проекта с помощью CLOS и открытие в XCode, никакие изменения в файле index.html и index.js никогда не переносятся на симулятор, когда Я нажимаю run.
Мне нужно открыть терминал и выпустить команду Кордова Build, а затем запустить симулятор, и он работает
Я выполнил все инструкции здесь:
Phonegap - разработка и запуск приложения на симуляторе
xcode 4 + phonegap... не обновлять JS после сборки?
И ничто из этого не работает! любой из них имеет решение этого, потому что переключение туда и обратно становится болью.
Ответы
Ответ 1
Итак, после долгих поисков я, похоже, нашел решение, которое работает, вот что я сделал. Посмотрев на другие вопросы Stackoverflow, я обнаружил, что кто-то сказал, что это сработало для них.
Найдите файл с именем copy-www-build-step.sh.
Шахта была в [Project_folder]/platforms/ios/cordova/lib/copy-www-build-step.sh
В этом файле найдите строки, начинающиеся с rsync -a "...
Добавьте -c в строки rsync, чтобы они были готовы rsync -a -c"...
Ну, я пробовал это, и он не работал сам по себе. Я также попробовал ответ от Вилле, и это приблизилось, но не сигары. Наконец, я взял команду Ville и поместил ее в файл copy-www-build-step.sh
поэтому моя верхняя строка теперь
cd /path/to/your/cordova/project/
cordova prepare
SRC_DIR="www/"
DST_DIR="$BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME/www"
COPY_HIDDEN=
ORIG_IFS=$IFS
IFS=$(echo -en "\n\b")
.....
.....
.....etc etc
И теперь я делаю изменения, и нажимаю run, bam all обновляется. Надеюсь, это поможет кому-то другому.
Ответ 2
Вы можете добавить предварительное действие script в свою сборку проекта XCode. Для этого:
Теперь XCode должен всегда запускать кордовую подготовку перед созданием вашего проекта, чтобы вам не приходилось переходить на терминал. Вы можете увидеть результат подготовки в файле xcode-prepare-results.txt.
Обратите внимание, что в зависимости от того, как настроен ваш исполняемый файл cordova и какой оболочки вы используете, вам может потребоваться либо изменить оболочку, либо изменить свой PATH, чтобы script нашел кордову.
Ответ 3
Другие ответы в этой ветке либо не работали для меня, либо прикручивали плагины cordova, например. InAppBrowser, поэтому я, наконец, придумал следующее:
Отредактируйте файл copy-www-build-step.sh и добавьте следующую строку в начале:
cp -fR ../../www/ www/
чтобы он выглядел так:
...
cp -fR ../../www/ www/ # new code
SRC_DIR="www/"
...
Таким образом, ваш код будет обновлен правильно, и ваши плагины будут работать
Ответ 4
Я также отредактировал файл copy-www-build-step.sh, однако вы не хотите использовать абсолютный путь из своей папки пользователя. Если вы работаете с другими разработчиками, вам придется изменить это каждый раз, когда вы проверяете код.
Это неважно, просто измените:
SRC_DIR="www/"
To:
SRC_DIR="../../www/"
UPDATE
Работал для меня на Кордове и в телефоне.
Ответ 5
Чтобы исходные файлы автоматически копировались из исходного каталога www в каталог platform/ios/www, когда вы нажимаете кнопку "Выполнить" в XCode:
В XCode выберите Product- > Scheme- > Edit Scheme...
Разверните треугольник для Build- > Pre-actions
Нажмите "+", чтобы создать новое предварительное действие
Вы можете оставить поле "Shell" пустым.
Установите "Предоставить параметры сборки от" к проекту, который вы строите. Это важно.
В области script введите:
cd ${PROJECT_DIR}/../..
echo "--- Start ---" > xcode-prepare-ios-results.txt
echo "Running cordova prepare ios command..."
pwd >> xcode-prepare-ios-results.txt
cordova prepare ios --verbose >> xcode-prepare-ios-results.txt
echo "--- Finished ---" >> xcode-prepare-ios-results.txt
Это работает для меня с XCode 8.2 и Apache Cordova 6.x
Ответ 6
Я предлагаю вам очистить, прежде чем создавать свой проект xcode. И еще одна вещь, убедитесь, что вы снова создаете свой проект, используя кордовую сборку, а не внутри xcode, потому что она совершенно другая.
cordova build yourproject
Ответ 7
@Ksliman
Я немного изменил код, чтобы работать в моей системе и сделать немного более общим.
верхняя часть файла copy-www-build-step.sh
## New Code Begin ###
cd ../../
PATH=${PATH}:/usr/local/bin
cordova prepare ios
## New Code End ###
SRC_DIR="www/"
Ответ 8
Простые решения - это создать приложение с кордорой, используя:
sudo cordova build ios
Затем перейдите в xcode > Product > Clean
Затем перейдите в xcode > Run (Play Button)
Ответ 9
просто введите:
cordova prepare
на вашем терминале и снова запустить проект в Xcode
Ответ 10
Запустите "cordova prepare ios
" во время фаз здания:
- Открыть Xcode.
- Выберите свой проект.
- Перейдите к разделу "Сборка фаз".
- Перейдите на "+", чтобы добавить "New Run Script Phase".
- Переместите этот раздел перед "Копировать каталог www".
- Добавьте следующие строки (для Mac):
-
cd /Users/*/YOUR_PROJECT_FOLDER
(Измените папку проекта)
-
/Users/*/.nvm/versions/node/v?.?.?/bin/node node_modules/cordova/bin/cordova prepare ios
(Изменить путь к версии node)
После "Воспроизвести" www-папка будет автоматически обновляться!
Ответ 11
Я обнаружил, что иногда Кордова путается... вам нужно сделать "кордовую платформу rm ios" (просто оставьте свои плагины в покое), а затем сделайте "платформу кордовы, добавьте iOS", которая переустановит все ваши плагины в ваша платформа... затем повторите попытку сборки.
Ответ 12
Все, что я должен был сделать, это включить полный абсолютный путь src для моего проекта. Например:
- Из каталога проектов, платформ vim/ios/cordova/lib/copy-www-build-step.sh
- измените SRC_DIR на абсолютный путь вашего www, SRC_DIR = "/Users/michael/Documents/Development/SampleMobileApp/www/"
- Сохраните, создайте, и вам должно быть хорошо идти.
Ответ 13
Каждый раз, когда я использую cordova build
, он переопределяет контент в моем конкретном для платформы файле www
. Поэтому я использую cordova compile
.
С помощью:
compile <platform> компилирует проект платформы без его подготовки
Важно просто скомпилировать изменения, чтобы не создавать целые проекты, особенно если вы создаете мобильное приложение для многих платформ, и вам нужно сделать некоторые улучшения для конкретной платформы.
Ответ 14
Для меня была ошибка в моем коде. Мне просто нужно было запустить npm start
, чтобы найти его.
Ответ 15
Если вы напрямую меняете html из Xcode, вы должны изменить код /html промежуточной папки, а не основной папки
В промежуточной папке вы получите ту же структуру, что и в основной папке, но она будет отображаться непосредственно в сборке xcode (iOS)
Папка для хранения
Примечание. Изменения, внесенные вами в xcode, будут заменены, когда вы будете строить снова из сборки/запуска кордоны, поэтому скопируйте свои изменения в основную папку, прежде чем делать команды по команде cordova.
Вы можете получить более подробную информацию из этого ответа: Цель создания папки в PhoneGap 3.4? Изменены только изменения в index.html в этой папке?
Это правильное решение, взятое из:
Кордова + Xcode 7.3 (html + Javascript) не изменяется или не обновляется при сборке и эмуляции