Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CB-13247 - Blog post for Cordova iOS 4.5.0 Release #727

Closed
wants to merge 2 commits into from
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
72 changes: 72 additions & 0 deletions www/_posts/2017-09-08-ios-release.md
@@ -0,0 +1,72 @@
---
layout: post
author:
name: Shazron Abdullah
url: https://twitter.com/shazron
title: "Cordova iOS 4.5.0"
categories: announcements
tags: news releases
---

We are happy to announce a minor version of `Cordova iOS 4.5.0` has been released!

Three new features were added:
1. [CB-12937](https://issues.apache.org/jira/browse/CB-12937) - Plugins can receive `handleOpenURLWithApplicationSourceAndAnnotation:` now (new selector, that sends the URL with additional metadata)
2. [CB-13164](https://issues.apache.org/jira/browse/CB-13164) - Integrated cordova-plugin-console to build in support for window.console.
3. [CB-10916](https://issues.apache.org/jira/browse/CB-10916) - Support [display name](/docs/en/dev/config_ref/index.html#name) for **iOS**

Note that for [CB-13164](https://issues.apache.org/jira/browse/CB-13164) if you already included `cordova-plugin-console` in your project, you must **remove** that plugin if not your project will not build.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps

Important! If you have included cordova-plugin-console in your project, you must remove it, otherwise your project will not build.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, this needs to be called out more prominently

Copy link
Member

@janpio janpio Sep 9, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does it really not build? As this plugin is part of many, many projects (Ionic includes it by default) this would affect a lot of people.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, it ends up with duplicate symbol linker errors:

duplicate symbol _OBJC_CLASS_$_CDVLogger in:
    /Users/me/Library/Developer/Xcode/DerivedData/Project/Build/Intermediates/ArchiveIntermediates/Project/IntermediateBuildFilesPath/Project.build/Release-iphoneos/Project.build/Objects-normal/arm64/CDVLogger.o
    platforms/ios/build/device/libCordova.a(CDVLogger.o)
duplicate symbol _OBJC_METACLASS_$_CDVLogger in:
    /Users/me/Library/Developer/Xcode/DerivedData/Project/Build/Intermediates/ArchiveIntermediates/Project/IntermediateBuildFilesPath/Project.build/Release-iphoneos/Project.build/Objects-normal/arm64/CDVLogger.o
    platforms/ios/build/device/libCordova.a(CDVLogger.o)
ld: 2 duplicate symbols for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks all -- I'll add the change to make it more prominent.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes added.


If you ever needed to disable the built in console plugin, comment out or remove the `Console` `<feature>` tag in your platform specific `config.xml`, and/or call this right after the `deviceready` event:
Copy link
Member

@janpio janpio Sep 9, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is a "platform specific config.xml" - there is only one in my projects.
Does this refer to <platform name="ios">?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in platforms/platformName there is a platform specific config.xml for platformName

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that disabling the plugin will not get rid of the potential linker error conflict, it just disables the included plugin at runtime.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, didn't know about these config.xml files. These never get modified normally, do they?

(There is this "meme" in lots of StackOverflow, forum and blog posts that you should remove the console plugin before building a production build because "security" or "performance")

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They are build artifacts. Unfortunately this instruction is the best we can do with the current way its implemented. There is no way to remove "private" plugins to a platform. Since we are moving to npm in the way the CLI does things, the plugins could be local to the platform folder, and we could add them as dependencies instead which is installed by the CLI. That would make it less coupled like it is right now.


cordova.require('cordova/plugin/ios/logger').useLogger(false);

Other notable issues:

1. Updated `ios-deploy` dependency to v1.9.2, which contains a fix for Xcode 9
2. Updated the bundled `ios-sim` to v6.0.0 with support for newer iPads (and this fixes some related bugs)
3. New `<access>` tag attribute `allows-arbitrary-loads-for-media` (which reflects the correct App Transport Security value). The old attribute `allows-arbitrary-loads-in-media` is deprecated.
<br />

**Note:** When updating **iOS**, make sure to save your plugins as current unsaved plugins may not be reinstalled otherwise. Run the following command in your project to save your currently installed plugins into `config.xml`:

cordova plugin save

To upgrade:

npm install -g cordova
cd my_project
cordova platform rm ios
cordova platform add ios@4.5.0

To add it explicitly:

cordova platform add ios@4.5.0

<!--more-->
## What's new in iOS

* [CB-13247](https://issues.apache.org/jira/browse/CB-13247) updated checked-in node_modules
* [CB-13212](https://issues.apache.org/jira/browse/CB-13212) - Update `cordova-ios` with new cordova-common that parses new attribute for access tag
* [CB-13240](https://issues.apache.org/jira/browse/CB-13240) - Update **iOS**-deploy dependency to 1.9.2
* [CB-12830](https://issues.apache.org/jira/browse/CB-12830) - cordova emulate **iOS** with --target throws undefined error (#332)
* [CB-13210](https://issues.apache.org/jira/browse/CB-13210) - App Transport Security Key is wrong (#331)
* [CB-13164](https://issues.apache.org/jira/browse/CB-13164) fixed local require, updated cordova.js (#333)
* [CB-13222](https://issues.apache.org/jira/browse/CB-13222) - (iOS) Infinite Loop when a "NSURLErrorCancelled -999" is received on didFailLoadWithError (#334)
* [CB-12937](https://issues.apache.org/jira/browse/CB-12937) - (iOS) added new method handleOpenURLWithApplicationSourceAndAnno… (#321)
* [CB-13164](https://issues.apache.org/jira/browse/CB-13164) Integrated cordova-plugin-console to build in support for window.console. (#330)
* [CB-13112](https://issues.apache.org/jira/browse/CB-13112) - <resource-file> should not create a new file reference on each "cordova prepare" (#329)
* [CB-13093](https://issues.apache.org/jira/browse/CB-13093) (iOS) Infinite looping when stressing navigation (#328)
* [CB-12966](https://issues.apache.org/jira/browse/CB-12966) (ios) Fix bug by escaping project name in podfile template
* [CB-12895](https://issues.apache.org/jira/browse/CB-12895) : removed jshint and added eslint
* [CB-12960](https://issues.apache.org/jira/browse/CB-12960) Run tests on Node 4.x and 6.x This closes #323
* [CB-12948](https://issues.apache.org/jira/browse/CB-12948) - Add a warning to updateProject for **iOS**
* [CB-10916](https://issues.apache.org/jira/browse/CB-10916) Support display name for **iOS**
* [CB-12887](https://issues.apache.org/jira/browse/CB-12887) - cordova run --list does not show virtual devices in **iOS** 11
* [CB-12762](https://issues.apache.org/jira/browse/CB-12762) : point `package.json` repo items to github mirrors instead of apache repos site
* [CB-12675](https://issues.apache.org/jira/browse/CB-12675) - Travis xcode 8.3. os-x image fails an e2e test
* [CB-12869](https://issues.apache.org/jira/browse/CB-12869) - Update bundled **iOS**-sim to 6.0.0
* [CB-12856](https://issues.apache.org/jira/browse/CB-12856) - Skip CocoaPods check_reqs if on non-darwin (macOS) platform
* [CB-8980](https://issues.apache.org/jira/browse/CB-8980) Ensure copied resource-files are cleaned
* [CB-12847](https://issues.apache.org/jira/browse/CB-12847) added `bugs` entry to `package.json`.
* Updated cordova-common to 2.1.0 and other bundled node_modules