不幸的是,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!。