К сожалению, детали cordova
, npm
, gradle
и Apple LLVM
не так тесно связаны. Каждый из них живет в своей собственной экосистеме. Вот почему он может потерпеть неудачу, но в то же время добиться успеха. Кордова не совсем. заботиться о npm, ни один из компиляторов не работает.
Заметьте, как я несколько самодовольно упомянул родную сторону? Это ключ. Что вы можете сделать, это создать свой собственный плагин, который вызывает сбой собственной сборки, если определенные файлы отсутствуют.
Это не должен быть официальный "плагин", просто создайте несколько файлов, включите его в ваш config.xml как таковой:
<plugin name="cordova-plugin-validator" spec="file:plugins/cordova-plugin-validator">
Довольно простое руководство доступно на их официальном сайте: https://cordova.apache.org/docs/en/latest/guide/hybrid/plugins/
Вам даже не нужно создавать файл javascript плагина валидатора, вам просто нужно включить нативные части, что-то вроде (скопировано и изменено из руководства, просто измените имена файлов):
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
id="cordova-plugin-device" version="0.2.3">
<platform name="ios">
<config-file target="config.xml" parent="/*">
<feature name="Device">
<param name="ios-package" value="CDVDevice"/>
</feature>
</config-file>
<header-file src="src/ios/ImportantPluginValidator.h" />
<source-file src="src/ios/ImportantPluginValidator.m" />
</platform>
platform name="android">
<config-file target="config.xml" parent="/*">
<feature name="Validator">
<param name="android-package" value="com.cordova.important.plugin.validator.ImportantPluginValidator"/>
</feature>
</config-file>
<source-file src="src/android/ImportantPluginValidator.java" target-dir="src/org/apache/cordova/plugin" />
</platform>
</plugin>
А ваши файлы iOS (.h и .m) и Android (.java) просто должны включать ваши пакеты плагинов, например
import my.important.plugin;
и
#import "MyImportantPlugin.h"
И это все. Если эти файлы и пакеты доступны, вы золотой. Если они отсутствуют, собственный компилятор завершится с ошибкой NOPE! .