# Apache Cordova Documentation

# Upgrading iOS

This guide shows how to modify iOS projects to upgrade from older versions of Cordova. Most of these instructions apply to projects created with an older set of command-line tools that precede the `cordova` CLI utility. See The Command-Line Interface for information how to update the version of the CLI.

NOTE: Xcode 4.6 is required, Xcode 5 is recommended. Currently, to submit to the Apple App Store, you should use the latest shipped version of the iOS SDK, which is iOS 7. iOS 7 SDK is not required yet, but this may change quickly.

## Upgrading 3.1.0 Projects to 3.2.0

For non-CLI projects, run:

        bin/update path/to/project

For CLI projects:

1. Update the `cordova` CLI version. See The Command-Line Interface.

2. Run `cordova platform update ios`

## Upgrading 3.0.0 Projects to 3.1.0

For non-CLI projects, run:

        bin/update path/to/project

For CLI projects:

1. Update the `cordova` CLI version. See The Command-Line Interface.

2. Run `cordova platform update ios`

iOS 7 Issues:

1. Remove `width=device-width, height=device-height` from the `index.html` file's `viewport` `meta` tag. (See the relevent bug.)

2. Update your media, media-capture and splashscreen core plugins for iOS 7 support.

Xcode 5 Issues:

1. Update your Project Settings if Xcode 5 prompts you to do so (in the Issues Navigator).

2. Update your Compiler for C/C++/Objective-C setting, under the Build Settings tab, Build Options section. Choose Default compiler (Apple LLVM 5.0).

## Upgrade to the CLI (3.0.0) from 2.9.0

1. Create a new Apache Cordova 3.0.0 project using the cordova CLI, as described in The Command-Line Interface.

2. Add your platforms to the cordova project, for example: `cordova platform add ios`.

3. Copy the contents of the project's `www` directory to the `www` directory at the root of the cordova project you just created.

4. Copy or overwrite any native assets from your original project (`Resources`, etc.), making sure to add any new files to the `.xcodeproj` project. The iOS project builds inside the `platforms\ios` directory.

5. Copy your `config.xml` into the `www` directory, and remove any plugin definitions. Modify settings here instead of the platform directory.

6. Use the cordova CLI tool to install any plugins you need. Note that the CLI handles all core APIs as plugins, so they may need to be added. Only 3.0.0 plugins are compatible with the CLI.

7. Build and test.

## Upgrading 2.9.0 Projects to 3.0.0

1. Download and extract the Cordova 3.0.0 source to a permanent directory location on your hard drive, for example to `~/Documents/Cordova-3.0.0`.

2. Quit Xcode if it is running.

3. Using Terminal.app, navigate to the directory where you put the downloaded source above.

4. Create a new project, as described in iOS Command-line Tools. You need the assets from this new project.

5. Copy the `www/cordova.js` (note that it does not have a version suffix anymore, the version is in the file itself in the header) file from the new project into your `www` directory, and delete your `www/cordova.js` file.

6. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova.js` file.

7. Delete your `CordovaLib` directory, and copy the `CordovaLib` directory from the new project into your project's root directory.

NOTE: Starting with Cordova 3.0.0, plugins are not pre-installed, and you need to use the `plugman` command-line utility to install them yourself. See Using Plugman to Manage Plugins.

## Upgrading 2.8.0 Projects to 2.9.0

1. Download and extract the Cordova 2.9.0 source to a permanent directory location on your hard drive, for example to `~/Documents/Cordova-2.9.0`.

2. Quit Xcode if it is running.

3. Using Terminal.app, navigate to the directory where you put the downloaded source above.

4. Create a new project, as described in iOS Command-line Tools. You need the assets from this new project.

5. Copy the `www/cordova.js` (note that it does not have a version suffix anymore, the version is in the file itself in the header) file from the new project into your `www` directory, and delete your `www/cordova.js` file.

6. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova.js` file.

7. Delete your `CordovaLib` directory, and copy the `CordovaLib` directory from the new project into your project's root directory.

