Shazron's Cordova (aka PhoneGap) Blog

at Adobe Systems Inc.

Xcode 5.1 and Cordova iOS

with 112 comments

cordova_botUPDATE: Cordova CLI  3.4.1-0.1.0 is out, which includes Cordova iOS 3.4.1 which incorporates all the fixes mentioned in this blog post. Update your Cordova CLI, and if you have an existing project, do a “cordova platform update ios“.

These issues have been fixed if you are running the latest dev code (slated for 3.5.0).

There are 3 issues related to Cordova iOS 3.4.0 running with Xcode 5.1 (and its command-line tools):

1. CB-6150 – objc_msgSend causes EXC_BAD_ACCESS with plugins on arm64
2. CB-6223 – Build/linker errors
3. ios-sim does not work anymore

For the first issue, you need to look at the two files mentioned in this commit and patch the two lines affected.

For the second issue, you will need to update the Build Settings in your project. The steps are mentioned in the issue and reproduced below:

  1. Select your Project icon
  2. Choose Build Settings.
  3. For “Architectures”, select $ARCHS_STANDARD – Standard architectures (armv7, armv7s, arm64)
  4. For “Valid Architectures”, add “arm64″
  5. Select your CordovaLib.xcodeproj icon
  6. In the Build Settings for the Project (not Target), delete *all* the conditional architecture settings (hover to see the minus sign). This is what is recommended by Apple in their Xcode 5.1 Release Notes.
  7. For “Architectures”, select $ARCHS_STANDARD – Standard architectures (armv7, armv7s, arm64)
  8. For “Valid Architectures”, add “arm64″
  9. Goto 6, but now do it for “Target

For the third issue, you will have to update your ios-sim to version 1.9.0:

npm install -g ios-sim

ios-sim --version

Written by shazron

March 12, 2014 at 5:32 am

Posted in cordova, phonegap, xcode

Cordova iOS and iOS 7 Support

with 70 comments

PluginWith the release of Cordova 3.1.0, we added preliminary iOS 7 support, particularly the support of four new UIWebView properties: GapBetweenPages, PageLength, PaginationBreakingMode, and PaginationMode. There is more iOS 7 support added today in the core plugins listed below.

The config.xml parameters HideKeyboardFormAccessoryBar and KeyboardShrinksView also support the new iOS 7 keyboard. However, going forward these two properties have been removed in 3.2.0, and you will need to grab the new keyboard plugin (install using the plugin id org.apache.cordova.keyboard). The decision to remove this functionality into a plugin is so updates and fixes are not tied to a particular core release.

Also, the UIWebView properties stated above (as well as others related) will eventually be put into a plugin and not included in the core, the target for this is the 3.2.0 release.

These core plugins have been updated to support iOS 7:

There is also a new statusbar plugin (install using the plugin id org.apache.cordova.statusbar). This gives you an API to change the status bar to be like it was in iOS 6 (where the status bar does not overlay the webview). The plugin also gives you the ability to control the status bar appearance and visibility.

[UPDATE] The keyboard and statusbar plugin repos have been moved from the plugins branch of the cordova-labs repo to its own repo, cordova-plugins

Written by shazron

October 15, 2013 at 10:33 pm

Posted in cordova, phonegap

What’s new in Cordova iOS 3.0.0

with 13 comments

cordova_bot

Cordova 3.0.0 is released! Huge updates – more details in this blog post.
I have a blog post related to this as well - Streamline Cross-Platform Development Using Apache Cordova / PhoneGap CLI

To view a bug, change the bug number to this URL, e.g. http://issues.cordova.io/3999

* [CB-3999] Video Capture ignores duration option [iOS]
* [CB-4202] [CB-3681] Remove Contact plugin unit tests
* [CB-4202] [CB-3653] Remove EXIF (Camera plugin) unit tests
* [CB-4202] [CB-3726] Remove File Transfer plugin unit tests
* [CB-4202] [CB-3973] Remove unit test dependency on Dialogs plugin
* [CB-4202] [CB-1107] Remove unit tests for old plugin signature
* [CB-4202] [CB-4145] Remove use of useSplashScreen property by unit tests
* [CB-4095] Add some additional whitelist unit tests
* [CB-2608] Remove deprecate EnableLocation key from the config.xml file
* [CB-4104] Made config parameters case-insensitive.
* [CB-3530] PhoneGap app crashes on iOS with error “CDVWebViewDelegate: Navigation started when state=1″ (for navigation to an anchor on the same page)
* [CB-3701] Removed Capture.bundle from default project template for 3.0.0
* [CB-3530] Updated unit tests
* [CB-4025] iOS emulate command broken when run inside the cordova folder
* [CB-4037] Unable to Archive iOS projects for upload to App Store in 2.9
* [CB-4088] `cordova emulate ios` replaces spaces in project name with underscores, conflicting with `cordova build ios` behavior
* [CB-4145] Remove CDVViewController.useSplashScreen property
* [CB-3175] Change <plugin> to <feature> in config.xml and remove deprecation notice in iOS
* [CB-1107] Remove old plugin signature, update Plugin Dev Guide
* [CB-2180] Convert iOS project template to use ARC
* [CB-3448] bin/diagnose_project script fails if CORDOVALIB variable not in prefs plist
* [CB-4199] iOS Platform Script `run –device` uses Simulator
* [CB-3530] PhoneGap app crashes on iOS with error “CDVWebViewDelegate: Navigation started when state=1″ (for navigation to an anchor on the same page)
* [CB-3567] Redirect initiated in JavaScript fails the app from loading
* Removed iphone/beep.wav since it is already contained in the dialogs core plugin
* Have create script include .gitignore file.
* Removed all core plugins (including console logger) to their own repos (install them using cordova-cli or plugman)

