Каталоги слияния Phonegap — ресурсы не объединяются

#cordova #merge #assets

#кордова #объединить #ресурсы

Вопрос:

Я полный новичок в PhoneGap (версия: 3.4). В настоящее время у меня есть структура проекта, подобная:

 .cordova
 ---config.json
hooks
 ---README.md
merges
 ---android
     ---js
         ---index.js
platforms
 ---.gitkeep
plugins
 ---org.apache.cordova.device (content: the plugin sources, doc, and data)
 ---android.json (content: plugins config for android)
www
 ---css (content: many assets here)
 ---img (content: many assets here)
 ---js (content: many assets here, siblings of index.js)
     ---index.js (a default file intended to be overriden by the merged index.js file)
 ---res (content: resources for splashscreen and stuff configured in config.xml)
 ---index.html
 ---config.xml
 ---icon.png
  

Я намереваюсь переопределить множество файлов файлами, зависящими от платформы (в данном случае Android), поэтому я создал merges/android каталог для своих пользовательских ресурсов Android.

Содержимое index.js (базовый):

 var app = {
    selectDevice: function() {
        window.alert('using default');
    },
    initialize: function() {
        document.addEventListener("deviceready", this.selectDevice, false);
    }
};
  

Содержимое index.js (для объединения):

 var app = {
    selectDevice: function() {
        window.alert('using android');
    },
    initialize: function() {
        document.addEventListener("deviceready", this.selectDevice, false);
    }
};
  

Содержимое index.html (единственный и распространенный HTML-файл для каждой платформы):

 <!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="format-detection" content="telephone=no" />
        <!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See https://issues.apache.org/jira/browse/CB-4323 -->
        <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
        <script type="text/javascript" src="phonegap.js"></script>
        <title>1001Carros</title>
    </head>
    <body>
        <script type="text/javascript" src="js/index.js"></script>
        <script type="text/javascript">
            window.alert('initializing...');
            app.initialize();
            window.alert('initialization was run.');
        </script>
        <div id="log">
            <button id="clickme" value="Click Me"></button>
            pantalla principal
        </div>
    </body>
</html>
  

Структура файловой системы, которую я подробно описал здесь, является состоянием моего текущего репозитория (примечания: пустые папки содержат фиктивные файлы .gitkeep, поэтому они существуют в репозитории — это особенно верно для каталога платформ, который в настоящее время пуст).

Однако, когда я загружаю свое содержимое в свой репозиторий и извлекаю и перестраиваю вhttp://build .phonegap.com у меня было два сценария:

  1. С первой попытки я не создал index.js файл в базовом каталоге www, а просто в каталоге merges / android. Результат: файл отсутствовал (т. Е. его содержимое, которое представляло собой предупреждение, отображаемое внутри события deviceReady, сообщающее, что текущая платформа Android, так и не было выполнено, и последующий код тоже — сообщение: инициализация не была выполнена -, что является результатом ReferenceError при попытке вызова app.initialize() ).
  2. Со второй попытки я создаю, index.js чтобы он был по умолчанию в разделе www/js , когда ни один файл не был объединен. Результат: напечатанное сообщение было «используется по умолчанию».

Мой вывод: файл никогда не был объединен.

Мой вопрос: Почему? Должен ли я создать явный каталог platforms / android (ну: платформа), чтобы объединить мои файлы? или должны быть собраны.phonegap.com делайте это автоматически, когда я говорю перестроить приложение для Android?

Чего я здесь не понимаю?

Ответ №1:

merges Папка предназначена для ресурсов, таких как изображения или css, на мой взгляд, не так много для всего JS. Вместо этого я советую вам добавить плагин для устройства и протестировать device.platform на «Android» для другого поведения на этих платформах.

http://docs.phonegap.com/en/3.0.0/cordova_device_device.md.html#device.platform

Вы спросили, следует ли вам создать platform/android каталог. Это странный вопрос, потому что, если вы делаете это правильно, вы должны использовать build команду, и этот каталог должен быть создан сам по себе! Затем в platform/android/assets/www вы должны найти ваши файлы объединенными, больше нигде.

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

1. Я заметил, что служба сборки Phonegap не поддерживает слияния. Я заметил, что phonegap build android ни один из них не поддерживает слияния. Наконец: заметил, что cordova build android (добавление --release или нет) поддерживает слияния. Должны были быть установлены ОБЕ командные строки.