Как явным образом завершить сборку cordova / ionic, если плагин не может быть установлен? - PullRequest
1 голос
/ 17 мая 2019

У меня есть очень важный плагин, необходимый для моего приложения.На сервере сборки, добавляя платформу или сборку, используя cordova cli, cordova пытается получить плагин.Когда выборка плагина не удалась, он молча показывает ошибку, но сборка cordova все еще успешна.В идеале сборка должна завершиться неудачей, если она не может извлечь этот плагин.

Как я могу в этом случае прекратить сборку Cordova, чтобы я не отправил нежелательную сборку на устройство?

1 Ответ

0 голосов
/ 24 мая 2019

К сожалению, детали 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! .

...