Written by shazron

July 19, 2013 at 3:51 pm

Posted in cordova, phonegap

What’s new in Cordova iOS 2.9.0

leave a comment »

cordova_bot

Just a regular bug fix update, nothing much really. We’re pushing this release quickly so we can get going on 3.0.0 for PhoneGap Day US, details in this blog post. Lots of cool changes in the pipeline!

Highlights of this release:

  • new InAppBrowser option (start hidden)
  • device.name removed
  • a bunch of bug fixes
  • a fix so a Cordova project can deploy to device on OS X 10.9 Mavericks

* [CB-3469] Add a version macro for 2.8.0.
* [CB-3469] Adding missing license found by RAT
* [CB-2200] Remove device.name (deprecated)
* [CB-3031] Fix for emulate script when project name has a space
* [CB-3420] add hidden option to InAppBrowser
* [CB-2840] Nil checks to avoid crash when network disconnected
* [CB-3514] Remove partially-downloaded files when FileTransfer fails
* [CB-2406] Add ArrayBuffer support to FileWriter.write
* [CB-3757] camera.getPicture from photolib fails on iOS
* [CB-3524] cordova/emulate and cordova/run silently fails when ios-sim is not installed
* [CB-3526] typo in cordova/lib/install-emulator – does not check for ios-sim
* [CB-3490] Update CordovaLib iOS Deployment Target in Project Setting to 5.0
* [CB-3528] Update Plugin Upgrade Guide for iOS
* [CB-3530] PhoneGap app crashes on iOS with error “CDVWebViewDelegate: Navigation started when state=1″
* [CB-3768] Build to phone failing on Xcode 5 DP1 (OS X Mavericks)
* [CB-3833] Deprecation plugin tag upgrade step has malformed xml
* [CB-3743] Remove compatibility headers folder
* [CB-3619] ./cordova/run script does not always call ./cordova/build first
* [CB-3463] bin/create should copy cordova.js into the project’s CordovaLib
* [CB-3530] PhoneGap app crashes on iOS with error “CDVWebViewDelegate: Navigation started when state=1″ (for navigation to an anchor on the same page)
* [CB-3507] Wrong Linker Flag for project template
* [CB-3458] remove all_load dependency. Use force load instead
* Removing “build” from gitignore as one of our cli scripts is named build :)
* Added/renamed CDVExifTests to test project.

Written by shazron

June 27, 2013 at 9:47 pm

Posted in cordova, phonegap

What’s new in Cordova iOS 2.8.0

with 2 comments

cordova_botHighlights:

  • deprecation of the <plugin> tag in config.xml (replaced by <feature>)
  • cordova-XXX.js is just cordova.js now (on all platforms)
  • new InAppBrowser options
  • EXIF metadata writing for photos
  • New command line scripts for your project

* [CB-2840] Nil checks to avoid crash when network disconnected
* [CB-3416] adding empty element during deprecation window.
* [CB-3006] Customize InAppBrowser location bar
* [CB-3405] InAppBrowser option to hide bottom bar with Done/History buttons
* [CB-3394] Cordova iOS crashes when multiple access elements in config.xml
* [CB-3166] Add deprecation notice for use of <plugin> in config.xml in iOS
* [CB-2905] Exif geolocation meta data tag writing
* [CB-3307] Rename cordova-ios.js -> cordova.js
* [CB-1108] Convert <plugin> -> <feature> with <param>
* [CB-3321] Fix bogus “failed whitelist” log messages
* [CB-3311] add default textbox for notification prompt
* [CB-2846] SplashScreen crashes app when image not available
* [CB-2789] Remove CaptureOptions.mode support.
* [CB-3295] Send InAppBrowser loadstart events when redirects occur
* [CB-2896] added ImageIO and OpenAL system frameworks to support new exif functionality in CDVCamera
* [CB-2896] writing data to object through CGImageDestinationRef, enables multipart exif tag writing
* [CB-2958] simple fix, moved write to photealbum code and sourced from modified data. Photo data returned by cordova will match photo on cameraroll
* [CB-3339] add version to command line scripts
* [CB-3377] Remove cordova/release script
* [CB-2974] Add a ./cordova/lib/list-devices project-level helper script to iOS
* [CB-2951] Add a ./cordova/lib/list-emulator-images project-level helper script to iOS
* [CB-2974] Add a ./cordova/lib/list-devices project-level helper script to iOS
* [CB-2966] Add a ./cordova/lib/list-started-emulators as project-level helper script to iOS
* [CB-2990] Add a ./cordova/lib/install-device project-level helper script to iOS
* [CB-2982] Add a ./cordova/lib/install-emulator project-level helper script to iOS
* [CB-2998] Add a ./cordova/lib/start-emulator project-level helper script to iOS
* [CB-2916] Add a ./cordova/clean project-level script for iOS
* [CB-2053] Update UIImagePickerController label to reflect video media type in CDVCamera
* [CB-3530] PhoneGap app crashes on iOS with error “CDVWebViewDelegate: Navigation started when state=1″

