Coder Social home page Coder Social logo

snuffy / cordova-plugin-cocoapods-support Goto Github PK

View Code? Open in Web Editor NEW

This project forked from oliverong1995/cordova-plugin-cocoapods-support

0.0 1.0 0.0 255 KB

A Cordova/PhoneGap plugin to add support for CocoaPods dependencies.

License: MIT License

JavaScript 100.00%

cordova-plugin-cocoapods-support's Introduction

cordova-plugin-cocoapod-support

Are you tired of manually adding ios dependencies in Cordova apps? Me too. Android has Gradle support out of the box, but CocoaPods get no love. That is until now.

With this plugin you can define plugin or project CocoaPods dependencies right in the xml.

After adding this plugin be sure to open the .xcworkspace in XCode instead of the .xcodeproj.

Note: Dependencies defined in the config.xml take precedence of dependencies defined in plugin's.

Note: The highest value of minimum ios version will be used and use_frameworks! will be enabled if the flag is set anywhere.

How does it work?

It looks for <pod> entries the config.xml and plugin.xml, creates the Podfile, updates the necessary configs and then runs pod update for you.

How do I install it?

If you're like me and using Cordova CLI:

cordova plugin add cordova-plugin-cocoapod-support --save

or

phonegap local plugin add cordova-plugin-cocoapod-support

How do I use it?

Plugin developers, here's a sample plugin.xml.

<?xml version='1.0' encoding='UTF-8'?>
<plugin id="cordova-plugin-withpods" version="1.0.0" xmlns="http://apache.org/cordova/ns/plugins/1.0">
    <name>A Plugin With CocoaPods Dependencies</name>
    <description>
        A plugin demonstrating the use of CocoaPods dependencies.
    </description>
    
    <dependency id="cordova-plugin-cocoapod-support"/>

    <platform name="ios">
        <!-- optionally set minimum ios version and enable use_frameworks! -->
        <pods-config ios-min-version="9.0" use-frameworks="true">
             <!-- optionally add private spec sources -->
            <source url="[email protected]:foo/foo-specs.git"/>
            <source url="[email protected]:bar/bar-specs.git"/>
        </pods-config>
        <!-- use the latest version of a pod -->
        <pod name="LatestPod" />
        <!-- use a specific version of a pod -->
        <pod name="VersionedPod" version="1.0.0" />
        <!-- use a custom repo -->
        <pod name="GitPod1" git="https://github.com/blakgeek/something" tag="v1.0.1" />
        <pod name="GitPod2" git="https://github.com/blakgeek/something" branch="wood" />
        <pod name="GitPod3" git="https://github.com/blakgeek/something" commit="1b33368" />
        <!-- target specific configurations, this can be combined with all other options -->
        <pod name="Foobar" configuration="debug" />
        <pod name="Foobar" configurations="release,debug" />
        <!-- add a pod dependency using a custom podspec -->
        <pod name="JSONKit" podspec="https://example.com/JSONKit.podspec" />
        <!-- add pod dependency using the spec parameter like a Cordova framework -->
        <pod name="JustLikeCordova" spec="~> 2.0.0"/>
        <pod name="JustLikeCordova" spec=":configurations => ['Debug', 'Beta']"/>
    </platform>
</plugin>

App developers, here's a sample config.xml. Entries in the config.xml will override the plugin.xml(s).
This is useful if you need to resolve conflicts between plugins or if a plugin doesn't include it's iOS dependencies.

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.blakgeek.cordova.superdopeness" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>CocoapodsDemo</name>
    <description>
        An app demonstrating the use of CocoaPods dependencies.
    </description>
    <content src="index.html" />
    <access origin="*" />
    <platform name="ios">
        <!-- set platform :ios, defaults to 7.0 -->
        <preference name="pods_ios_min_version" value="8.0"/>
        <!-- add use_frameworks! to Podfile, this also disabled bridging headers -->
        <preference name="pods_use_frameworks" value="true"/>
        <!-- use the latest version of a pod -->
        <pod name="LatestPod" />
        <!-- use a specific version of a pod -->
        <pod name="VersionedPod" version="1.0.0" />
        <!-- use a custom repo -->
        <pod name="GitPod1" git="https://github.com/blakgeek/something" tag="v1.0.1" />
        <pod name="GitPod2" git="https://github.com/blakgeek/something" branch="wood" />
        <pod name="GitPod3" git="https://github.com/blakgeek/something" commit="1b33368" />
        <!-- target specific configurations, this can be combined with all other options -->
        <pod name="Foobar" configuration="debug" />
        <pod name="Foobar" configurations="release,debug" />
        <!-- add a pod dependency using a custom podspec -->
        <pod name="JSONKit" podspec="https://example.com/JSONKit.podspec" />
        <!-- add a pod dependency using the spec parameter like a Cordova framework -->
        <pod name="JustLikeCordova" spec="~> 2.0.0"/>
        <pod name="JustLikeCordova" spec=":configurations => ['Debug', 'Beta']"/>
        <!-- if pod uses a bundle that isn't compatible with Cocoapods 1.x -->
        <pod name="BadBundle" fix-bundle-path="Bad/Path.bundle"/>
    </platform>
</widget>

Troubleshooting

  • If you get errors like the following.
error: Resource ".../Build/Products/Debug-iphonesimulator/Lock/Auth0.bundle" not found. Run 'pod install' to update the copy resources script

Add the fix-bundle-path attribute to the pod tag with the path after the device. In this case:

<pod name="Lock" fix-bundle-path="Lock/Auth0.bundle"/>

This is caused by a bug in the later versions of CocoaPods.

or have a look at the example plugin.

Notes

  • The plugin now detects Cordova framework tags with type="podspec" so there shouldn't be anymore conflicts with the native functionality and the plugin.
  • Pod "id" was deprecated in version 1.3.0. You should use "name" instead. But don't worry "id" will continue to work. I made this change to better align with the podspec.
  • Enabling the pods_use_frameworks preference disables the bridged headers property added by CB-10072. This might cause odd behavior in some projects.

##TODO:

  • Update with examples of all of the supported pod attributes (git, podspec, path, subspec, configuration(s) )

cordova-plugin-cocoapods-support's People

Contributors

blakgeek avatar jasonz1987 avatar jfrumar avatar oliverong1995 avatar snuffy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.