【问题标题】:How to explicitly fail cordova/ionic build if a plugin couldnot be installed?如果无法安装插件,如何显式失败 cordova/ionic 构建?
【发布时间】:2019-10-05 03:01:56
【问题描述】:

我的应用需要一个非常重要的插件。在构建服务器中,在添加平台或使用 cordova cli 构建时,cordova 会尝试获取插件。当插件获取不成功时,它会默默地显示错误,但科尔多瓦构建仍然成功。 理想情况下,如果无法获取该插件,构建应该会失败。

在这种情况下,我怎样才能明确地使 cordova 构建失败,以便我不会将不需要的构建发送到设备?

【问题讨论】:

    标签: cordova ionic-framework ionic2 ionic3 cordova-plugins


    【解决方案1】:

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

    【讨论】:

    • 我不确定包含一个旨在使构建过程失败的插件是否是一个好的解决方案。我认为会有一些方法明确地失败
    猜你喜欢
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 2018-06-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    相关资源
    最近更新 更多