addPodSpecs (plugin, podSpecs, installOptions) {
        if (!podSpecs.length) {
            return;
        }
        const { isSwiftPackagePlugin } = require('./SwiftPackage');

        const project_dir = this.locations.root;
        const project_name = this.locations.xcodeCordovaProj.split(path.sep).pop();
        const minDeploymentTarget = this.getPlatformInfo().projectConfig.getPreference('deployment-target', 'ios');

        const Podfile = require('./Podfile').Podfile;
        const PodsJson = require('./PodsJson').PodsJson;
        const podsjsonFile = new PodsJson(path.join(project_dir, PodsJson.FILENAME));
        const podfileFile = new Podfile(path.join(project_dir, Podfile.FILENAME), project_name, minDeploymentTarget);

        events.emit('verbose', 'Adding pods since the plugin contained <podspecs>');
        podSpecs.forEach(obj => {
            // declarations
            if (obj.declarations) {
                Object.keys(obj.declarations).forEach(key => {
                    if (obj.declarations[key] === 'true') {
                        const declaration = Podfile.proofDeclaration(key);
                        const podJson = {
                            declaration
                        };
                        const val = podsjsonFile.getDeclaration(declaration);
                        if (val) {
                            podsjsonFile.incrementDeclaration(declaration);
                        } else {
                            podJson.count = 1;
                            podsjsonFile.setJsonDeclaration(declaration, podJson);
                            podfileFile.addDeclaration(podJson.declaration);
                        }
                    }
                });
            }

            // sources
            if (obj.sources) {
                Object.keys(obj.sources).forEach(key => {
                    const podJson = {
                        source: obj.sources[key].source
                    };
                    const val = podsjsonFile.getSource(key);
                    if (val) {
                        podsjsonFile.incrementSource(key);
                    } else {
                        podJson.count = 1;
                        podsjsonFile.setJsonSource(key, podJson);
                        podfileFile.addSource(podJson.source);
                    }
                });
            }
            if (obj.libraries) {
                const isSPM = isSwiftPackagePlugin(plugin);
                Object.keys(obj.libraries).forEach(key => {
                    let podJson = Object.assign({}, obj.libraries[key]);
                    if (!isSPM || (isSPM && !_isTrue(podJson.nospm))) {
                        podJson = replacePodSpecVariables(podJson, installOptions);
                        const val = podsjsonFile.getLibrary(key);
                        if (val) {
                            events.emit('warn', `${plugin.id} depends on ${podJson.name}, which may conflict with another plugin. ${podJson.name}@${val.spec} is already installed and was not overwritten.`);
                            podsjsonFile.incrementLibrary(key);
                        } else {
                            podJson.count = 1;
                            podsjsonFile.setJsonLibrary(key, podJson);
                            podfileFile.addSpec(podJson.name, podJson);
                        }
                    }
                });
            }
        });

        // now that all the pods have been processed, write to pods.json
        podsjsonFile.write();

        // only write and pod install if the Podfile changed
        if (podfileFile.isDirty()) {
            podfileFile.write();
            events.emit('verbose', 'Running `pod install` (to install plugins)');
            projectFile.purgeProjectFileCache(this.locations.root);

            return podfileFile.install(check_reqs.check_cocoapods)
                .then(() => podsjsonFile.setSwiftVersionForCocoaPodsLibraries(this.root));
        } else {
            events.emit('verbose', 'Podfile unchanged, skipping `pod install`');
        }
    }
adding CocoaPods libraries

@param  {PluginInfo}  plugin  A PluginInfo instance that represents plugin
  that will be installed.
@param  {Object}  podSpecs: the return value of plugin.getPodSpecs(this.platform)
@return  {Promise}  Return a promise