2016-04-22 2 views
0

У меня есть 2 экземпляра для моей работы в кордове с последних двух лет, и она работает без ошибок.общая папка www и все файлы для всей платформы в кордове

  1. для Android/КСН
  2. Windows Phone

в обоих экземплярах есть только платформы конкретных изменений есть. Средство в Windows Phone не позволяет загружать html-файлы, поэтому я добавляю все html-файлы в тег скрипта и загружаю их в основной index.html для того, чтобы заставить работу работать, и она работает на телефоне Windows, а во второй копии я сделал нормальные html-файлы отдельно, поскольку у android и ios нет проблем с загрузкой внешних html-файлов.

, так что мой вопрос: Есть ли способ объединить весь код в одной копии и с тем же кодом папки WWW, будет работать и на Android-телефоне, и на телефоне и на телефоне?

Может быть, это невозможно, поскольку я просматриваю, потому что у Windows-телефона есть другая структура файлов, а затем android/ios.

Просьба указать, существует ли какая-либо общая работа для всех платформ.

+0

Нет, вы не можете сделать это, чтобы работать независимо с каждой платформой. То, что вы сейчас делаете, - это только путь. –

+0

благодарит @jaydroider за ваши отзывы, но я могу дождаться и некоторых других предложений. – Naitik

ответ

1

Вы можете использовать функцию «merges» в CLI Cordova для этого. Представьте себе, у меня есть проект, который выглядит следующим образом:

-rw-r--r-- 1 simon staff 1115 Mar 22 19:57 config.xml drwxr-xr-x 3 simon staff 102 Mar 17 21:47 hooks/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 platforms/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 plugins/ drwxr-xr-x 7 simon staff 238 Mar 21 13:11 www/

С моим кодом приложения все в WWW, который был организован так:

drwxr-xr-x 4 simon staff 136 Mar 24 12:42 css/ drwxr-xr-x 4 simon staff 136 Mar 21 13:11 img/ -rw-r--r-- 1 simon staff 1338 Mar 21 15:16 index.html drwxr-xr-x 4 simon staff 136 Mar 22 18:29 js/

Imagine У меня есть обе платформы Android и IOS установлены , и хотят делать что-то по-разному на каждом, без ввода лотов:

if (device.platform === 'Android') { // Android specific code } else { // iOS specific, assuming we are only supporting iOS }

вид кода в моей заявке. Это также не масштабируется для многих платформ (например, добавьте Windows и BB там, а затем вы имеете больше if/else или оператор switch каждый раз).

Чтобы помочь с этим, CLI Cordova может объединить код и будет искать папку верхнего уровня, называемую merges. Так что один из них в той же папке, ваш config.xml находится, поэтому проект теперь выглядит следующим образом:

-rw-r--r-- 1 simon staff 1115 Mar 22 19:57 config.xml drwxr-xr-x 3 simon staff 102 Mar 17 21:47 hooks/ drwxr-xr-x 4 simon staff 136 Mar 22 17:47 merges/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 platforms/ drwxr-xr-x 7 simon staff 238 Mar 22 19:57 plugins/ drwxr-xr-x 7 simon staff 238 Mar 21 13:11 www/

Затем создайте:

merges/android merges/ios

Все, что вы положили туда получите копируется в специальную папку www и переопределяет материал по тому же пути из вашей основной папки www или добавляется, если в WWW нет ни одного имени/пути.

Пример:

ls -lF merges/android/img total 16 [email protected] 1 simon staff 7626 Mar 21 13:23 logo.png

Это изображение logo.png заменит WWW/IMG/logo.png только для Android. Я могу либо сделать то же самое для iOS (add merges/ios/img/logo.png), либо использовать изображение по умолчанию (www/img/logo.png).

Это может быть сделано для любого типа файла (JS/CSS/img/JSON/безотносительно), который вам нужен на основе конкретной платформы.

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

Документация по этой концепции находится в Cordova CLI docs.

+0

привет @simon спасибо за ваш ответ, но у меня вопрос. Если я изменю кордовую корневую папку «www», любые файлы не повлияют непосредственно на все ладони? measn я должен изменить все изменения в конкретной платформе в слияниях/связанных платформах. Мне нужно сделать изменения в файле главной папки www, который будет влиять на все платформы. Я хочу, чтобы мой код был единственным экземпляром для всех платформ. я могу сделать в фильтре для платформ в java-скрипте с device.platform, но он будет работать для android и ios, только он будет работать и для wp8? Спасибо – Naitik

+0

Да, все, что вы измените в 'www' (папка в той же папке, что и' config.xml'), будет перенесено в папку 'www' для каждой платформы вашего проекта (' platform/ios/... ' , 'platform/android/...' и т. д.). Чтобы использовать конкретный материал для платформы, используйте слияния, как описано, так как вы должны рассматривать папку 'platform' как артефакт сборки и не должны иметь там вещи, которые были проверены в исходном элементе управления. Метод, который я описываю, работает для всех платформ, поддерживаемых Cordova, потому что это особенность CLI Cordova. –

+0

, но cordova android/ios имеет другую структуру файлов, а затем wp8, так будет ли она работать, если я изменю какие-либо изменения конкретной платформы? Средства android/ios прекрасно работают вместе, но wp8 работает с файловой структурой android/ios? если да, можете ли вы предоставить какой-либо пример для этого. спасибо – Naitik