## Upgrading 2.7.0 Projects to 2.8.0

1. Download and extract the Cordova 2.8.0 source to a permanent directory location on your hard drive, for example to `~/Documents/Cordova-2.8.0`.

2. Quit Xcode if it is running.

3. Using Terminal.app, navigate to the directory where you put the downloaded source above.

4. Create a new project, as described in iOS Command-line Tools. You need the assets from this new project.

5. Copy the `www/cordova.js` (note that it does not have a version suffix anymore, the version is in the file itself in the header) file from the new project into your `www` directory, and delete your `www/cordova-2.7.0.js` file.

6. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova.js` file.

7. Update any `<plugin>` tags in the `config.xml` file to `<feature>` tags. Note that existing `<plugin>` tags still work, but are deprecated. You can copy this information in the `config.xml` file for a new project. For example:

       <plugins>
           <plugin name="LocalStorage" value="CDVLocalStorage" />
           <!-- other plugins -->
       </plugins>

       <!-- change to: (note that a <feature> tag is on the same level as <plugins> -->
       <feature name="LocalStorage">
           <param name="ios-package" value="CDVLocalStorage" />
       </feature>
       <!-- other <feature> tags -->

8. Delete the `CordovaLib` directory, and copy the `CordovaLib` directory from the new project into your project's root directory.

9. Add these two frameworks to your project:

       OpenAL
       ImageIO

10. Update your project's target Build Settings. Under Linking → Other Linker Flags, edit "-Obj-C" to be "-ObjC".

11. Update your project's target Build Settings. Under Linking → Other Linker Flags, change "-all_load" to be `-force\_load ${BUILT\_PRODUCTS\_DIR}/libCordova.a`. You would only need to do this if you have the problem defined in this issue..

## Upgrading 2.6.0 Projects to 2.7.0

1. Download and extract the Cordova 2.7.0 source to a permanent directory location on your hard drive, for example to `~/Documents/Cordova-2.7.0`.

2. Quit Xcode if it is running.

3. Using Terminal.app, navigate to the directory where you put the downloaded source above.

4. Create a new project, as described in iOS Command-line Tools. you need the assets from this new project.

5. Copy the `www/cordova-2.7.0.js` file from the new project into your `www` directory, and delete your `www/cordova-2.6.0.js` file.

6. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-2.7.0.js` file.

7. Update (or replace, if you never changed the file) your `AppDelegate.m` file according to the one from the new project (see this diff).

8. In your `config.xml` file, remove this line.

9. Delete your `CordovaLib` directory, and copy the `CordovaLib` directory from the new project into your project's root directory.

## Upgrading 2.5.0 Projects to 2.6.0

1. Download and extract the Cordova 2.6.0 source to a permanent directory location on your hard drive, for example to `~/Documents/Cordova-2.6.0`.

2. Quit Xcode if it is running.

3. Using Terminal.app, navigate to the directory where you put the downloaded source above.

4. Create a new project, as described in iOS Command-line Tools. You need the assets from this new project.

5. Copy the project's `www/cordova-2.6.0.js` file into your `www` directory, and delete your `www/cordova-2.5.0.js` file.

6. Update the Cordova script reference in your `www/index.html` file (along with any other files that reference the script) to refer to the new `cordova-2.6.0.js` file.

7. Update (or replace, if you never changed the file) your `AppDelegate.m` file according to the one from the new project (see this diff).

8. In your `config.xml` file, add this new line.

9. In your `config.xml` file, add this new line.

10. In your `config.xml` file, UIWebViewBounce has been changed to DisallowOverscroll, and default values are different.

11. In your `config.xml` file, the `EnableLocation` preference has been deprecated.

12. Delete your `CordovaLib` directory, and copy the `CordovaLib` directory from the new project into your project's root directory.

## Upgrading 2.4.0 Projects to 2.5.0

1. Download and extract the Cordova 2.5.0 source to a permanent directory location on your hard drive, for example to `~/Documents/Cordova-2.5.0`.