Written by shazron

June 11, 2013 at 11:38 pm

Posted in cordova, phonegap

What’s new in Cordova iOS 2.7.0

with 10 comments

cordova_botMainly bug fixes, the only highlights are new features for InAppBrowser – executeScript() and insertCSS(). Download 2.7.0.

1. Script Updates

  • [CB–2849] Fix bin/create when CordovaLib parent dir has a space
  • [CB–2788] add ./bin/check_reqs script to iOS
  • [CB–3048] Add –arc flag to create script, support arc in template.

2. FileTransfer Updates

  • [CB–2537] Implement streaming downloads for FileTransfer
  • [CB–2190] Allow FileTransfer uploads/downloads to continue in background
  • [CB–1518] Request content length in parallel with download for gzipped content
  • [CB–51] Added httpMethod for file transfer options (defaults to POST)
  • [CB–2824] Remove DebugConsole plugin
  • [CB–3066] Fire onNativeReady from JS, as bridge is available immediately

3. Whitelist Updates

  • [CB–3032] Add whitelist support for custom schemes.
  • [CB–3067] iOS 5.0 file urls are not passing whitelist due to recent changes

4. Miscellaneous

  • [CB–2725] Fix www deploy issues with symlinks
  • [CB–2732] Only set camera device when allowed.
  • [CB–2911] Updated resolveLocalFileSystemURI.
  • [CB–2587] Added plugin timing for plugins that are loaded on startup (plugin ‘onload’ attribute)
  • [CB–2848] ShowSplashScreenSpinner not used
  • [CB–2960] Changing the volume of a sound already playing
  • [CB–3021] Can no longer import CDVPlugin.h from plugin Objective-C++ code
  • [CB–2698] Fix load detection when pages have redirects.

5. Camera EXIF Updates

  • [CB–2902] re-added long/short tags to template dict, fixed subExifIFD offset
  • [CB–2896] Multipart exif tags are not written correctly
  • [CB–2790] Removed old splice code, replaced with JpegHeaderWriter api calls
  • [CB–3039] iOS Exif date length mismtach
  • [CB–3052] iOS Exif SubIFD offsets incorrect

6. InAppBrowser Updates

Written by shazron

May 3, 2013 at 11:08 pm

Posted in cordova, phonegap

Cordova/PhoneGap and the new Apple App Store Requirements

with 4 comments

Beginning May 1st 2013, apps submitted to the Apple App Store…

1. must be built for iOS devices with Retina display and iPhone apps must also support the 4-inch display on iPhone 5

2. will no longer accept new apps or app updates that access UDIDs

Cordova/PhoneGap fulfills requirement (1) since version 2.5.0 and fulfills requirement (2) since version 1.7.0.

But what if my Cordova/PhoneGap app, which I am unwilling to upgrade, needs to be updated and submitted to the App Store?

You will have to manually update and patch your code. It’s not going to be an easy task, and I should warn you that upgrading will be easier. The main changes are to handle the iPhone 5 sized splashscreen, and the code to handle that is only in Cordova/PhoneGap 2.5.0. You can include the iPhone 5 sized asset and this will trigger the app to be the right size, but because of our splashscreen support it needs to match iOS showing the splashscreen after that splashscreen disappears. See our SplashScreen API for more details.

To be doubly sure – select your project icon in the Project Navigator in Xcode, then select the Summary tab. Select your project target then review the App Icons and Launch Images sections – you’ll see if you are missing anything or whether the assets are not the right sizes (denoted by the yellow triangle icon with an exclamation point in it).

Written by shazron

May 1, 2013 at 7:48 pm

Posted in cordova, phonegap, xcode

Follow

Get every new post delivered to your Inbox.

Join 1,413 other followers

%d bloggers like this: