Меня попросили внести некоторые изменения в ( неионное ) приложение Cordova, ранее созданное другим разработчиком. В проект входил файл управления зависимостями, но предыдущий разработчик исключил саму Cordova из зависимостей (предположительно потому, что он установил Cordova глобально на свою машину), поэтому я не знаю, какую версию Cordova он использовал. Я добавил самую последнюю версию Cordova (9.0.0).
Приложение прекрасно работает, если я запускаю его в браузере через Cordova. Однако, когда я собираюсь для iOS и запускаю на своем устройстве, сразу становится очевидно, что некоторые вещи работают неправильно, например, заставка и настройки клавиатуры.
Если я проверяю вывод консоли в XCode, я вижу много сообщений об ошибках о плагинах сразу после запуска приложения. Вот несколько примеров:
2019-04-03 17: 24: 50.502504-0700 APP_NAME [693: 225720] ОШИБКА: плагин BuildInfo 'не найден или не является CDVPlugin. Проверьте соответствие плагинов в config.xml.
2019-04-03 17: 24: 50.502721-0700 APP_NAME [693: 225720] - [CDVCommandQueue executePending] [Строка 142] FAILED pluginJSON = ["BuildInfo1245166954", "BuildInfo", "init", []]
2019-04-03 17: 24: 52.005066-0700 APP_NAME [693: 225720] ОШИБКА: плагин StatusBar не найден или не является CDVPlugin. Проверьте соответствие плагинов в config.xml.
2019-04-03 17: 24: 52.005259-0700 APP_NAME [693: 225720] - [CDVCommandQueue executePending] [Строка 142] FAILED pluginJSON = ["StatusBar1245166955", "StatusBar", "_ ready", []]
2019-04-03 17: 24: 52.005390-0700 APP_NAME [693: 225720] ОШИБКА: Плагин StatusBar не найден или не является CDVPlugin. Проверьте соответствие плагинов в config.xml.
2019-04-03 17: 24: 52.005453-0700 APP_NAME [693: 225720] - [CDVCommandQueue executePending] [Строка 142] FAILED pluginJSON = ["INVALID", "StatusBar", "hide", []]
Несмотря на сообщения об ошибках, файл config.xml уже содержит список плагинов:
<plugin name="cordova-plugin-whitelist" spec="1" />
<plugin name="cordova-plugin-keyboard" spec="~1.2.0" />
<plugin name="cordova-plugin-splashscreen" spec="~5.0.2" />
<plugin name="cordova-plugin-statusbar" spec="~2.4.2" />
<plugin name="cc.fovea.cordova.purchase" spec="~7.2.5">
<variable name="BILLING_KEY" value="[removed]" />
</plugin>
<plugin name="cordova-plugin-buildinfo" spec="^2.0.2" />
В platforms/ios/ios.json
есть это:
"installed_plugins": {
"cc.fovea.cordova.purchase": {
"PACKAGE_NAME": "[removed]"
},
"cordova-plugin-buildinfo": {
"PACKAGE_NAME": "[removed]"
},
"cordova-plugin-keyboard": {
"PACKAGE_NAME": "[removed]"
},
"cordova-plugin-splashscreen": {
"PACKAGE_NAME": "[removed]"
},
"cordova-plugin-statusbar": {
"PACKAGE_NAME": "[removed]"
},
"cordova-plugin-whitelist": {
"PACKAGE_NAME": "[removed]"
}
В platforms/ios/www/cordova_plugins.js
есть это:
cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
{
"id": "cc.fovea.cordova.purchase.InAppPurchase",
"file": "plugins/cc.fovea.cordova.purchase/www/store-ios.js",
"pluginId": "cc.fovea.cordova.purchase",
"clobbers": [
"store"
]
},
{
"id": "cordova-plugin-buildinfo.BuildInfo",
"file": "plugins/cordova-plugin-buildinfo/www/buildinfo.js",
"pluginId": "cordova-plugin-buildinfo",
"clobbers": [
"BuildInfo"
]
},
{
"id": "cordova-plugin-keyboard.keyboard",
"file": "plugins/cordova-plugin-keyboard/www/keyboard.js",
"pluginId": "cordova-plugin-keyboard",
"clobbers": [
"window.Keyboard",
"cordova.plugins.Keyboard"
]
},
{
"id": "cordova-plugin-splashscreen.SplashScreen",
"file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
"pluginId": "cordova-plugin-splashscreen",
"clobbers": [
"navigator.splashscreen"
]
},
{
"id": "cordova-plugin-statusbar.statusbar",
"file": "plugins/cordova-plugin-statusbar/www/statusbar.js",
"pluginId": "cordova-plugin-statusbar",
"clobbers": [
"window.StatusBar"
]
}
];
module.exports.metadata =
// TOP OF METADATA
{
"cc.fovea.cordova.purchase": "7.2.8",
"cordova-plugin-buildinfo": "2.0.2",
"cordova-plugin-keyboard": "1.2.0",
"cordova-plugin-splashscreen": "5.0.2",
"cordova-plugin-statusbar": "2.4.2",
"cordova-plugin-whitelist": "1.3.3"
};
// BOTTOM OF METADATA
});
В platforms/ios/www/plugins
есть папка для каждого плагина. Каждая из этих папок содержит папку www
, в которой находится один файл JS:
platforms/ios/www/plugins
+---cc.fovea.cordova.purchase
¦ +---www
¦ store-ios.js
¦
+---cordova-plugin-buildinfo
¦ +---www
¦ buildinfo.js
¦
+---cordova-plugin-keyboard
¦ +---www
¦ keyboard.js
¦
+---cordova-plugin-splashscreen
¦ +---www
¦ splashscreen.js
¦
+---cordova-plugin-statusbar
+---www
statusbar.js
В Xcode файлы .m для всех плагинов перечислены в Этапы сборки> Источники компиляции
Я неоднократно удалял и переустанавливал платформу ios
и перестраивал проект, но безрезультатно.
Я знаю, что плагины работали в сборках, созданных предыдущим разработчиком, и я не понимаю, почему плагины не загружаются, когда я делаю сборку; кажется, все настроено правильно.