2. Quit Xcode if it is running.

3. Using Terminal.app, navigate to the directory where you put the downloaded source above.

4. Create a new project, as described in iOS Command-line Tools. You need the assets from this new project.

5. Copy the `www/cordova-2.5.0.js` file from the new project into your `www` directory and delete your `www/cordova-2.4.0.js` file.

6. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-2.5.0.js` file.

7. Update (or replace, if you never changed the file) your `AppDelegate.m` file according to the one from the new project (see this diff).

8. In your `config.xml` file, add these new lines.

9. In your `config.xml` file, edit the root element, change it from cordova to widget.

10. In your `config.xml` file, remove the OpenAllWhitelistURLsInWebView preference.

11. Delete your `cordova` directory, and copy the `cordova` directory from the new project into your project's root directory. In 2.5.0, this has updated scripts.

12. Delete your `CordovaLib` directory, and copy the `CordovaLib` directory from the new project into your project's root directory.

## Upgrading 2.3.0 Projects to 2.4.0

1. Download and extract the Cordova 2.4.0 source to a permanent directory location on your hard drive, for example to `~/Documents/Cordova-2.4.0`.

2. Quit Xcode if it is running.

3. Using Terminal.app, navigate to the directory where you put the downloaded source above.

4. Create a new project, as described in iOS Command-line Tools. You need the assets from this new project.

5. Copy the `www/cordova-2.4.0.js` file from the new project into your `www` directory, and delete your `www/cordova-2.3.0.js` file.

6. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-2.4.0.js` file.

7. Update (or replace, if you never changed the files) your `MainViewController.m` file according to the one from the new project (see this diff).

8. Update (or replace, if you never changed the file) your `AppDelegate.m` file according to the one from the new project (see this diff).

9. In your `config.xml` file, add this new line.

10. Delete your `cordova` directory, and copy the `cordova` directory from the new project into your project's root directory. In 2.4.0, this has fixed scripts.

11. Delete your `CordovaLib` directory, and copy the `CordovaLib` directory from the new project into your project's root directory.

