Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
module.exports = {
"env": {
"es6": true,
"node": true
},
"extends": "eslint:recommended",
"rules": {
"indent": [
"error",
4
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
],
"no-console": [
"off"
],
"prefer-template": [
"error"
]
}
};
60 changes: 34 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# 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.
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
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?
Expand All @@ -27,25 +27,31 @@ or
phonegap local plugin add cordova-plugin-cocoapod-support
```

## How do I use it?
Plugin developers, here's a sample plugin.xml.
## How do I use it?

Plugin developers, here's a sample plugin.xml.
```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"/>

<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 set minimum ios version, use swift legacy version and enable use_frameworks! -->
<pods-config ios-min-version="9.0" use-legacy="true" use-frameworks="true">
<!-- optionally add private spec sources -->
<source url="git@github.com:foo/foo-specs.git"/>
<source url="git@github.com:bar/bar-specs.git"/>
<source url="git@github.com:foo/foo-specs.git" />
<source url="git@github.com:bar/bar-specs.git" />
<!-- optionally add CocoaPods plugin -->
<plugin name="cocoapods-art">
<plugin-config key="sources">
<sources name="LOCAL_SPECS_REPO_NAME" />
</plugin-config>
</plugin>
</pods-config>
<!-- use the latest version of a pod -->
<pod name="LatestPod" />
Expand All @@ -61,14 +67,14 @@ Plugin developers, here's a sample plugin.xml.
<!-- 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']"/>
<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.
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
<?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">
Expand All @@ -80,9 +86,11 @@ This is useful if you need to resolve conflicts between plugins or if a plugin d
<access origin="*" />
<platform name="ios">
<!-- set platform :ios, defaults to 7.0 -->
<preference name="pods_ios_min_version" value="8.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"/>
<preference name="pods_use_frameworks" value="true" />
<!-- enable legacy swift mode, value can be either a boolean of a swift version -->
<preference name="pods_use_legacy" value="true" />
<!-- use the latest version of a pod -->
<pod name="LatestPod" />
<!-- use a specific version of a pod -->
Expand All @@ -97,10 +105,10 @@ This is useful if you need to resolve conflicts between plugins or if a plugin d
<!-- 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']"/>
<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"/>
<pod name="BadBundle" fix-bundle-path="Bad/Path.bundle" />
</platform>
</widget>
```
Expand All @@ -112,18 +120,18 @@ error: Resource ".../Build/Products/Debug-iphonesimulator/Lock/Auth0.bundle" not
```
Add the fix-bundle-path attribute to the pod tag with the path after the device. In this case:
```xml
<pod name="Lock" fix-bundle-path="Lock/Auth0.bundle"/>
<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](https://github.com/blakgeek/cordova-plugin-cocoapods-support-example).

## 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.
* 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](https://issues.apache.org/jira/browse/CB-10072). This might cause odd behavior in some projects.
* Enabling the pods_use_frameworks preference disables the bridged headers property added by
[CB-10072](https://issues.apache.org/jira/browse/CB-10072). This might cause odd behavior in some projects.


##TODO:
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cordova-plugin-cocoapod-support",
"version": "1.6.0",
"version": "1.7.0",
"description": "A Cordova/PhoneGap plugin to add support for Cocoapod dependencies.",
"cordova": {
"id": "cordova-plugin-cocoapod-support",
Expand Down
2 changes: 1 addition & 1 deletion plugin.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="cordova-plugin-cocoapod-support" version="1.6.0">
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" id="cordova-plugin-cocoapod-support" version="1.7.0">
<name>Cordova CocoaPods Dependency Support</name>
<author>Carlos "blakgeek" Lawton</author>
<description>A Cordova/PhoneGap plugin to add support for CocoaPods dependencies.</description>
Expand Down
Loading