#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 у меня было два сценария:
- С первой попытки я не создал
index.js
файл в базовом каталоге www, а просто в каталоге merges / android. Результат: файл отсутствовал (т. Е. его содержимое, которое представляло собой предупреждение, отображаемое внутри события deviceReady, сообщающее, что текущая платформа Android, так и не было выполнено, и последующий код тоже — сообщение: инициализация не была выполнена -, что является результатомReferenceError
при попытке вызоваapp.initialize()
). - Со второй попытки я создаю,
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
или нет) поддерживает слияния. Должны были быть установлены ОБЕ командные строки.