12. Add AssetsLibrary.framework as a resource to your project. (See Apple's documentation for instructions on how to do so.).

## Upgrading 2.2.0 Projects to 2.3.0

1. Download and extract the Cordova 2.3.0 source to a permanent directory location on your hard drive, for example to `~/Documents/Cordova-2.3.0`.

2. Quit Xcode if it is running.

3. Using Terminal.app, navigate to the directory where you put the downloaded source above.

4. Create a new project, as described in iOS Command-line Tools. You need the assets from this new project.

5. Copy the `www/cordova-2.3.0.js` file from the new project into your `www` directory, and delete your `www/cordova-2.2.0.js` file.

6. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-2.3.0.js` file.

7. Update (or replace, if you never changed the file) your `MainViewController.m` according to the one from the new project.

8. Delete your `cordova` directory, and copy the `cordova` directory from the new project into your project's root directory. In 2.3.0, this has new scripts.

9. Delete your `CordovaLib` directory, and copy the `CordovaLib` directory from the new project into your project's root directory.

10. Convert your `Cordova.plist` file to `config.xml`, by running the script `bin/cordova\_plist\_to\_config\_xml` on your project file.

11. Add the InAppBrowser plugin to your `config.xml`, by adding this tag under `<cordova><plugins>`:

        <plugin name="InAppBrowser" value="CDVInAppBrowser" />

12. Note that Objective-C plugins are not whitelisted anymore. To whitelist your connections with the app whitelist, you need to set the `User-Agent` header of the connection to the same user-agent as the main Cordova WebView. You can get this by accessing the `userAgent` property off the main view-controller. The main view-controller (`CDVViewController`) also has a `URLisAllowed` method for you to check whether a URL passes the whitelist.

13. Device API changes:

    - For iOS, device.platform used to return `iPhone`, `iPad` or `iPod Touch`; now it returns (correctly) `iOS`.
    - For iOS, device.name (now deprecated for all platforms) used to return the name of the user’s device (e.g ‘Shazron’s iPhone 5′); now it returns what device.platform used to return: `iPhone`, `iPad` or `iPod Touch`.
    - For all platforms, there is a new property called device.model; this returns the specific device model, e.g `iPad2,5` (for other platforms, this returns what device.name used to return).

## Upgrading 2.1.0 Projects to 2.2.0

1. Download and extract the Cordova 2.2.0 source to a permanent directory location on your hard drive, for example to `~/Documents/Cordova-2.2.0`.

2. Quit Xcode if it is running.

3. Using Terminal.app, navigate to the directory where you put the downloaded source above.

4. Create a new project, as described in iOS Command-line Tools. You need the assets from this new project.

5. Copy the `www/cordova-2.2.0.js` file from the new project into your `www` directory, and delete your `www/cordova-2.1.0.js` file.

6. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-2.2.0.js` file.

7. Update (or replace, if you never changed the file) your `MainViewController.m` according to the one from the new project:

   - Updated → viewWillAppear

8. Copy the `cordova` directory from the new project into your project's root directory. In 2.2.0, this has an updated 'emulate' script.

9. Next, update your `CordovaLib` sub-project reference. Beginning with Cordova 2.1.0, we are not using the CORDOVALIB Xcode variable anymore when referencing where `CordovaLib` resides, the reference is an absolute file reference now.

   1. Launch Terminal.app
   2. Go to the location where you installed Cordova (see Step 1), in the `bin` subdirectory

   3. Run the script below where the first parameter is the path to your project's `.xcodeproj` file:

      `update_cordova_subproject path/to/your/project/xcodeproj`

NOTE: In 2.2.0, the `bin/create` script copy in the `CordovaLib` sub-project into your project. To have the same kind of setup, just copy in the right `CordovaLib` into your project directory, and update the `CordovaLib` sub-project location (relative to the project) in the Xcode File Inspector.

## Upgrading 2.0.0 Projects to 2.1.0

With Cordova 2.1.0, `CordovaLib` has been upgraded to use Automatic Reference Counting (ARC). You don't need to upgrade to ARC to use CordovaLib, but if you want to upgrade your project to use ARC, please use the Xcode migration wizard from the menu: Edit → Refactor → Convert to Objective-C ARC..., de-select libCordova.a, then run the wizard to completion.

1. Download and extract the Cordova 2.1.0 source to a permanent directory location on your hard drive, for example to `~/Documents/Cordova-2.1.0`.

2. Quit Xcode if it is running.

3. Using Terminal.app, navigate to the directory where you put the downloaded source above.

4. Create a new project, as described in iOS Command-line Tools. You need the assets from this new project.

5. Copy the `www/cordova-2.1.0.js` file from the new project into your `www` directory, and delete your `www/cordova-2.0.0.js` file.

6. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-2.1.0.js` file.

7. Update (or replace, if you never changed the file) your `AppDelegate.m` according to the one from the new project:

   - Edited → application:didFinishLaunchingWithOptions:
   - Added → application:supportedInterfaceOrientationsForWindow:

8. Update (or replace, if you never changed the file) your `MainViewController.m` according to the one from the new project:

   - Added → viewWillAppear

9. Copy the `cordova` directory from the new project into your project's root directory. In 2.1.0, this has the updated scripts to support paths with spaces.

10. Remove the `VERSION` file reference from your project (not the one in `CordovaLib`).

11. Next, update your `CordovaLib` sub-project reference. Beginning with Cordova 2.1.0, we are not using the CORDOVALIB Xcode variable anymore when referencing where `CordovaLib` resides, the reference is an absolute file reference now.

    1. Launch Terminal.app
    2. Go to the location where you installed Cordova (see Step 1), in the `bin` subdirectory

    3. Run the script below where the first parameter is the path to your project's `.xcodeproj` file:

       `update_cordova_subproject path/to/your/project/xcodeproj`

## Upgrading 1.9.0 Projects to 2.0.0

1. Install Cordova 2.0.0.

2. Create a new project, as described in iOS Command-line Tools. You need the assets from this new project.

3. Copy the `www/cordova-2.0.0.js` file from the new project into your `www` directory, and delete your `www/cordova-1.9.0.js` file.

4. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-2.0.0.js` file.

5. Copy the `cordova` directory from the new project into your project's root directory (if you want the project command-line tools).

6. Add a new entry under `Plugins` in your `Cordova.plist` file, under the Supporting Files group. The key is `Device` and the value is `CDVDevice`.

7. Remove `Cordova.framework`.

8. Remove `verify.sh` from the Supporting Files group.

9. Select the project icon in the Project Navigator, select your project Target, then select the Build Settings tab.

10. Search for Preprocessor Macros, then remove all CORDOVA_FRAMEWORK=1 values.

11. Locate the `CordovaLib` directory that was installed in your hard-drive under your home folder's `Documents` subdirectory.

12. Locate the `CordovaLib.xcodeproj` file in the `CordovaLib` directory, then drag and drop the file into your project. It should appear as a sub-project.

13. Build your project, you should get some errors relating to `#import` directives.

14. For the `#import` errors, change any quote-based imports in this style:

        #import "CDV.h"

    to this brackets-based style:

        #import <Cordova/CDV.h>

    and remove any `#ifdef` wrappers around any Cordova imports, they are not needed anymore (the imports are now unified)

15. Build your project again, and it should not have any `#import` errors.

16. Select the project icon in the Project Navigator, select your project Target, then select the Build Phases tab.

17. Expand the Target Dependencies phase, then select the + button.

18. Select the `CordovaLib` target, then select the Add button.

19. Expand the first Link Binary with Libraries phase (it should already contain a bunch of frameworks), then select the + button.

20. Select the `libCordova.a` static library, then select the Add button.

21. Delete the Run Script phase.

22. Select the project icon in the Project Navigator, select your project Target, then select the Build Settings tab.

23. Search for Other Linker Flags, and add the values -force_load and -Obj-C.

24. Expand the `CordovaLib` sub-project.

25. Locate the `VERSION` file, drag it into your main project (we want to create a link to it, not a copy).

26. Select the Create groups for any added folders radio button, then select the Finish button.

27. Select the `VERSION` file that you just dragged in a previous step.

28. Type the Option-Command-1 key combination to show the File Inspector (or menuitem View → Utilities → Show File Inspector).

29. Choose Relative to CORDOVALIB in the File Inspector for the drop-down menu for Location.

30. Set the Xcode preference Xcode Preferences → Locations → Derived Data → Advanced... to Unique, so that the unified headers can be found.

31. Select the project icon in the Project Navigator, select your Target, then select the Build Settings tab.

32. Search for Header Search Paths. For that setting, append these three values, including quotes:

        "$(TARGET_BUILD_DIR)/usr/local/lib/include"

        "$(OBJROOT)/UninstalledProducts/include"

        "$(BUILT_PRODUCTS_DIR)"

33. Search for Other Linker Flags. For that setting, append this value:

        -weak_framework CoreFoundation

34. Build your project, it should compile and link with no issues.

35. Select your project from the Scheme drop-down, and then select iPhone 5.1 Simulator.

36. Select the Run button.

NOTE: If your project is not working as expected in the Simulator, please take a note of any errors in the console log in Xcode for clues.

## Upgrading 1.8.x Projects to 1.9.0

1. Install Cordova 1.9.0.

2. Create a new project. You will need some of the assets from this new project.

3. Copy the `www/cordova-1.9.0.js` file from the new project into your `www` directory, and delete your `www/cordova-1.8.x.js` file.

4. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-1.9.0.js` file.

NOTE: 1.9.0 supports the new `BackupWebStorage` boolean `Cordova.plist` setting. It's enabled by default, so set it to `false` to disable it, especially on iOS 6. See Release Notes: Safari and UIKit Section

## Upgrading 1.7.0 Projects to 1.8.x

1. Install Cordova 1.8.0.

2. Create a new project. You will need some of the assets from this new project.

3. Copy the `www/cordova-1.8.0.js` file from the new project into your `www` directory, and delete your `www/cordova-1.7.x.js` file.

4. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-1.8.0.js` file.

If you intend on using the Capture API, you will need the new iPad retina-display assets:

1. Copy the `Resources/Capture.bundle` item from the new project into your project directory, over-writing your existing `Resources/Capture.bundle` item.

2. In your project, select the `Capture.bundle` item into your Project Navigator in Xcode, type the Delete key, then select Remove Reference from the resulting dialog.

3. Drag the new `Capture.bundle` from Step 1 above into your Project Navigator in Xcode, then select the Create groups for any added folders radio button.

## Upgrading 1.6.x Projects to 1.7.0

1. Install Cordova 1.7.0.

2. Create a new project. You will need some of the assets from this new project.

3. Copy the `www/cordova-1.7.0.js` file from the new project into your `www` directory, and delete your `www/cordova-1.6.0.js` file.

4. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-1.7.0.js` file.

## Upgrading 1.5.0 Projects to 1.6.x

1. Install Cordova 1.6.1.

2. Make a backup of `AppDelegate.m`, `AppDelegate.h`, `MainViewController.m`, `MainViewController.h`, and `Cordova.plist` in your project.

3. Create a new project. You will need some of the assets from this new project.

4. Copy these files from the new project into your 1.5.0-based project directory on disk, replacing any old files (backup your files first from step 2 above):

       AppDelegate.h
       AppDelegate.m
       MainViewController.h
       MainViewController.m
       Cordova.plist

5. Add all the new `MainViewController` and `AppDelegate` files into your Xcode project.

6. Copy the `www/cordova-1.6.1.js` file from the new project into your `www` directory, and delete your `www/cordova-1.5.0.js` file.

7. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `cordova-1.6.1.js` file.

8. Add the new `Cordova.plist` file into your project. This is necessary because the core plugin service names must change to match the ones from Android and BlackBerry, for a unified Cordova JavaScript file (`cordova-js`).

9. Integrate any settings, Plugins and ExternalHosts entries that you had in your backed-up Cordova.plist into the new `Cordova.plist`.

10. Integrate any project-specific code that you have in your backed-up `AppDelegate.h` and `AppDelegate.m` into the new `AppDelegate` files. Any `UIWebViewDelegate` or `CDVCommandDelegate` code in `AppDelegate.m` needs to go into `MainViewController.m` now (see commented-out sections in that file).

11. Integrate any project-specific code that you have in your backed-up `MainViewController.h` and `MainViewController.m` into the new MainViewController files.

12. Click on the project icon in the Project Navigator, select your Project, then select the Build Settings tab.

13. Enter Compiler for C/C++/Objective-C in the search field.

14. Select the Apple LLVM Compiler 3.1 value.

## Upgrading 1.4.x Projects to 1.5.0

1. Install Cordova 1.5.0.

2. Create a new project and run it once. You will need some of the assets from this new project.

3. Copy the `www/cordova-1.5.0.js` file from the new project into your `www` directory, and delete your `www/phonegap-1.4.x.js` file.

4. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new Cordova `cordova-1.5.0.js` file.

5. Find `PhoneGap.framework` in your Project Navigator, select it.

6. Type the Delete key and delete the `PhoneGap.framework` reference in the Project Navigator.

7. Type the Option-Command-A key combination, which should drop down a sheet to add files to your project (the Add Files... sheet). Make sure the Created groups for any added folders radio button is selected.

8. Type the Shift-Command-G key combination, which should drop down another sheet for you to go to a folder (the Go to the folder: sheet).

9. Enter `/Users/Shared/Cordova/Frameworks/Cordova.framework` in the Go to the folder: sheet and then press the Go button.

10. Press the Add button in the Add Files... sheet.

11. Select `Cordova.framework` in the Project Navigator.

12. Type the Option-Command-1 key combination to show the File Inspector.

13. Choose Absolute Path in the File Inspector for the drop-down menu for Location.

14. Type the Option-Command-A key combination, which should drop down a sheet to add files to your project (the Add Files... sheet). Make sure the Created groups for any added folders radio button is selected.

15. Type the Shift-Command-G key combination, which should drop down another sheet for you to go to a folder (the Go to the folder: sheet).

16. Enter `~/Documents/CordovaLib/Classes/deprecated` in the Go to the folder: sheet and then press the Go button.

17. Press the Add button in the Add Files... sheet.

18. In your `AppDelegate.h`, `AppDelegate.m`, and `MainViewController.h` files, replace the whole `#ifdef PHONEGAP_FRAMEWORK` block with:

        #import "CDVDeprecated.h"

19. Click on the project icon in the Project Navigator, select your Target, then select the Build Settings tab.

20. Search for Framework Search Paths.

21. Replace the existing value with `/Users/Shared/Cordova/Frameworks`.

22. Search for Preprocessor Macros.

23. For the first (combined) value, replace the value with CORDOVA_FRAMEWORK=YES.

24. Select the Build Phases tab.

25. Expand Run Script.

26. Replace any occurrences of PhoneGap with Cordova.

27. Find your `PhoneGap.plist` file in the Project Navigator, and click on the filename once to enter name edit mode.

28. Rename `PhoneGap.plist` to `Cordova.plist`.

29. Right-click on `Cordova.plist` and choose Open As → Source Code.

30. Press Option-Command-F, choose Replace from the drop-down on the top left of the Source window.

31. Enter `com.phonegap` for the Find string, and `org.apache.cordova` for the Replace string, then press the Replace All button.

32. Enter PG for the Find string, and CDV for the Replace string, then press the Replace All button.

33. Press Command-B to build. You still have deprecations that you can get rid of in the future (see `CDVDeprecated.h`. For example, replace classes in your code that use PG* to CDV*).

## Upgrading 1.4.0 Projects to 1.4.1

1. Install Cordova 1.4.1.

2. Make a backup of `MainViewController.m`.

3. Create a new project. You will need some of the assets from this new project.

4. Copy the `MainViewController.m` file from the new project into your 1.4.0-based project directory on disk, replacing the old file (backup your files first from step 2 above).

5. Add the `MainViewController.m` file into your Xcode project.

6. Integrate any project-specific code that you have in your backed-up `MainViewController.m` into the new file.

7. Updating the `phonegap-1.4.0.js` file is optional, nothing has changed in the JavaScript between 1.4.0 and 1.4.1.

## Upgrading 1.3.0 Projects to 1.4.0

1. Install Cordova 1.4.0.

2. Make a backup of `AppDelegate.m` and `AppDelegate.h` in your project.

3. Create a new project. You will need some of the assets from this new project.

4. Copy these files from the new project into your 1.3.0-based project directory on disk, replacing any old files (backup your files first from step 2 above):

       AppDelegate.h
       AppDelegate.m
       MainViewController.h
       MainViewController.m
       MainViewController.xib

5. Add all the `MainViewController` files into your Xcode project.

6. Copy the `www/phonegap-1.4.0.js` file from the new project into your `www` directory, and delete your `www/phonegap-1.3.0.js` file.

7. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `phonegap-1.4.0.js` file.

8. Add a new entry under `Plugins` in your `PhoneGap.plist` file. The key is `com.phonegap.battery` and the value is `PGBattery`.

9. Integrate any project-specific code that you have in your backed-up `AppDelegate.h` and `AppDelegate.m` into the new AppDelegate files.

## Upgrading 1.2.0 Projects to 1.3.0

1. Install Cordova 1.3.0.

2. Make a backup of `AppDelegate.m` and `AppDelegate.h` in your project.

3. Create a new project. You will need some of the assets from this new project.

4. Copy these files from the new project into your 1.2.0-based project directory on disk, replacing any old files (backup your files first from step 2 above):

       AppDelegate.h
       AppDelegate.m
       MainViewController.h
       MainViewController.m
       MainViewController.xib

5. Add all the `MainViewController` files into your Xcode project.

6. Copy the `www/phonegap-1.3.0.js` file from the new project into your `www` directory, and delete your `www/phonegap-1.2.0.js` file.

7. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `phonegap-1.3.0.js` file.

8. Add a new entry under `Plugins` in your `PhoneGap.plist` file. The key is `com.phonegap.battery` and the value is `PGBattery`.

9. Integrate any project-specific code that you have in your backed-up `AppDelegate.h` and `AppDelegate.m` into the new AppDelegate files.

## Upgrading 1.1.0 Projects to 1.2.0

1. Install Cordova 1.2.0.

2. Make a backup of `AppDelegate.m` and `AppDelegate.h` in your project.

3. Create a new project. You will need some of the assets from this new project.

4. Copy these files from the new project into your 1.1.0-based project directory on disk, replacing any old files (backup your files first from step 2 above):

       AppDelegate.h
       AppDelegate.m
       MainViewController.h
       MainViewController.m
       MainViewController.xib

5. Add all the `MainViewController` files into your Xcode project.

6. Copy the `www/phonegap-1.2.0.js` file from the new project into your `www` directory, and delete your `www/phonegap-1.1.0.js` file.

7. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `phonegap-1.2.0.js` file.

8. Add a new entry under `Plugins` in your `PhoneGap.plist` file. The key is `com.phonegap.battery` and the value is `PGBattery`.

9. Integrate any project-specific code that you have in your backed-up `AppDelegate.h` and `AppDelegate.m` into the new AppDelegate files.

## Upgrading 1.0.0 Projects to 1.1.0

1. Install Cordova 1.1.0.

2. Make a backup of `AppDelegate.m` and `AppDelegate.h` in your project.

3. Create a new project. You will need some of the assets from this new project.

4. Copy these files from the new project into your 1.0.0-based project directory on disk, replacing any old files (backup your files first from step 2 above):

       AppDelegate.h
       AppDelegate.m
       MainViewController.h
       MainViewController.m
       MainViewController.xib

5. Add all the `MainViewController` files into your Xcode project.

6. Copy the `www/phonegap-1.1.0.js` file from the new project into your `www` directory, and delete your `www/phonegap-1.0.0.js` file.

7. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `phonegap-1.1.0.js` file.

8. Add a new entry under `Plugins` in your `PhoneGap.plist` file. The key is `com.phonegap.battery` and the value is `PGBattery`.

9. Integrate any project-specific code that you have in your backed-up `AppDelegate.h` and `AppDelegate.m` into the new AppDelegate files.

## Upgrading 0.9.6 Projects to 1.0.0

1. Install Cordova 1.0.0.

2. Make a backup of `AppDelegate.m` and `AppDelegate.h` in your project.

3. Create a new project. You will need some of the assets from this new project.

4. Copy these files from the new project into your 0.9.6-based project directory on disk, replacing any old files (backup your files first from step 2 above):

       AppDelegate.h
       AppDelegate.m
       MainViewController.h
       MainViewController.m
       MainViewController.xib

5. Add all the `MainViewController` files into your Xcode project.

6. Copy the `www/phonegap-1.0.0.js` file from the new project into your `www` directory, and delete your `www/phonegap-0.9.6.js` file.

7. Update the Cordova script reference in your `www/index.html` file (and any other files that contain the script reference) to point to the new `phonegap-1.0.0.js` file.

8. Add a new entry under `Plugins` in your `PhoneGap.plist` file. The key is `com.phonegap.battery` and the value is `PGBattery`.

9. Integrate any project-specific code that you have in your backed-up `AppDelegate.h` and `AppDelegate.m` into the new AppDelegate files.